今天小编给大家分享一下如何利用python实现简单的情感分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
# 数据导入 import pandas as pd data = pd.read_csv('../data/京东评论数据.csv') data.head()
# 数据描述 data.describe()
# 数据预处理 # 取出sku_Id,content字段 data1 = data[['sku_id', 'content']] data1.head(10)
# 情感分析 from snownlp import SnowNLP data1['emotion'] = data1['content'].apply(lambda x: SnowNLP(x).sentiments) data1.head()
# 情感数据描述 data1.describe()
emotion平均值为0.74,中位数为0.96,25%分位数为0.56,可见不到25%的数据造成了整体均值的较大下移。
# 绘制情感分直方图 import matplotlib.pyplot as plt import numpy as np plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False bins = np.arange(0, 1.1, 0.1) plt.hist(data1['emotion'], bins, color = '#4F94CD', alpha=0.9) plt.xlim(0, 1) plt.xlabel('情感分') plt.ylabel('数量') plt.title('情感分直方图') plt.show()
由直方图可见,评论内容两级分化较为严重;
3637条评论中有约2200条评论情感分在[0.9,1]区间内;同时,有约500条评论情感分在[0,0.1]区间内。
# 绘制词云图(这儿没有做停用词处理) from wordcloud import WordCloud import jieba myfont = myfont = r'C:\Windows\Fonts\simhei.ttf' w = WordCloud(font_path=myfont) text = '' for i in data['content']: text += i data_cut = ' '.join(jieba.lcut(text)) w.generate(data_cut) image = w.to_file('词云图.png') image
# 关键词提取top10 # 这儿直接写import jieba运行会显示没有analyse属性 from jieba import analyse key_words = jieba.analyse.extract_tags(sentence=text, topK=10, withWeight=True, allowPOS=()) key_words
以上关键词显示,消费者比较在意手机的“屏幕”“拍照”“手感”等特性,“华为”“小米”是出现频次最高的两个手机品牌。
参数说明 :
sentence 需要提取的字符串,必须是str类型,不能是list
topK 提取前多少个关键字
withWeight 是否返回每个关键词的权重
allowPOS是允许的提取的词性,默认为allowPOS=‘ns’, ‘n’, ‘vn’, ‘v’,提取地名、名词、动名词、动词
# 计算积极评论与消极评论各自的数目 pos, neg = 0, 0 for i in data1['emotion']: if i >= 0.5: pos += 1 else: neg += 1 print('积极评论数目为:', pos, '\n消极评论数目为:', neg)
# 积极消极评论占比 import matplotlib.pyplot as plt plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus'] = False pie_labels = 'positive', 'negative' plt.pie([pos, neg], labels=pie_labels, autopct='%1.2f%%', shadow=True) plt.show()
# 获取消极评论的数据 data2 = data1[data1['emotion'] < 0.5] data2.head()
#消极评论词云图(这儿没有做停用词处理) text2 = '' for s in data2['content']: text2 += s data_cut2 = ' '.join(jieba.lcut(text2)) w.generate(data_cut2) image = w.to_file('消极评论词云.png') image
#消极评论关键词top10 key_words = jieba.analyse.extract_tags(sentence=text2, topK=10, withWeight=True, allowPOS=()) key_words
消极评论关键词显示,“屏幕”“快递”“充电”是造成用户体验不佳的几个重要因素;屏幕和充电问题有可能是手机不良品率过高或快递压迫;
因此平台应注重提高手机品控,降低不良品率;另外应设法提升发货,配送,派件的效率和质量。
以上就是“如何利用python实现简单的情感分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。