Подтвердить что ты не робот

Как определить язык

Есть ли какие-нибудь хорошие двигатели с открытым исходным кодом для определения того, на каком языке находится текст, возможно, с метрикой вероятности? Один, который я могу запустить локально и не запрашивает Google или Bing? Я хотел бы определить язык для каждой страницы примерно на 15 миллионов страниц текста OCR.

Не все документы будут содержать языки, которые используют латинский алфавит.

4b9b3361

Ответ 1

В зависимости от того, что вы делаете, вам может понадобиться проверить набор инструментов обработки естественного языка python (NLTK), который имеет некоторую поддержку байесовских алгоритмов обучения.

В общем, частота букв и слов, вероятно, будет самой быстрой оценкой, но NLTK (или байесовский алгоритм обучения в целом), вероятно, будет полезен, если вам нужно сделать что-либо помимо идентификации языка. Байесовские методы, вероятно, будут полезны также, если вы обнаружите, что первые два метода имеют слишком высокий уровень ошибок.

Ответ 2

Для дальнейшего использования, я в конечном итоге использовал libtextcat, который находится под лицензией BSD, но, похоже, не поддерживается с 2003 года. Тем не менее, он отлично справляется и легко интегрируется в мою инструментальную цепочку

Ответ 3

Вы можете, конечно, создать свой собственный с некоторыми статистическими данными о буквенные частоты, частоты орфографии и т.д. ваших целевых языков.

Затем отпустите его как открытый источник. И voila, у вас есть механизм с открытым исходным кодом для обнаружения языка текста!

Ответ 4

Я не думаю, что вам нужно что-то очень сложное - например, чтобы определить, находится ли документ на английском языке с довольно высоким уровнем уверенности, просто проверьте, содержит ли он N наиболее распространенных английских слов - что-то вроде:

"the a an is to are in on in it"

Если он содержит все эти, я бы сказал, что это почти определенно английский.

Ответ 6

Отъезд Franc on Github. Он написан на JavaScript, поэтому вы можете использовать его в браузере и, возможно, в Node.

  • franc поддерживает больше языков, чем любая другая библиотека, или Google;
  • franc легко разветвляется для поддержки 335 языков; franc точно так же, как
  • быстро, как конкуренция.

Ответ 7

Попробуйте CLD2:

Установка

sudo -H pip install cld2-cffi

Run

import cld2

res = cld2.detect("This is a sample text.")
print(res)
res = cld2.detect("Dies ist ein Beispieltext.")
print(res)
res = cld2.detect("Je ne peut pas parler cette language.")
print(res)
res = cld2.detect(" هذه هي بعض النصوص العربية")
print(res)
res = cld2.detect("这是一些阿拉伯文字")  # Chinese?
print(res)
res = cld2.detect("これは、いくつかのアラビア語のテキストです")
print(res)
print("Supports {} languages.".format(len(cld2.LANGUAGES)))

дает

Detections(is_reliable=True, bytes_found=23, details=(Detection(language_name=u'ENGLISH', language_code=u'en', percent=95, score=1675.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0)))
Detections(is_reliable=True, bytes_found=27, details=(Detection(language_name=u'GERMAN', language_code=u'de', percent=96, score=1496.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0)))
Detections(is_reliable=True, bytes_found=38, details=(Detection(language_name=u'FRENCH', language_code=u'fr', percent=97, score=1134.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0)))
Detections(is_reliable=True, bytes_found=48, details=(Detection(language_name=u'ARABIC', language_code=u'ar', percent=97, score=1263.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0)))
Detections(is_reliable=False, bytes_found=29, details=(Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0)))
Detections(is_reliable=True, bytes_found=63, details=(Detection(language_name=u'Japanese', language_code=u'ja', percent=98, score=3848.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0), Detection(language_name=u'Unknown', language_code=u'un', percent=0, score=0.0)))
Supports 282 languages.

Другие