Python多语言语种识别:检测文本是否中英文
先给一些例子,可以直观看出要做什么事,
Input text: "ру́сский язы́к"
Output text: "Russian" Input text: "中文"
Output text: "Chinese" Input text: "にほんご"
Output text: "Japanese" Input text: "العَرَبِيَّة"
Output text: "Arabic"
有比较多的 Python 库可以做这件事情,这个贴子列了七八个,当前还比较流行的,是langdetect
。不过它识别率和性能都比较差,而基于神经网络模型的fasttext
的效果和性能都更好。但langdetect
有很容易理解的编程接口,所以有人基于fasttext
做了fasttext-langdetect
,易于编程,性能和准确性都很好。
from ftlangdetect import detectresult = detect(text="Bugün hava çok güzel", low_memory=False)
print(result)
> {'lang': 'tr', 'score': 1.00}result = detect(text="Bugün hava çok güzel", low_memory=True)
print(result)
> {'lang': 'tr', 'score': 0.9982126951217651}
可以去它的pypi页面了解一下。
除此之外,还有lingua
,在性能和准确性上都比fasttext
更好一些,
pip install lingua-language-detector
但使用起来感觉有点麻烦,编程接口上不是特别直观,我就没有尝试。
>>> from lingua import Language, LanguageDetectorBuilder
>>> languages = [Language.ENGLISH, Language.FRENCH, Language.GERMAN, Language.SPANISH]
>>> detector = LanguageDetectorBuilder.from_languages(*languages).build()
>>> language = detector.detect_language_of("languages are awesome")
>>> language
Language.ENGLISH
>>> language.iso_code_639_1
IsoCode639_1.EN
>>> language.iso_code_639_1.name
'EN'
>>> language.iso_code_639_3
IsoCode639_3.ENG
>>> language.iso_code_639_3.name
'ENG'
在此记录之。