2013-02-01 4 views
0

사전 앱을 쓰고 있습니다. 사용자가 유니 코드 문자를 입력하면 해당 문자가 어떤 언어인지 확인하고 싶습니다.거친 유니 코드 -> CLDR이없는 언어 코드?

字 - returns ['zh', 'ja', 'ko'] 
العربية - returns ['ar'] 
a - returns ['en', 'fr', 'de'] //and many more 
й - returns ['ru', 'be', 'bg', 'uk'] 

내가 검색하고 CLDR 함께 할 수 있다는 것을 발견 https://stackoverflow.com/a/6445024/41948

또는 구글의 API가 큰 문자표 DB를 찾고

하지만 내 경우

  • 에서 Python - can I detect unicode string language code? 비용 법한 많은 저장 공간과 메모리
  • API 호출 속도가 너무 느리며 네트워크 연결이 필요합니다. 이온
  • 매우 정확할 필요는 없습니다. 약 80 %의 정확한 비율을 수용 할 수 있습니다.
  • 간편한 & 빠른 요구 사항은
  • 입니다. UCS2 BMP 문자만으로도 충분합니다.

팁이 있습니까?

이 코드는 Python과 Javascript에서 사용해야합니다. 감사!

+0

가능한 접근 방식을 평가할 때 왜 그런지 알 수 있습니다. 어떤 큰 언어 목록에서 "a"라는 글자가 사용되었다는 정보로 무엇을 할 것입니까? –

+0

아마도 "a"는 나쁜 예일 수 있습니다. 앞서 언급했듯이 사용자가 찾고자하는 언어를 기반으로 추가 정보 (또는 광고)를 제공 할 수있는 사전 앱을 작성 중입니다. – est

+0

나는 "a"가 좋은 예라고 생각한다 : 수백 가지의 가능한 언어가있을 것이므로 * 언어를 추측하기는 다소 어려울 것이다. –

답변

2

글리프를 언어 계열로 좁히는 것으로 충분합니까? http://en.wikipedia.org/wiki/Plane_(Unicode)#Basic_Multilingual_Plane에 표시된 하나 또는 유니 코드 차트 페이지의 스크립트 섹션 같은 BMP의 매핑을 기반으로 - (> 코드 범위 언어) - 그렇다면, 당신은 범위의 집합을 만들 수 http://www.unicode.org/charts/

안정적으로 상형 문자에 대한 부모의 언어를 결정 공유 기호의 수 때문에 분명히 더 복잡합니다. 정확도가 80 % 만 필요한 경우 특정 언어가 범위를 단순화하는 경우 의도적으로 특정 문자를 포함/제외하도록 범위를 조정할 수 있습니다.

편집 : CLDR에서 참조한 질문과 코드 -> 언어 매핑에 대한 첫 번째 대답을 다시 읽었습니다. 나는 그것이 분명히 의문의 여지가 있다고 생각하지만 역으로 조금 비싸다면 가능하다.영리한 데이터 구조로 언어 패밀리를 식별 한 다음 실제 언어 범위까지 드릴 다운하여 관련없는 언어 -> 범위 쌍을 통과하는 순회를 줄일 수 있습니다.

1

언어 수가 비교적 적거나 관심있는 전화 번호가 상당히 적 으면 각 언어에 블룸 필터를 사용할 수 있습니다. 블룸 필터를 사용하면 모든 멤버 (이 경우 코드 포인트)를 메모리에 저장하지 않고도 매우 저렴한 멤버십 테스트 (위양성을 가질 수 있음)를 수행 할 수 있습니다. 그런 다음 각 언어의 사전 구성된 필터에 대한 코드 포인트를 확인하여 결과 세트를 작성합니다. 조정할 수 있습니다. 오 탐지 (false positives)가 너무 많으면 메모리를 사용하여 더 큰 크기의 필터를 사용할 수 있습니다.

파이썬과 자바 스크립트를위한 블룸 필터 구현이 있습니다. (이봐 -이 일을했던 사람을 만나는 http://www.jasondavies.com/bloomfilter/)

블룸 필터 : http://en.m.wikipedia.org/wiki/Bloom_filter

좀 더 읽기를하는, 당신은 단지 BMP (65,536 코드 포인트)를 필요로하는 경우, 당신은 그냥 가게를 수 각 언어에 대해 설정된 직선 비트. 또는 언어 X 코드 포인트 용 2D bitarray.

몇 개의 언어를 고려하고 싶습니까?

+0

저는 블룸 필터를 사용하고 다양한 언어 위키에서 일반 텍스트로 위키피디아 기사를 미리 채우는 아이디어를 정말 좋아하지만 국제 문자는 매우 큰 세트입니다. 나는 k와 m이 불쾌하게 커야 만한다는 느낌을 갖습니다. –

+1

글쎄, 그것은 신중한 est가 false positives에 얼마나 의존하는지에 따라 달라질 것입니다. - 나는 그것이 달콤한 자리를 찾는 데 약간의 실험이 필요할 것이라고 생각합니다. 나는 그것이 간단하고 빠르다는 것을 좋아한다. – babbageclunk