2012-12-19 5 views
0

내 응용 프로그램에서 유니 코드 문자열이 있는데 어떤 언어로 문자열이 들어 있는지 알려야합니다. 문자열의 문자 범위를 결정하여 가능한 언어 목록을 좁히려 고합니다.유니 코드 문자

범위 내가 http://unicode-table.com/en/

문제에서 http://jrgraphix.net/research/unicode_blocks.php

가능한 언어에서이 사람이 유니 코드의 더 넓은 매핑 언어의 범위를 알고 있지, 그 알고리즘은 모든 언어를 감지하는 것입니다?

감사 요이치

+3

필기체! == 언어. 많은 언어가 동일한 글쓰기 시스템을 공유합니다. Tika 프로젝트와 같은 통계 분석기를 사용하여 언어를 탐지하십시오. http://tika.apache.org – deceze

+1

Google 번역을 할 수 없어도 언어를 안정적으로 검색 할 수는 없습니다. 가장 쉬운 방법은 구글 번역 API를 사용하여 텍스트가 어떤 언어로 표시되는지 확인하는 것입니다. 직접 알고리즘을 사용하는 것일 수도 있습니다. = 아마도 D = – Esailija

답변

2

이 몇 가지 이유를 들어, 정말 수 없습니다 :

  • 많은 언어가 같은 문자 체계를 공유 할 수 있습니다. 예를 들어, 영어와 네덜란드어를보십시오. 둘 다 기본 라틴어 알파벳을 사용합니다. 코드 포인트의 범위 만 보아도 코드 포인트를 구분할 수 없습니다.

  • 일부 언어는 더 많은 문자를 사용하지만 특정 문자에 해당 문자가 포함되어 있다고 보장 할 수 없습니다. 예를 들어, 독일어는 기본 라틴 알파벳과 "ä", "ö", "ü"및 "ß"를 사용합니다. 이 글자 은 특히 희귀하지는 않지만 전체 문장을 쉽게 만들 수 있습니다. 따라서 짧은 텍스트에 포함되지 않을 수 있습니다. 따라서 코드 포인트 만 보아도 충분하지 않습니다.

  • 텍스트가 항상 "순수한"것은 아닙니다. 프랑스어 텍스트 (예 : "déjà vu")로 인해 영어 텍스트에 의 프랑스어 문자가 포함될 수 있습니다. 또는 텍스트가 외국어 (예 : "Götterdämmerung은 Richard Wagner의 오페라입니다."또는 "The Great 중국 벽 (万里长城)은 ..."에 대해 이야기하기 때문에 개의 외국 단어가 포함될 수 있음) . 코드 포인트 만 보면 이 오도 할 것입니다.

요약하면 코드 포인트 범위를 언어에 안정적으로 매핑 할 수 없습니다.

할 수있는 일 : 각 문자가 텍스트에 나타나는 빈도를 계산하고 알려진 언어에 대한 통계와 경험적으로 비교하십시오. 또는 단어 구조를 분석합니다 (예 : 마르코프 체인과. 또는 사전에서 단어를 검색 할 수 있습니다 (굴곡, 작곡법 등을 고려). 또는 이들의 조합.

그러나 이것은 힘들고 많은 노력입니다. deceze 및 Esailija에서 권장하는 솔루션과 같은 기존 솔루션을 사용해야합니다.

+0

유니 코드 문자 범위를 기반으로 정확한 언어를 감지 할 수 없다는 것을 알고 있습니다. 가능성 목록을 몇 가지 언어로 좁히고 싶습니다. – user1701097

0

나는 Google 번역과 같은 것을 사용할 것을 제안합니다. 그들은 당신을 위해 모든 작업을 수행 할 것입니다.

거기에 참여할 수있는 규칙 기반 시스템을 구축 할 수 있습니다. 언어에 대한 휴리스틱 규칙을 작성하고 이것이 충분한 지 확인하십시오. 특정 티베트어 문자는 티베트어를 나타내며 많은 언어로 된 독특한 문자가 있습니다. 그러나 다른 답변에서 지적한 바와 같이 명확한 지표가 없기 때문에 텍스트의 제한된 샘플이 정확하지 않을 수 있습니다.

그러나 언어마다 각 문자가 나타나는 빈도가 다를 수 있으므로 문자 빈도에 따라 추측하고 추측해야하는 각 언어의 기본 지문을 사용할 수 있습니다. 이것은 규칙 기반 시스템보다 조금 더 나아질 것입니다. 아마도 이것을 구축 할 수있는 좋은 도구는 모두 text classification algorithm 일 것이므로 모든 분석을 수행 할 것입니다. 실제 규칙을 직접 설명하지 않고 다른 언어로 알고리즘을 훈련 할 수 있습니다.

이보다 훨씬 세련된 버전이 아마도 Google이하는 일일 것입니다.