qq_44700589
qq_44700589
采纳率0%
2021-03-05 11:49

python情感分析 sonwnlp

import pandas as pd
datapath = './jdpl.csv'
data = pd.read_csv(datapath,encoding='utf-8')

print('原始数据')
print(data)
print(len(data))
print(data.columns)
print('----------------------------------------------------------')


print('评论数据信息')
data= data[[u'评论']]
print(data)


print(data.columns)
print('---------------------------------------------------')

#清除缺失数据
data = data.dropna() #清除缺失数据 nan为缺失数据
print('清除缺失数据后')
print(len(data))
print(data)
print(data.columns)
print('----------------------------------------------------------')
#情感分析
from snownlp import SnowNLP
coms = []
coms = data.apply(lambda x:SnowNLP(x).sentiments)#词性及评分
print(type(coms))
print(coms)
print('情感分析后')
print('-----------------------------------')
#分类
data1 = data[coms>0.66]
data2 = data[(0.33<=coms) & (coms<=0.66)]
data3 = data[coms<0.33]

print(type(data1))
print('分类后')

E:\Python\python练习\douban\venv\Scripts\python.exe E:/Python/python练习/douban/jingdong/fruit/情感分析.py
原始数据
    Unnamed: 0                                                 评论
0          0.0  送货速度:送货速度和以前一样的快速,京东的速度,很放心。\n食用感受:食用起来甜甜的,农夫山...
1          NaN                                                 评论
2          0.0  去年吃过一次后就爱上了这款苹果,今年看到又有货后果断下单购买了两箱。物流是没的说:次日达。\...
3          NaN                                                 评论
4          0.0  苹果真的很好吃,农夫山泉的还有标志一下子买了三箱,买三箱还打了折,真的很划算。我们家都爱吃苹...
..         ...                                                ...
94         0.0                 第一次买17.5&deg;的苹果,个大脆甜多汁!没有坏果!非常满意!
95         NaN                                                 评论
96         0.0  京东,我最信赖的电商平台! 京东生鲜,连接果园和千家万户,足不出户就能享受新鲜的蔬果! 农夫...
97         NaN                                                 评论
98         0.0  宝贝收到后很满意,外形颜色也很喜欢,挑选好多家,果然没看错,希望把好物分享给大家??一整箱马...

[99 rows x 2 columns]
99
Index(['Unnamed: 0', '评论'], dtype='object')
----------------------------------------------------------
评论数据信息
                                                   评论
0   送货速度:送货速度和以前一样的快速,京东的速度,很放心。\n食用感受:食用起来甜甜的,农夫山...
1                                                  评论
2   去年吃过一次后就爱上了这款苹果,今年看到又有货后果断下单购买了两箱。物流是没的说:次日达。\...
3                                                  评论
4   苹果真的很好吃,农夫山泉的还有标志一下子买了三箱,买三箱还打了折,真的很划算。我们家都爱吃苹...
..                                                ...
94                 第一次买17.5&deg;的苹果,个大脆甜多汁!没有坏果!非常满意!
95                                                 评论
96  京东,我最信赖的电商平台! 京东生鲜,连接果园和千家万户,足不出户就能享受新鲜的蔬果! 农夫...
97                                                 评论
98  宝贝收到后很满意,外形颜色也很喜欢,挑选好多家,果然没看错,希望把好物分享给大家??一整箱马...

[99 rows x 1 columns]
Index(['评论'], dtype='object')
---------------------------------------------------
清除缺失数据后
99
                                                   评论
0   送货速度:送货速度和以前一样的快速,京东的速度,很放心。\n食用感受:食用起来甜甜的,农夫山...
1                                                  评论
2   去年吃过一次后就爱上了这款苹果,今年看到又有货后果断下单购买了两箱。物流是没的说:次日达。\...
3                                                  评论
4   苹果真的很好吃,农夫山泉的还有标志一下子买了三箱,买三箱还打了折,真的很划算。我们家都爱吃苹...
..                                                ...
94                 第一次买17.5&deg;的苹果,个大脆甜多汁!没有坏果!非常满意!
95                                                 评论
96  京东,我最信赖的电商平台! 京东生鲜,连接果园和千家万户,足不出户就能享受新鲜的蔬果! 农夫...
97                                                 评论
98  宝贝收到后很满意,外形颜色也很喜欢,挑选好多家,果然没看错,希望把好物分享给大家??一整箱马...

[99 rows x 1 columns]
Index(['评论'], dtype='object')
----------------------------------------------------------
Traceback (most recent call last):
  File "E:\Python\python练习\douban\jingdong\fruit\情感分析.py", line 55, in <module>
    coms = data.apply(lambda x:SnowNLP(x).sentiments)#词性及评分
  File "E:\Python\python练习\douban\venv\lib\site-packages\pandas\core\frame.py", line 7765, in apply
    return op.get_result()
  File "E:\Python\python练习\douban\venv\lib\site-packages\pandas\core\apply.py", line 185, in get_result
    return self.apply_standard()
  File "E:\Python\python练习\douban\venv\lib\site-packages\pandas\core\apply.py", line 276, in apply_standard
    results, res_index = self.apply_series_generator()
  File "E:\Python\python练习\douban\venv\lib\site-packages\pandas\core\apply.py", line 290, in apply_series_generator
    results[i] = self.f(v)
  File "E:\Python\python练习\douban\jingdong\fruit\情感分析.py", line 55, in <lambda>
    coms = data.apply(lambda x:SnowNLP(x).sentiments)#词性及评分
  File "E:\Python\python练习\douban\venv\lib\site-packages\snownlp\__init__.py", line 37, in sentiments
    return sentiment.classify(self.doc)
  File "E:\Python\python练习\douban\venv\lib\site-packages\snownlp\sentiment\__init__.py", line 67, in classify
    return classifier.classify(sent)
  File "E:\Python\python练习\douban\venv\lib\site-packages\snownlp\sentiment\__init__.py", line 40, in classify
    ret, prob = self.classifier.classify(self.handle(sent))
  File "E:\Python\python练习\douban\venv\lib\site-packages\snownlp\sentiment\__init__.py", line 27, in handle
    words = seg.seg(doc)
  File "E:\Python\python练习\douban\venv\lib\site-packages\snownlp\seg\__init__.py", line 18, in seg
    for s in re_zh.split(sent):
TypeError: expected string or bytes-like object

Process finished with exit code 1

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • funny123 coagenth 1月前

    1.数据还需预处理

    2.coms是通过'评论’列apply的,你的代码中用整个data,其中有的列是非字符串类型的数据,无法满足SnowNLP参数要求,导致错误发生。

    将代码相关部分修改为:

    #df = pd.DataFrame(data=d.split('\n'), columns=['评论'])

    ind = [i  for i,seg in enumerate(df['评论']) if seg == '评论']

    df=df.drop(index=ind)

    data=df

    coms=data['coms'] = data['评论'].apply(lambda x: SnowNLP(x).sentiments)

    点赞 评论 复制链接分享