赞
踩
摘要:情感文本电商情感标注分析研究是当前电商数据情感挖掘学术研究的重要热点,具有极高的国际应用价值。对当前电商手机在线商品评论词典进行情感文本电商情感标注分析与词典数据情感挖掘研究具有很高的国际学术研究价值和重大社会意义经济效益。针对当前电商手机在线商品评论的基本特点,采用通过urllib.request等从库存中爬取京东商品编号分别为10037616578008的多个手机电商评论词典数据,采用jiaba等细分词,进行电商情感文本标注以及文本关键词分析云图表的生成。通过python基于文本情感标注词典数据进行文本情感标注倾向性数据分析,对评论情感词进行遍历,计算一个评论文章语句的文本情感分数值,并通过使用snownlp类库对评论文本语句情感分数值中的得分数据进行长度可视化分析展示,以长度折射曲线图直观形式展示评论语句文本情感值得分数值的分布变化情况,很好的也验证了这个实验室的结论。这些电商情感互动数据的分析获取及应用分析,有利于帮助电商企业改进产品营销管理策略和不断提升销售服务质量,促进对应产品提高销量,也就更有利于实现对应采购商品的品牌生产厂家以及产品质量的不断提升,也就更有利于电商消费者充分了解对应商品的质量好坏,是否商品值得放心购买。
关键词:文本情感分析;词云图;SnowNLP 类库
目录
随着我国电子商务的不断普及与快速发展,海量产品评论分析数据呈现爆炸式快速增长,对在线电商产品评论分析大数据产品做海量情感信息分析分类研究,不仅可以有助于引导消费者及时准确掌握在线产品品牌口碑以及时决定自己购买产品意向,对于帮助商家根据在线产品口碑营销用户反馈分析结果及时自动调整在线产品销售服务器的质量也同样至关重要。如何从针对具有评论数据量大、非数据结构化、含有特定意义网络营销用语等不同特点的针对电商用户在线产品评论数据进行海量情感剖析分类、挖掘有意义的情感信息,已经逐渐成为电商大数据、人工智能、机器人工学习等技术交叉应用领域学术研究的一个热点。
文本主观情感活动分析也可以叫文本情感活动倾向性推理分析,是对一个带有一定情感活动倾向的文本主观性人对文本内容进行情感分析、处理、归纳、推理的技术过程[1]。情感分析的方法一般有两种,一种是通过机器学习的方法,把情感分析当成分类问题来解决,要求有分好类的训练数据集,一般是有监督学习;另一种是基于情感词典的方法,计算句子的情感得分,推测出情感状态,多用于无监督学习的问题。基于情感词典的标注方法一般需要大量文本标注,基于词典机器视觉学习的标注方法在如何选择那些带有不同特点的多语义文本信息的情感分类文本问题上实际表现将会更好,但由于机器视觉学习在情感特征文本研究分析方面情感泛化分析能力相对较差,数据分析训练能力不足也有可能直接导致情感分类器理的失衡[2]。从目前已有多项研究成果看,通过三星电商产品评论的情感文本相关情感泛化分析已经取得了一定实际成效。例例如ashu等[3]通过相关情感文本分析可以挖掘出中国用户对三星产品的文本情感需求倾向;dasgupta等[4]在2016年通过对中国三星在线手机用户电商评论的相关情感文本分析,得到中国消费者对三星手机产品信息情感特征的客观反馈;李琴等[5]在2018年基于文本情感分析词典对中国在线旅游景区电商评论内容进行相关情感文本分析后可得到文本情感分析类别中的倾向性与景区门票价格波动之间是否客观存在的直接联系。
大部分人对于 Python 语言的定义就是,它是一种效率极高的脚本语言,这其实是和使用者的个人看法有关,尽管它本身就具备着周期短、便于使用等诸多优点,还能从容应对所有的脚本语言工作,但它可不仅仅是一款功能强大的 shell 语言,甚至可以说是超出了控制语言的范畴,因为它在快速且灵活的开发模式中可以有出色的表现,所以我们常说Python 语言是多面性的。相比之下,Python 语言的可读性、可维护性等要比传统脚本语言强大得多,这就是为什么许多人更愿意使用 Python 语言的根本原因。
(1)词云图是一种可以用来有效展现高频产品关键词的超高可视性优化视觉表达,通过各种文字、色彩、图形的巧妙搭配,产生出具有视觉冲击力地高频视觉效果,而且不仅能够有效传达有价值的产品信息。
(2)词云就是通过形成"关键词云层"或"关键词渲染",对当前网络语言文本中经常出现使用频率较高的"关键词"的进行视觉上的突出。
(3)词云图过滤掉大量的网页文本含义信息,使现在浏览英文网页者只要一眼就能扫过网页文本就已经可以清晰领略网页文本的重要主旨。
(4)本文主要通过对已分析获取的京东中的商品词云评论数据内容分析进行数据预处理、文本解析分词、词频质量统计、词云效果展示,熟悉分析制作商品词云的基本操作方法。
wordcloudd这是优秀的关键词云信息展示第三方软件库,可以在多个命令行通过命令pip进行安装
wordcloud文本库把一个常用词云中的对象可以当作一个常用文本词wordcloud文本库的词云对象,wordcloud.wordcloud()词云代表一个不同常用文本中所云对应的多个常用词语和云,可以根据同一常用文本中多个常用词语同时对应出现的云数量和对应频率等常用文本词云参数手动设定绘制一个常用词语和云,绘制一个常用词云的各种整体状和形状,尺寸和云在词云上的颜色都可以是你自己可以自行手动设定。wordcloud文本库常用词云参数下:
图1 wordcloud库参数
要对各个电商商务平台上的在线用户评论流量数据整合进行用户情感数据分析与流量数据挖掘,首先需要通过爬取平台相应的在线评论流量数据。该课程设计只爬取一个商品的评论,爬取京东商品的评论,解析页面信息时,是获取不到的,必须审查元素,点击network后按Ctrl+R,即可看到商品评论网页链接如下三个图所示。把Requrst URL中的评论网址和user-agant信息分别提取出来。
图2
图3
图4
相关代码如下:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'Referer': 'https://item.jd.com/10037616578008.html'
}
end_page = int(input('请输入爬取的评论页码:'))
#page=1
# 创建列表
#b=[]
for i in range(0,end_page+1):#end_page+1
url='https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10037616578008&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1 '
url = url.format(i)
数据爬取后通过评论.py将爬取到的评论信息数据商品内存、商品颜色、评论时间、id、评论内容四个字段存储到excel中,爬取结果的部分数据如下图5所示。
图5
下图所示为文本文件中的商品信息评论内容,顾客关心的是内容中有关于商品的哪些更重要,一个简单的实现手段就是看各个词出现的次数,出现次数越高的词所对应内容的重要程度可能就越高,要达到这一目的,需要进行中文分词和词频统计。
图6 商品评论文本内容
jieba搜索分词引擎有三种安全模式:高安全模式(fullmode)、精准安全模式(defaultmode)、搜索结果引擎精准模式(searchmode)。全模式层次分词方法试图把一个句子中所有原本可以层次组成一个词的所有词语都进行拆分再层次组合在一起来,但结果还是有可能发生重叠,不能用于解决具有歧义性的问题;精准的全模式层次分词方法试图将每个语句最精确地层次分开,结果成为无可能重叠性的词汇,适合用来做句子文本中的情感信息分析;采用搜索结果引擎分词模式在精准分词模式的分析基础上,把长度分词切片进行再一次分词,适用于其他搜索结果引擎的再分词。此处我们采用了jjieba等再分词的精准分析模式,调用了icutu的方法,,能较准确地直接有效实现一个网站评论语句发言一个语句的长词切片式再分词,首先通过导入jieba库,读取原评论数据把新的评论语句内容通过各种切片读取方法依次切取显示出来,将其直接保存为其他文本格式,然后再依次进行其他文本格式内容的切片读取,最后依次进行语句分词,代码方法如下:
#导入jieba库
import jieba
#读取数据
data=pd.read_excel('商品评论.xlsx')
#通过切片把评论切取出来
data1=data.iloc[:,5]
#将数据框转化为文本内容
data1.to_csv('data.txt',index=False,sep=',',encoding='utf_8_sig')
#读取文本内容
report=open('data.txt',encoding='utf_8').read()
#jieba库中的cut进行分词
words=jieba.cut(report)
完成中文分词步骤后,接下来进行词频统计,该设计选取的长度大于等于3个字的词进行讲解,代码如下:
#通过for循环语句提取长度大于等于3个字的词
report_words=[]
for word in words:
if len(word)>=3:#将长度大于等于3个字的词放入列表
report_words.append(word)
print(report_words)#输出
第一行代码创建一个空列表report_words,用于存储提取结果;第二到第四行代码通过for循环语句遍历分词结果中的每一个词,如果该词的长度大于等于3个字,就把它添加到列表report_words中;第六行代码打印输出提取结果,如下图所示:
图7 分词提取结果
统计词频用collection库中的Counter()函数,且用most_common()函数来完成实现提取排名前100位的词。代码如下。
t=Counter(report_words).most_common(100)
在Python中,可利用wordcloud库绘制词云图,该库可使用命令“pip install wordcloud”来安装。由前面的长度筛选的结果repor_words,首先用代码content=','.join(report_words)将列表转换为字符串,以空格作为连接符,以满足词云图生成函数对数据格式的要求。其次用WordCloud()函数设置词云图参数,然后用generate()函数将指定的字符串绘制成词云图。代码如下:
w=WordCloud(font_path='华文彩云.TTF',#字体文件路径
background_color=None,#背景颜色
width=100,#宽度
height=88#高度
).generate(content)#绘制词云图
最后,用w.to_file('词云图.png')函数导出图片,结果如下图所示。
图8 词云图
由词云图可以看出,顾客评论最多的是很漂亮、玩游戏、充电器等。同时通过分析可以得出顾客对该商品是比较满意的。
snownlp主要研究功能是你可以自己动手设计进行一个文本中文搜索摘要分词(两个文本算法分别也就是是acharacter-basedgenerativemodel)、词性分析原理文本标注(两个文本原理分别也就是2-tnt、3-gramodel隐马)、情感分析原理文本分析(虽然我在官网上的木板上已经有详细说明介绍两个中文文本原理,但是没有详细指明专门用于商品购物相关评论和分类的其他商品相关评论的两个中文原理准确率可能会比较高,其实主要功能是因为它的两个中文评论语料库主要研究内容也都是专门用于商品购物相关评论技术方面的,可以自己一人动手设计构建一个用于相关评论专业技术领域内的中文语料库,替换原来的,准确率也挺不错的)、文本原理搜索摘要分类(两个文本原理分别也就是朴素贝叶斯)、转换一个汉语拼音、繁体转换成中文简体、提取一个汉语文本原理搜索摘要关键词(两个文本原理分别也就是直接提取文本textrank)、提取一个文本搜索摘要(两个文本原理分别也就是直接提取文本textrank)、分割两个汉语句子、文本相似(两个原理分别是aabm25)。
读取爬取获得的原商品评论数据把评论内容通过切片方法切取出来,代码如下:
df=pd.read_excel('商品评论.xlsx')
#提取所有数据
df1=df.iloc[:,5]
print('将提取的数据打印出来:\n',df1)
预测影响概率分析结果为基于一个评论对其整体情感态度的直接预测影响概率,评论对于整体情感态度的直接预测影响概率大部分为平均大于或者几乎等于0.5,可以将其直接判断为是否正面影响评论整体情感,小于0.5的可以判断可能为负面评论情感。所以以下将概率预测中的概率阈值分为两类大于或者几乎等于0.5的实际使用则将评论文章主题首页标签对其赋予阈值后的值设定为"正面",小于0.5的实际使用则将评论文章主题首页标签对其赋予阈值后的值设定为"负面",方便后面与其他实际使用评论主题标签中的读者及时进行综合分析或者比较。代码如下:
#myval保存预测值
myval=[]
#存放正面
good=0
#存放负面
bad=0
for i in values:
if (i>=0.5):#正面评价
myval.append("正面")
good=good+1
else:#负面评价
myval.append("负面")
bad=bad+1
df['预测值']=values
df['评价类别']=myval
#将结果输出到Excel
df.to_excel('评论分析.xlsx')
部分运行结果为:
图9 评论态度预测结果
通过统计实际数据,得到分类效果的评价,把从网络上爬取到200条评论进行人工情感极性标注,作为情感分析测试集,代码如下:
rate=good/(good+bad)
print('好评率','%.f%%' % (rate * 100)) #格式化为百分比
代码运行结果为:
图10 好评率
从测试结果知道,经过训练的SnowNLP情感分析模型的好评率达到88%,好评率较高。
使用Python库调用针对sentiment下的文本情感数据分类分析方法,可以对一个文本中的情感数据进行归类评分,得到的文本情感归类分值在0到1之间,分值接近大于0.5情感较为积极,当情感分值接近小于0.5,情感较为消极;越分值接近0,情感越消极。snownlp库中已经训练好的情感模型主要是基于当前电商营销产品用户评论的海量数据,本次课题研究主要调用针对snownlp库数据进行的的情感归类分析并没有重新调用训练好的模型。snownlp库的情感归类分析部分主要代码结构如下:
#作图
y=values
plt.rc('font', family='SimHei', size=10)
plt.plot(y, marker='o', mec='r', mfc='w',label=u'评价分值')
plt.xlabel('用户')#x轴
plt.ylabel('评价分值')#y轴
# 让图例生效
plt.legend()
#添加标题
plt.title('评论情感分析',family='SimHei',size=14,color='black')
plt.show()
用matplotlib方法生成一个情感总量分值学生分布分数折射曲线图,实现学生情感总值分数分布可视化,实验分析结果显示如下图图11所示。
图11 评论情感分析
本文通过使用我的urllib.request这个爬虫获取了一个京东华为商品编号编码为10037616578008的京东华为品牌手机商品评论用户数据。在自动绘制京东词汇量云图分析方面,通过c和python三个语言分别完成了京东分词、统计以及词频等三个数据库的预处理分析工作,最后分别利用matplotlib和wordcloud语言完成了京东词汇量云图的词频展示,从这张图片中可以明显看到京东用户对该华为手机评论整体上还是比较满意。在用snownlp进行文本情感分析方面,通过好评率为88%,该方法也表现了顾客对该手机是比较满意的。
采用urllib.request库爬取数据,采取基于pythonp的语言对食品评论中的数据内容进行高频分析,其中高频采用了基于高频情感学的词典和高频运用基于snownlp的分析方法对一个京东品牌食品手机评论中的数据内容进行了高频情感词典分析,获取销量排前100位的高频关键词汇,并把高频关键字和词语内容进行高频可视化分析展示。通过高频关键词语进行分析可以发现,消费者对该品牌手机的食品评论还是比较满意的,最值得关注的一点是充电器、P50、P30等,都用户给出了非常满意的用户情感反馈评价。针对用户反馈的这些问题,该商家表示可以考虑继续在这款手机的前置摄像头、手机的外包装以及质量、价格的用户满意度上继续保持领先优势。
研究通过随机匹配程度情感客体词典,对程度情感形容词、程度情感副词、否定词典等进行遍历,计算人类评论发言语句的文本情感分数值,用snsnownlp库算法进行文本情感归类分析,以矩形柱状曲线图直观化地展示评论语句中的情感值和分数值的分布变化情况,并对相关实验结果进行了初步分析验证。由于人类文本情感客体是一个微妙又复杂的而且带有主观情感意愿的文本客体,目前使用计算机机器进行的人类文本客体情感归类分析,只是从结合数学学和统计学的一个角度上在融合了与机器学习等自然语言互相匹配的数学规则下来进行的文本情感解析分类。目前机器通过数学算法用各种量化情感标准方法去准确区分人类情感极性,很难准确区分把握和抓住其中隐含的复杂情感。通过运用大数据以及机器深度学习等技术方法我们能够不断逐步提高语音识别情感分析的技术准确度,但是如何通过训练才能让一个机器人智能能够像一个人类一样独立思维,能很好区分并准确把握和抓住属于人类细腻多变的隐含情感,任重而道远。
参考文献:
[1] 刘建波, 杨峰. 面向舆情分析的短文本频繁模式聚类算法[J]. 北京电子科技学院学报, 2010, 18(4):6-11.
[2] 章蓬伟, 贾钰峰, 刘强, 等. 基于数据挖掘技术的文本情感分析技术研究[J]. 信息通信, 2020(1):77-78.
[3] HU Minqing, LIU Bing. Mining and summarizing customerreviews[C]//KDD '04:Proceedings of the tenth ACM SIGKDDinternational conference on Knowledge discovery and datamining, August 22-25, 2004, Seattle, WA, USA. New York:ACM, 2004:168-177.
[4] DASGUPTA S, SENGUPTA K. Analyzing consumer reviewswith text mining approach:A case study on Samsung GalaxyS3[J]. Paradigm, 2016, 20(1):1-13.
[5] 李琴, 李少波, 王安虹, 等. 基于在线评论数据的景区门票浮动制测评分析方法[J]. 科学技术与工程, 2018, 18(1):273-279
[6]方芳,Scrapy框架京东网站笔记本电脑评论数据爬取和分析[J]. 2020.06.18
[7]王宇韬、吴子湛,零基础学Python网络爬虫案例实战全流程详解:入门与提高篇[M].-北京:机械工业出版社,2021.06
[8]陈诺祎,单菁,王佳英,石璐璐.基于文本挖掘的鸿蒙系统用户评论情感分析与研究[J].科技资讯,2021,19(16):26-29.DOI:10.16661/j.cnki.1672-3791.2107-5042-8090.
[9]章蓬伟,贾钰峰,邵小青,拜尔娜·木沙,赵裕峰.基于文本情感分析的电商产品评论数据研究[J].微处理机,2020,41(06):58-62.
[10]杨鑫, 杨云帆, 焦维, 等. 基于领域情感词典的民宿评论情感分析[J]. 科学技术与工程, 2020, 20(7):2794-2800.
[11]陈兴蜀, 常天祐, 王海舟, 等. 基于微博数据的“新冠肺炎疫情”舆情演化时空分析[J]. 四川大学学报(自然科学版),2020, 57(2):409-416.
(1)商品信息评论爬取
#导入urllib.request
import urllib.request
#导入json
import json
#导入pandas
import pandas as pd
b = []
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36',
'Referer': 'https://item.jd.com/10037616578008.html'
}
end_page = int(input('请输入爬取的评论页码:'))
#page=1
# 创建列表
#b=[]
for i in range(0,end_page+1):#end_page+1
#获取评论链接
url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10037616578008&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1 '
url = url.format(i)
request = urllib.request.Request(url=url,headers=headers)
request = urllib.request.Request(url=url,headers=headers)
content = urllib.request.urlopen(request).read().decode('gbk')
content = content.strip("fetchJSON_comment98();")
obj = json.loads(content)
#获取评论信息
comments = obj['comments']
data = []
# 获取商品评论信息
for j in range(len(comments)):
#fp = open('京东.txt','a',encoding='utf8')
data = []
# 获取商品评论时间
productSize = comments[j]['productSize']
data.append(productSize)
Color = comments[j]['productColor']
data.append(Color)
creationTime = comments[j]['creationTime']#productSize
data.append(creationTime)
# 获取评论者id
id = comments[j]['id']
data.append(id)
# 获取评论内容
contents = comments[j]['content']
data.append(contents)
b.append(data)
#file.save(datalist)
#转换为数据框
df = pd.DataFrame(b)
df.columns = ['商品内存','商品颜色','评论时间','id','评论内容']
#到处excel
df.to_excel('商品评论.xlsx')#50
#导入pandas包
import pandas as pd
#导入jieba库
import jieba
#导入collections包
from collections import Counter
#读取数据
data=pd.read_excel('商品评论.xlsx')
#通过切片把评论切取出来
data1=data.iloc[:,5]
#将数据框转化为文本内容
data1.to_csv('data.txt',index=False,sep=',',encoding='utf_8_sig')
#读取文本内容
report=open('data.txt',encoding='utf_8').read()
#jieba库中的cut进行分词
words=jieba.cut(report)
#通过for循环语句提取长度大于等于3个字的词
report_words=[]
for word in words:
if len(word)>=3:#将长度大于等于3个字的词放入列表
report_words.append(word)
print(report_words)#输出
#词频统计
#获取词频最高的100个词
t=Counter(report_words).most_common(100)#取最多的100组
print(t)#删除词频
#导入相关库
from wordcloud import WordCloud
#import matplotlib.pyplot as plt
#列表转换成字符串
content=','.join(report_words)
w=WordCloud(font_path='华文彩云.TTF',#字体文件路径
background_color=None,#背景颜色
width=100,#宽度
height=88#高度
).generate(content)#绘制词云图
w.to_file('词云图.png')#到处png格式图片
(3)基于snownlp的商品评论文本情感分析
#加载情感分析模块
from snownlp import SnowNLP
#导入pandas包
import pandas as pd
#导入plt函数
import matplotlib.pyplot as plt
#导入样例数据
data='商品评论.xlsx'
#读取文本数据
df=pd.read_excel(data)
#提取所有数据
df1=df.iloc[:,5]
print('将提取的数据打印出来:\n',df1)
#遍历每条评论进行预测
values=[SnowNLP(i).sentiments for i in df1]
#输出积极的概率,大于0.5积极的,小于0.5消极的
#myval保存预测值
myval=[]
#存放正面
good=0
#存放负面
bad=0
for i in values:
if (i>=0.5):#正面评价
myval.append("正面")
good=good+1
else:#负面评价
myval.append("负面")
bad=bad+1
df['预测值']=values
df['评价类别']=myval
#将结果输出到Excel
df.to_excel('评论态度预测.xlsx')
rate=good/(good+bad)
print('好评率','%.f%%' % (rate * 100)) #格式化为百分比
#作图
y=values
plt.rc('font', family='SimHei', size=10)
plt.plot(y, marker='o', mec='r', mfc='w',label=u'评价分值')
plt.xlabel('用户')#x轴
plt.ylabel('评价分值')#y轴
# 让图例生效
plt.legend()
#添加标题
plt.title('评论情感分析',family='SimHei',size=14,color='black')
plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。