擅长:python、mysql、java
<p>首先,如果您只需要<code>polyglot</code>进行语言检测,那么最好直接使用<code>pycld2</code>,这是幕后使用的。它有<strong>很多</strong>更干净的API。在</p>
<p>也就是说,您声明的错误来自于<code>Text</code>列中的一个值,它是一个实数。所以你必须把这些值转换成字符串。在</p>
<p>下一个问题是最小文本长度。^如果文本太短,{<cd1>}将引发异常。您必须通过传递<code>quiet=True</code>使异常静音。在</p>
<p>现在,应用<code>Detector</code>将返回一个对象。所以你必须解析它来提取你想要的信息。要提取语言名称,您必须导入<code>icu</code>模块(它是<code>polyglot</code>的依赖项,因此您已经安装了它):</p>
<pre><code>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)
</code></pre>
<p>之后,您可以删除<code>poly_obj</code>列。在</p>