我想在数据框审查中创建一个新列,并提供列类型为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
答案 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