首页 > 编程知识 正文

京东国际的东西没有中文标签,京东上的东西怎么发链接

时间:2023-05-05 20:45:34 阅读:231672 作者:1059

根据python制作词云图和python爬取京东评论,我们对商品评论做进一步分析。

一、情感分析的用途

首先,我们先看情感分析这个概念,百度上基本都是文本情感分析的介绍,大概意识是通过一些文本来分析其正面和负面的倾向性,从而进行相应的文本挖掘。

感觉上有点抽象,我个人这样理解的,当我们获取一段文本或者很多段文本时,我们先要对文本进行情感分析,比如说,“这个产品很棒”,那我们觉得这段文本便是正向的,很简单。但是随着科技的不断进步,评论越来越多,我们无法将其完整的看完,这时,我们便可以抽取大量文本的主题,能够很好的进行信息挖掘。同时,我们既想在大段文本中知道正向主题,又想知道负向主题,那这时便可以进行情感分析。

二、数据准备

因为之前我们已经爬取过评论,对爬取信息这块不多说。只说一些注意的点:

第一,由于我们需要正向和负向两种评论,在爬取时,我们只需要将url中的score进行变化,score=0是五星,在这里我只爬取了score=0和score=1两种,即五星和一星,分别爬取51页,大概就有1020条数据,大家可以多用其他score,比如说,将score=0,score=4作为正向,score=1和score=2作为负向,分别爬取50页,差不多有2000条数据,再进行以下操作。

url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'.format(page)

第二,不知道是电脑原因,还是代码原因,我这里只能将评论读入excel才能进行下面的操作,大家可以用文本的方式进行尝试。我这边是跑的积极评论的代码,要获得消极的,换第二个url。

import requestsimport jsonimport xlwtf = xlwt.Workbook()sheetwrite = f.add_sheet('comment')sheetwrite.write(0,0,'comment')k = 1for page in range(0,50+1): header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"} url1 = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'.format(page) # url2 = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5225346&score=1&sortType=5&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1'.format( # page) response = requests.get(url1, headers=header) data = response.text jd = json.loads(data.lstrip('fetchJSON_comment98vv12345(').rstrip(');')) data_list = jd['comments'] for data in data_list: content = data['content'] sheetwrite.write(k,0,content) k +=1f.save(r'C:UsersAdministratorDesktoppython项目爬虫京东评论com_all.xls')

第三,注意,我们上面保存了两组文件,现在将爬取到的信息进行基本的处理,比如说文本去重、文本分词、停用词过滤等。

import pandas as pdimport jiebapostive = pd.read_excel(r'C:UsersAdministratorDesktoppython项目爬虫京东评论com_all.xls',encoding = 'utf-8')negtive = pd.read_excel(r'C:UsersAdministratorDesktoppython项目爬虫京东评论com_neg.xls',encoding = 'utf-8')# 文本去重(文本去重主要是一些系统自动默认好评的那些评论 )positive = postive ['comment'].drop_duplicates()positive = positive['comment']negtive = negtive ['comment'].drop_duplicates()negtive = negtive['comment']# 文本分词mycut = lambda s:' '.join(jieba.cut(s)) # 自定义分词函数po =postive.comment.apply(mycut)Out[119]: 0 19 年 的 愿望 终于 实现 了 , 买 一台 MAC 电脑 , 用 起来 体验 真的 太...1 运行 速度 : 感觉 比 windows 快 , 蛮 顺畅 n 屏幕 效果 : 屏幕 ...2 双 十二 买 的 , 没什么 太 大 优惠 , 观望 了 很 久 最后 决定 在 东 东家 ...ne =negtive.comment.apply(mycut)#停用词过滤(停用词文本可以自己写,一行一个或者用别人整理好的,我这是用别人的)with open(r'C:UsersAdministratorDesktoppython项目电商评论情感分析stoplist.txt',encoding = 'utf-8') as f: stop = f.read()stop =[' ',''] +list(stop[0:]) # 因为读进来的数据缺少空格,我们自己添加进去po['1'] = po[0:].apply(lambda s: s.split(' ')) # 将分词后的文本以空格切割Out[123]: 0 [19, 年, 的, 愿望, 终于, 实现, 了, ,, 买, 一台, MAC, 电脑, ,...1 [运行, 速度, :, 感觉, 比, windows, , , 快, ,, 蛮, 顺畅, ...2 [双, 十二, 买, 的, ,, 没什么, 太, 大, 优惠, ,, 观望, 了, 很, 久...3 [做工, 太, 精美, 了, , , 用料, 考究, , , 超薄, , , 设计, , ,...po['2'] = po['1'].apply(lambda x:[i for i in x if i not in stop])# 过滤停用词Out[124]: 0 [19, 愿望, 终于, 实现, 一台, MAC, 电脑, 起来, 体验, 真的, 太棒了,...1 [运行, 速度, 感觉, windows, 顺畅, 屏幕, 效果, 屏幕, 色彩, 真的, ...2 [十二, 没什么, 太, 优惠, 观望, 最后, 决定, 东, 东家, 别的, 为了, 多花...3 [做工, 太, 精美, 用料, 考究, 超薄, 设计, 运行, 速度, 超快, 没有, 别的...4 [运行, 速度, 运行, 速度, 很快, 没有, 卡涩, 问题, 屏幕, 效果, 色彩, 高...# 在这里我们也可以用到之前的词云图分析# post = []# for word in po:# if len(word)>1 and word not in stop:# post.append(word)# print(post)# wc = wordcloud.WordCloud(width=1000, font_path='simfang.ttf',height=800)#设定词云画的大小字体,一定要设定字体,否则中文显示不出来# wc.generate(' '.join(post))# wc.to_file(r'C:UsersAdministratorDesktoppython项目爬虫京东评论yun.png')ne['1'] = ne[0:].apply(lambda s: s.split(' '))ne['2'] = ne['1'].apply(lambda x:[i for i in x if i not in stop])

至此,我们的数据就准备好了,下面进行LDA模型分析

三、LDA模型

有前人对这个模型进行了详细介绍,但我看着还是有些吃力,暂时先用着,等后面慢慢地理解。

from gensim import corpora,models# 负面主题分析neg_dict = corpora.Dictionary(ne['2'])neg_corpus = [neg_dict.doc2bow(i) for i in ne['2']]neg_lda = models.LdaModel(neg_corpus,num_topics = 3,id2word = neg_dict)# 正面主题分析pos_dict = corpora.Dictionary(po['2'])pos_corpus = [pos_dict.doc2bow(i) for i in po['2']]pos_lda = models.LdaModel(pos_corpus,num_topics = 3,id2word =pos_dict)# 展示主题pos_theme = pos_lda.show_topics()Out[137]: [(0, '0.020*"速度" + 0.018*"非常" + 0.018*"运行" + 0.016*"外观" + 0.016*"苹果" + 0.016*"屏幕" + 0.015*"轻薄" + 0.012*"外形" + 0.011*"散热" + 0.011*"效果"'), (1, '0.016*"非常" + 0.015*"喜欢" + 0.012*"速度" + 0.012*"轻薄" + 0.010*"电脑" + 0.010*"系统" + 0.010*"屏幕" + 0.009*"运行" + 0.009*"外观" + 0.007*"不错"'), (2, '0.015*"非常" + 0.014*"系统" + 0.012*"苹果" + 0.012*"速度" + 0.011*"电脑" + 0.010*"外观" + 0.010*"效果" + 0.010*"不错" + 0.009*"轻薄" + 0.007*"运行"')]# 取出高频词import repattern = re.compile(r'[u4e00-u9fa5]+')pattern.findall(pos_theme[0][1])Out[138]: ['速度', '非常', '运行', '外观', '苹果', '屏幕', '轻薄', '外形', '散热', '效果']pos_key_words =[]for i in range(3): pos_key_words.append(pattern.findall(pos_theme[i][1]))pos_key_words = pd.DataFrame(data=pos_key_words,index=['主题1','主题2','主题3'])Out[141]: 0 1 2 3 4 5 6 7 8 9主题1 速度 非常 运行 外观 苹果 屏幕 轻薄 外形 散热 效果主题2 非常 喜欢 速度 轻薄 电脑 系统 屏幕 运行 外观 不错主题3 非常 系统 苹果 速度 电脑 外观 效果 不错 轻薄 运行import pyLDAvis # 可视化import pyLDAvis.gensimvis = pyLDAvis.gensim.prepare(pos_lda,pos_corpus,pos_dict)# 在浏览器中心打开一个界面pyLDAvis.show(vis)

最后是形成这样一个网页界面,可调节不同主题的词还有右上角的词的权重等。只是很简单的图形,就能够看到对于这个产品,在正面评论中,对于产品的运行速度、外观等很满意,说明产品的质量很受大家欢迎,在负面评论中,主要存在的问题就是客服和价格问题,商家应该处理好这两个问题,提升客户满意度。

[(0, '0.020*"速度" + 0.018*"非常" + 0.018*"运行" + 0.016*"外观" + 0.016*"苹果" + 0.016*"屏幕" + 0.015*"轻薄" + 0.012*"外形" + 0.011*"散热" + 0.011*"效果"'), (1, '0.016*"非常" + 0.015*"喜欢" + 0.012*"速度" + 0.012*"轻薄" + 0.010*"电脑" + 0.010*"系统" + 0.010*"屏幕" + 0.009*"运行" + 0.009*"外观" + 0.007*"不错"'), (2, '0.015*"非常" + 0.014*"系统" + 0.012*"苹果" + 0.012*"速度" + 0.011*"电脑" + 0.010*"外观" + 0.010*"效果" + 0.010*"不错" + 0.009*"轻薄" + 0.007*"运行"')][(0, '0.017*"没有" + 0.013*"电脑" + 0.011*"送" + 0.011*"客服" + 0.007*"系统" + 0.006*"购买" + 0.006*"问题" + 0.006*"不好" + 0.006*"赠品" + 0.006*"京东"'), (1, '0.015*"京东" + 0.011*"电脑" + 0.010*"还是" + 0.008*"刚买" + 0.008*"问题" + 0.008*"降价" + 0.007*"不了" + 0.007*"hellip" + 0.006*"就是" + 0.006*"东西"'), (2, '0.018*"降价" + 0.015*"京东" + 0.011*"没有" + 0.010*"客服" + 0.009*"问题" + 0.008*"退货" + 0.007*"就是" + 0.007*"东西" + 0.006*"电脑" + 0.006*"苹果"')]

在这个学习与探索的过程中,我还尝试了snownlp这个库,据说这个库之前的训练文本是电商评论类的,我也进行了一些尝试,发现100条正向评论里,只识别错4个评论,可见这个对于我们的情感标注还是很有意义的,尤其是在我们不知道这些评论的正负性时,可以帮助我们进行标注。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。