我langdetect
用来确定一组我知道是英语还是法语的字符串的语言。
有时,langdetect
告诉我语言是罗马尼亚语,因为我知道一个字符串是法语。
我如何才能langdetect
在仅英语或法语而不是所有其他语言之间做出选择?
谢谢!
我langdetect
用来确定一组我知道是英语还是法语的字符串的语言。
有时,langdetect
告诉我语言是罗马尼亚语,因为我知道一个字符串是法语。
我如何才能langdetect
在仅英语或法语而不是所有其他语言之间做出选择?
谢谢!
选项1
一种选择是使用该软件包langid
。然后你可以简单地通过方法调用来限制语言:
import langid
langid.set_languages(['fr', 'en']) # ISO 639-1 codes
lang, score = langid.classify('This is a french or english text')
print(lang) # en
选项 2
如果你真的想使用langdetect
包,你可以复制包文件夹(如果你不确定它在哪里,使用python -m site --user-site)
并从文件夹中删除你不需要的配置文件langdetect\profiles
。
不过,这不是一个非常动态的解决方案。
我这样做的方法是使用detect_langs
,它返回一个Language
具有概率的对象列表,然后遍历这个列表,如果其中一个选项是英语或法语,或者None
不是这种情况,则返回语言。此功能适用于此目的:
from langdetect import detect_langs
def englishOrFrench(string):
res = detect_langs(string)
for item in res:
if item.lang == "fr" or item.lang == "en":
return item.lang
return None
print(englishOrFrench("Bonjour")) # fr
print(englishOrFrench("The quick brown fox")) # en
print(englishOrFrench("Hallo, mein Freund")) # None