如何对xlsx工作表单列Review Text做NLP情感分析并解决TextBlob报错
问题根源
TextBlob()仅支持接收单个字符串作为入参,你传入的data['Review Text']是pandas Series类型的整列数据,不符合入参要求,因此触发类型错误。- pandas中默认用
object类型存储字符串序列,该dtype显示不属于异常,你之前对整列执行str(data['Review Text'])的操作是错误的,会把整列所有行的内容拼接为单个长字符串,完全破坏了原始的逐行数据结构。
正确操作步骤
1. 预处理空值
首先清除评论列为空的脏数据,避免后续处理报错:
# 删除评论为空的行,也可根据业务需求用fillna()填充空值 data = data.dropna(subset=['Review Text']).copy()
2. 逐行生成TextBlob对象
通过apply()方法对每一行的评论内容单独调用TextBlob:
from textblob import TextBlob data['text_blob'] = data['Review Text'].apply(lambda x: TextBlob(x))
3. 提取情感分析结果
从生成的TextBlob对象中提取情感指标:
# 情感极性:取值范围[-1, 1],值为负表示负面情感,值为正表示正面情感,0为中性 data['polarity'] = data['text_blob'].apply(lambda x: x.sentiment.polarity) # 主观性:取值范围[0, 1],值越高表示内容越偏向主观观点而非客观描述 data['subjectivity'] = data['text_blob'].apply(lambda x: x.sentiment.subjectivity)
优化建议
如果需要更高的情感分析准确率,可以使用针对电商评论场景微调的预训练语言模型,效果优于TextBlob默认的通用情感分析能力。
内容的提问来源于stack exchange,提问作者Jak_Rabbit
相关产品推荐
相关产品推荐

