3

我想在我的数据框审查中创建一个新列,给出对象类型的列文本的语言。

我尝试转换为字符串,然后使用 langdetect 中的检测函数,但是当我运行代码时仍然存在类型错误。

我不明白这个问题大声笑

我的代码:

from langdetect import detect


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

实际结果 :

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


TypeError: expected string or bytes-like object
4

3 回答 3

3

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

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

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

于 2019-05-04T15:19:59.760 回答
2

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

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

review['langue'] = review['text'].apply(detect_my)
于 2021-07-29T09:57:35.893 回答
0

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

for index, row in df['text'].iteritems():
    lang = detect(row) #detecting each row
    df.loc[index, 'language'] = lang
于 2019-11-21T06:46:36.687 回答