赞
踩
「情感分析」是对带有感情色彩的主观性文本进行分析、处理、归纳和推理的过程。按照处理文本的类别不同,可分为基于新闻评论的情感分析和基于产品评论的情感分析。其中,前者多用于舆情监控和信息预测,后者可帮助用户了解某一产品在大众心目中的口碑。
目前常见的情感极性分析方法主要是两种:基于情感词典的方法和基于机器学习的方法。
中文文本情感分析的机器学习项目,今天的流程如下:
这里的数据为大众点评上的评论数据,主要就是评论文字和打分。我们首先读入数据,看下数据的情况:
import numpy as np
import pandas as pd
data = pd.read_csv('comment_dazhongdianping.csv',encoding="utf-8-sig")
data.head()
print(data)
对star字段看唯一值,打分有1,2,4,5。
中文文本情感分析属于我们的分类问题(也就是消极和积极),这里是分数,那我们设计代码,让分数小于3的为消极(0),大于3的就是积极(1)。
定义一个函数,然后用apply方法,这样就得到了一个新列(数据分析里的知识点)
#分数小于3的为消极(0),大于3的就是积极(1)
def make_label(star):
if star > 3:
return 1
else:
return 0
#结果写入一个新列sentiment
data['sentiment'] = data.star.apply(make_label)
print(data)
我们首先不用机器学习方法,我们用一个第三库(snownlp),这个库可以直接对文本进行情感分析(记得安装),使用方法也是很简单。返回的是积极性的概率。
from snownlp import SnowNLP
text1 = '这个东西不错'
text2 = '这个东西很垃圾'
s1 = SnowNLP(text1)
s2 = SnowNLP(text2)
#显示分词
print(",".join(s1.words))
print(",".join(s2.words))
#显示情感值
print(s1.sentiments,s2.sentiments)
# result 0.8623218777387431 0.21406279508712744
这样,我们就定义大于0.6,就是积极的,同样的方法,就能得到结果。
# 用snownlp进行情感分析,定义大于0.6,就是积极的
def snow_result(comemnt):
s = SnowNLP(comemnt)
if s.sentiments >= 0.6:
return 1
else:
return 0
#结果写入一个新列snlp_result
data['snlp_result'] = data.comment.apply(snow_result)
print(data)
上面前五行的结果看上去很差(5个就2个是对的),那到底有多少是对的了?我们可以将结果与sentiment字段对比,相等的我就计数,这样在除以总样本,就能看大概的精度了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。