赞
踩
最近在研究自然语言处理NLP相关知识概念,学起来总是很痛苦,没有头绪,无聊。歇息片刻,便想找个有趣的项目练练手,提升下兴趣,便开始了这个小项目。
一些基础
需要安装的第三方依赖(已安装过的无需再装)
我们可以分为以下三个步骤进行评论情感分析:
这次我选择爬取一个某站上一个的热门视频【iPhone14将与华为Mate50同期发布】(不让上链接,小伙伴可自行搜索),并分析评论区用户们的具体评论情感。
请求地址因为涉及到版权问题,审核无法通过,所以代码里面就不贴上去了,需要的小伙伴可以与我联系。
''' 获取视频下方所有的评论信息及评论作者 ''' 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
from aip import AipNlp """ 你的 APPID AK SK """ # 如不知如何获得请看我这篇文章: # https://blog.csdn.net/weixin_43479947/article/details/124256347?spm=1001.2014.3001.5502 APP_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: pass time.sleep(0.5) #由于情绪识别请求存在QPS限制,故每0.5s请求一次 return comment_sentiments #返回所有情绪结果
''' 信息保存至Excel表格 ''' def saveExcel(comment_sentiments): #Step1: 创建excel表格类型文件,即工作薄对象,编码格式为 utf-8 workbook = 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)
其实做出来心里还是很激动的哈哈哈,但是最重要的功能情绪分析还是百度团队的成果,希望以后自己也能够为AI技术贡献自己的成果,加油!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。