2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Python实现某站热门评论情感分析----NLP自然语言处理

Python实现某站热门评论情感分析----NLP自然语言处理

时间:2019-03-30 15:29:48

相关推荐

Python实现某站热门评论情感分析----NLP自然语言处理

文章目录

前言准备工作总体思路开始动手Python 爬取热门视频评论信息Baidu AI 分析所得评论的情感信息Excel 自动写入所有评论情感信息主函数(开始执行) 运行结果Excel文件结果小结

前言

最近在研究自然语言处理NLP相关知识概念,学起来总是很痛苦,没有头绪,无聊。歇息片刻,便想找个有趣的项目练练手,提升下兴趣,便开始了这个小项目。

准备工作

一些基础

申请一个百度AI开放平台的账号,并免费开通自然语言处理API接口。(最重要的功能!!!暂先使用百度)具备基础的python语言基础及爬虫基础。

需要安装的第三方依赖(已安装过的无需再装)

pip install baidu-aip用于使用百度AI服务pip install requests用于发送爬虫请求pip install xlwt用于写入Excel表格评论分析结果

总体思路

我们可以分为以下三个步骤进行评论情感分析:

首先,我们需要使用python爬虫爬取热门视频的大量评论内容,并存放起来。其次,当我们已经得到大量评论内容,就可以直接调用百度AI的服务进行评论情感分析,获得分析结果,再次存放起来。最后,将评论情感分析结果写入Excel表格中,方便统计查阅。

开始动手

这次我选择爬取一个某站上一个的热门视频【iPhone14将与华为Mate50同期发布】(不让上链接,小伙伴可自行搜索),并分析评论区用户们的具体评论情感。

Python 爬取热门视频评论信息

请求地址因为涉及到版权问题,审核无法通过,所以代码里面就不贴上去了,需要的小伙伴可以与我联系。

'''获取视频下方所有的评论信息及评论作者'''def getAllComments():# Step1:设置请求路径 url、存放评论及作者的评论列表url = '***********************************'comments_list = []#循环请求,爬取大量视频评论for i in range(1, 10):#Step2: 设置请求参数param = {'csrf': '4b88992977611823b137a5a003a56075','mode': '3','next': str(i),'oid': '557078008','plat': '1','type': '1'}#Setp3: 使用UA(User)伪装策略进行请求发送response = requests.get(url=url, params=param, headers=header)#Step4: 获取响应信息,信息格式为json格式的数据,获取响应信息内的所有评论信息data = response.json()['data']['replies']#Step5: 遍历所有评论信息,打印输出并存放到评论列表中for comments in data:#打印输出print(comments['member']['uname'] + ':\t' + comments['content']['message'])#封装数据,存放列表comments_list.append({'user':comments['member']['uname'], #存放评论用户'comment':comments['content']['message'] #存放评论内容})#每间隔0.1s爬取一次,避免特定反爬虫策略time.sleep(0.1)return comments_list

Baidu AI 分析所得评论的情感信息

from aip import AipNlp""" 你的 APPID AK SK """# 如不知如何获得请看我这篇文章: # /weixin_43479947/article/details/124256347?spm=1001..3001.5502APP_ID = '**********'API_KEY = '**********'SECRET_KEY = '**********'client = AipNlp(APP_ID, API_KEY, SECRET_KEY)'''获取所有的评论信息及评论情感预测信息'''def getAllSentiments(comments_list):#存放所有评论及情感预测信息的列表comment_sentiments = []#循环遍历所有评论,并预测评论的情感for comment in comments_list:#异常处理,防止评论出现特殊字符导致程序异常终止try:#使用 Baidu AI的NLP自然语言处理接口.进行评论情感分析,并返回分析结果sentiment_result = client.sentimentClassify(comment['comment'])['items'][0]#以下为 sentiment_result 内的参数属性# confidence---->代表可信度# negative_prob---->代表消极情绪概率# positive_prob---->代表积极情绪概率# sentiment---->代表情绪识别结果,0为消极,1为中性,2为积极#封装评论及预测,并添加到预测列表中comment_sentiment = {'user': comment['user'],#评论用户'comment': comment['comment'],#评论内容#format()函数统一将 小数数据 转化为 百分比数据'positive_prob': format(sentiment_result['positive_prob'], '.2%'),#情绪积极概率'negative_prob': format(sentiment_result['negative_prob'], '.2%'),#情绪消极概率'sentiment': sentiment_result['sentiment'], #情绪结果'confidence': format(sentiment_result['confidence'], '.2%'), #可信度概率}print(comment_sentiment)#输出封装好的数据comment_sentiments.append(comment_sentiment) #添加到情绪列表之中except Exception:passtime.sleep(0.5) #由于情绪识别请求存在QPS限制,故每0.5s请求一次return comment_sentiments #返回所有情绪结果

Excel 自动写入所有评论情感信息

'''信息保存至Excel表格'''def saveExcel(comment_sentiments):#Step1: 创建excel表格类型文件,即工作薄对象,编码格式为 utf-8workbook = xlwt.Workbook(encoding='utf-8')#Step2: 创建工作表对象worksheet = workbook.add_sheet('sentiment analysis')#Step3: 设置表头信息worksheet.write(0, 0, '评论用户')worksheet.write(0, 1, '评论内容')worksheet.write(0, 2, '积极概率')worksheet.write(0, 3, '消极概率')worksheet.write(0, 4, '情绪结果(0消极、1中性、2积极)')worksheet.write(0, 5, '可信度')#Step4: 将所有的评论情绪信息写入Excel表格之中for i in range(len(comment_sentiments)):worksheet.write(i+1, 0, comment_sentiments[i]['user'])worksheet.write(i+1, 1, comment_sentiments[i]['comment'])worksheet.write(i+1, 2, comment_sentiments[i]['positive_prob'])worksheet.write(i+1, 3, comment_sentiments[i]['negative_prob'])worksheet.write(i+1, 4, comment_sentiments[i]['sentiment'])worksheet.write(i+1, 5, comment_sentiments[i]['confidence'])#Step5: 保存Excel文件至本地workbook.save('./excel/sentiments.xls')#打印保存信息print('Save Successfully!')

主函数(开始执行)

'''某站视频【iPhone14将与华为Mate50同期发布】小伙伴们可以自行搜索哦'''if __name__ == '__main__':comments_list = getAllComments()comment_sentiments = getAllSentiments(comments_list)saveExcel(comment_sentiments)

运行结果

Excel文件结果

小结

其实做出来心里还是很激动的哈哈哈,但是最重要的功能情绪分析还是百度团队的成果,希望以后自己也能够为AI技术贡献自己的成果,加油!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。