如何检测数据框对象的语言?

时间:2019-05-04 15:09:59

标签: python typeerror language-detection

我想在数据框审查中创建一个新列,并提供列类型为object的文本。

我尝试转换为字符串,然后使用langdetect的detect函数,但是运行代码时仍然出现类型错误。

我不明白问题

我的代码:

from langdetect import detect


review['langue'] = detect((review['text']).astype(str))

实际结果:

--------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)


TypeError: expected string or bytes-like object

3 个答案:

答案 0 :(得分:1)

添加到 kvorobieb 提供的答案中,您可以创建一个函数,以便即使检测器在给定文本中找不到任何字母也能正常工作:

from langdetect import detect
def detect_my(text):
   try:
       return detect(text)
   except:
       return 'unknown'

review['langue'] = review['text'].apply(detect_my)

答案 1 :(得分:0)

如果我正确理解了您的问题

from langdetect import detect
review['langue'] = review['text'].apply(detect)

detect函数期望str作为参数,而不是pd.Series。相反,您应该将detect函数应用于review['text'] pd.Series的每个元素。

答案 2 :(得分:0)

您可以使用以下代码检测每一行的语言

for index, row in df['text'].iteritems():
    lang = detect(row) #detecting each row
    df.loc[index, 'language'] = lang