9

langdetect用来确定一组我知道是英语还是法语的字符串的语言。

有时,langdetect告诉我语言是罗马尼亚语,因为我知道一个字符串是法语。

我如何才能langdetect在仅英语或法语而不是所有其他语言之间做出选择?

谢谢!

4

2 回答 2

9

选项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

不过,这不是一个非常动态的解决方案。

于 2018-08-24T14:43:07.127 回答
4

我这样做的方法是使用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
于 2016-05-15T08:28:45.307 回答