首先,如果你只需要
polyglot
对于语言检测,最好使用
pycld2
直接说来,这就是幕后所用的。它有
许多的
更清洁的API。
这么说,您所陈述的错误来自
Text
列,它是实数。所以你必须把这样的值转换成字符串。
您将遇到的下一个问题是最小文本长度。
多种语言
如果文本太短,将引发异常。你必须通过让例外保持沉默
quiet=True
.
现在,应用
Detector
将返回一个对象。因此,您必须对它进行解析以提取所需的信息。要提取语言名称,必须导入
icu
模块(它依赖于
多种语言
,因此您已经安装了它):
import icu
df.Text = df.Text.astype(str)
df['poly_obj'] = df.Text.apply(lambda x: Detector(x, quiet=True))
df['Text-lang'] = df['poly_obj'].apply(lambda x: icu.Locale.getDisplayName(x.language.locale))
df['Text-LangConfidence'] = df['poly_obj'].apply( lambda x: x.language.confidence)
之后你可以放下
poly_obj
列。