如何检测数据框对象的语言?
How to detect language of a dataframe object?
我想在我的数据框评论中创建一个新列,提供对象类型的列文本的语言。
我尝试转换为字符串,然后使用 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
如果我正确理解了你的问题,你就需要
from langdetect import detect
review['langue'] = review['text'].apply(detect)
detect
函数期望 str
作为参数,而不是 pd.Series
。相反,您应该将 detect
函数应用于 review['text']
pd.Series
.
的每个元素
您可以使用以下代码检测每一行的语言
for index, row in df['text'].iteritems():
lang = detect(row) #detecting each row
df.loc[index, 'language'] = lang
添加到 kvorobieb 提供的答案中,您可以创建一个函数,即使在检测未在给定文本中找到任何字母表时它也能正常工作:
from langdetect import detect
def detect_my(text):
try:
return detect(text)
except:
return 'unknown'
review['langue'] = review['text'].apply(detect_my)
我想在我的数据框评论中创建一个新列,提供对象类型的列文本的语言。
我尝试转换为字符串,然后使用 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
如果我正确理解了你的问题,你就需要
from langdetect import detect
review['langue'] = review['text'].apply(detect)
detect
函数期望 str
作为参数,而不是 pd.Series
。相反,您应该将 detect
函数应用于 review['text']
pd.Series
.
您可以使用以下代码检测每一行的语言
for index, row in df['text'].iteritems():
lang = detect(row) #detecting each row
df.loc[index, 'language'] = lang
添加到 kvorobieb 提供的答案中,您可以创建一个函数,即使在检测未在给定文本中找到任何字母表时它也能正常工作:
from langdetect import detect
def detect_my(text):
try:
return detect(text)
except:
return 'unknown'
review['langue'] = review['text'].apply(detect_my)