【发布时间】:2018-08-24 22:43:07
【问题描述】:
我正在使用langdetect 来确定一组我知道是英语还是法语的字符串的语言。
有时,langdetect 告诉我该语言是罗马尼亚语,因为我知道一个字符串是法语。
如何让langdetect 仅在英语或法语之间进行选择,而不是在所有其他语言之间进行选择?
谢谢!
【问题讨论】:
标签: python nlp language-detection
我正在使用langdetect 来确定一组我知道是英语还是法语的字符串的语言。
有时,langdetect 告诉我该语言是罗马尼亚语,因为我知道一个字符串是法语。
如何让langdetect 仅在英语或法语之间进行选择,而不是在所有其他语言之间进行选择?
谢谢!
【问题讨论】:
标签: python nlp language-detection
选项 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)并从文件夹@987654325中删除你不需要的配置文件@。
虽然这不是一个非常动态的解决方案。
【讨论】:
我这样做的方法是使用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
【讨论】: