Как определить язык
Есть ли какие-нибудь хорошие двигатели с открытым исходным кодом для определения того, на каком языке находится текст, возможно, с метрикой вероятности? Один, который я могу запустить локально и не запрашивает Google или Bing? Я хотел бы определить язык для каждой страницы примерно на 15 миллионов страниц текста OCR.
Не все документы будут содержать языки, которые используют латинский алфавит.
Ответы
Ответ 1
В зависимости от того, что вы делаете, вам может понадобиться проверить набор инструментов обработки естественного языка python (NLTK), который имеет некоторую поддержку байесовских алгоритмов обучения.
В общем, частота букв и слов, вероятно, будет самой быстрой оценкой, но NLTK (или байесовский алгоритм обучения в целом), вероятно, будет полезен, если вам нужно сделать что-либо помимо идентификации языка. Байесовские методы, вероятно, будут полезны также, если вы обнаружите, что первые два метода имеют слишком высокий уровень ошибок.
Ответ 2
Для дальнейшего использования, я в конечном итоге использовал libtextcat, который находится под лицензией BSD, но, похоже, не поддерживается с 2003 года. Тем не менее, он отлично справляется и легко интегрируется в мою инструментальную цепочку
Ответ 3
Вы можете, конечно, создать свой собственный с некоторыми статистическими данными о буквенные частоты, частоты орфографии и т.д. ваших целевых языков.
Затем отпустите его как открытый источник. И voila, у вас есть механизм с открытым исходным кодом для обнаружения языка текста!
Ответ 4
Я не думаю, что вам нужно что-то очень сложное - например, чтобы определить, находится ли документ на английском языке с довольно высоким уровнем уверенности, просто проверьте, содержит ли он N наиболее распространенных английских слов - что-то вроде:
"the a an is to are in on in it"
Если он содержит все эти, я бы сказал, что это почти определенно английский.
Ответ 5
Вы также можете попробовать Ruby WhatLanguage gem, это приятно и просто, и я использовал для анализа данных Twitter. Посмотрите: http://www.youtube.com/watch?v=lNqZ2cqOReo&list=UUJ_3fstMOH-g4yBxtvgAWkw&index=0&feature=plcp для быстрой демонстрации
Ответ 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.
Другие