【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
来源:互联网 发布:js obj动态添加key 编辑:程序博客网 时间:2024/05/14 09:48
主要内容
1、什么是SnowNLP?2、SnowNLP可以干哪些事儿?3、如何进行情绪判断?4、猎场豆瓣热门短评抓取。5、猎场热门短评情感分析。6、附录(python 画词云图)
什么是SnowNLP?
snowNLP,可以分词,标注,还可以进行情绪分析。
SnowNLP是一个python写的类库,可以方便的处理中文文本内容,是受到了TextBlob的启发而写的,由于现在大部分的自然语言处理库基本都是针对英文的,于是写了一个方便处理中文的类库,并且和TextBlob不同的是,这里没有用NLTK,所有的算法都是自己实现的,并且自带了一些训练好的字典。注意本程序都是处理的unicode编码,所以使用时请自行decode成unicode。
SnowNLP可以干哪些事儿?
- 1、分词
- 2、词性标注
- 3、断句
- 4、情绪判断
- 5、拼音
- 6、繁体转简体
- 7、关键词抽取
- 8、概括总结文意
- 9、信息量衡量
- 10、文本相似性
如何进行情绪判断?
返回值为正面情绪的概率,
越接近1表示正面情绪
越接近0表示负面情绪
当值大于 0.5 时代表句子的情感极性偏向积极,当分值小于 0.5 时,情感极性偏向消极,当然越偏向两边,情绪越偏激。
一个例子:
# encoding: utf-8import sysreload(sys)sys.setdefaultencoding('utf-8')from snownlp import SnowNLPtext1="这个人脾气真坏,动不动就骂人"text2='这个人脾气真好,经常笑's1 = SnowNLP(text1.decode('utf-8'))s2=SnowNLP(text2.decode('utf-8'))print text1,s1.sentimentsprint text2,s2.sentiments
"D:\Program Files\Python27\python.exe" D:/PycharmProjects/情感分析/情感分析测试例子.py这个人脾气真坏,动不动就骂人 0.0363076212908这个人脾气真好,经常笑 0.730173371865Process finished with exit code 0
豆瓣猎场短评爬虫。
# encoding: utf-8import sysreload(sys)sys.setdefaultencoding('utf-8')import reimport requestsimport codecsimport timeimport randomfrom bs4 import BeautifulSoupabsolute = 'https://movie.douban.com/subject/26322642/comments'absolute_url = 'https://movie.douban.com/subject/26322642/comments?start=20&limit=20&sort=new_score&status=P&percent_type='url = 'https://movie.douban.com/subject/26322642/comments?start={}&limit=20&sort=new_score&status=P'header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0','Connection':'keep-alive'}def get_data(html): soup=BeautifulSoup(html,'lxml') comment_list = soup.select('.comment > p') next_page= soup.select('#paginator > a')[2].get('href') date_nodes = soup.select('.comment-time') return comment_list,next_page,date_nodesif __name__ == '__main__': ########先登录豆瓣,把cookie复制放在cookie.txt f_cookies = open('cookie.txt', 'r') cookies = {} for line in f_cookies.read().split(';'): name, value = line.strip().split('=', 1) cookies[name] = value html = requests.get(absolute_url, cookies=cookies, headers=header).content # print html comment_list = [] # 获取评论 comment_list, next_page,date_nodes= get_data(html) soup = BeautifulSoup(html, 'lxml') comment_list = [] while (next_page != []): #查看“下一页”的A标签链接 print(absolute + next_page) html = requests.get(absolute + next_page, cookies=cookies, headers=header).content soup = BeautifulSoup(html, 'lxml') comment_list, next_page,date_nodes = get_data(html) with open(u"comments.txt", 'a+') as f: for node in comment_list: comment = node.get_text().strip().replace("\n", "") print comment f.writelines(comment + u'\n') time.sleep(1 + float(random.randint(1, 100)) / 20)
猎场热门短评情感分析
下面我们对猎场热门短评基于原有 SnowNLP 进行积极和消极情感分类,读取每段评论并依次进行情感值分析,最后会计算出来一个 0-1 之间的值。
# encoding: utf-8import sysreload(sys)sys.setdefaultencoding('utf-8')import numpy as npfrom snownlp import SnowNLPimport matplotlib.pyplot as pltcomment = []with open('comments.txt', mode='r') as f: rows = f.readlines() for row in rows: if row not in comment: comment.append(row.strip('\n'))def snowanalysis(self): sentimentslist = [] for li in self: s = SnowNLP(li.decode('utf-8')) print li print s.sentiments sentimentslist.append(s.sentiments) plt.hist(sentimentslist, bins=np.arange(0, 1, 0.01)) plt.show()if __name__ == '__main__': snowanalysis(comment)
结论:通过热门短评的情感分析,好评稍大于差评,猎场还是值得一看的。
附录(python 画词云图)
# encoding: utf-8import sysreload(sys)sys.setdefaultencoding('utf-8')import jieba.analyse # 导入结巴分词import numpy as np # numpyfrom wordcloud import WordCloud, STOPWORDS # 词云工具和自带的的停用词from PIL import Image # 图片处理import matplotlib.pyplot as pltdef handle(filename, stopword): with open(filename, 'r') as f: data = f.read() wordlist = jieba.analyse.extract_tags(data, topK=100) # 分词,取前100 wordStr = " ".join(wordlist) print wordStr hand = np.array(Image.open('hang1.jpg')) # 打开一张图片,词语以图片形状为背景分布 my_cloudword = WordCloud( # wordcloud参数配置 width=1024, height=768, background_color = 'white', # 背景颜色 mask = hand, # 背景图片 max_words = 300, # 最大显示的字数 stopwords = stopword, # 停用词 max_font_size = 100, # 字体最大值 font_path='simsun.ttc', # 设置中文字体,若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字 random_state=3, # 设置有多少种随机生成状态,即有多少种配色方案 ) my_cloudword.generate(wordStr) # 生成图片 my_cloudword.to_file('wordcloud.png') # 保存 plt.imshow(my_cloudword) # 显示词云图 plt.axis('off') # 是否显示x轴、y轴下标 plt.show() # 显示if __name__ == '__main__': handle('comments.txt', STOPWORDS)
阅读全文
1 0
- 【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
- 【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
- 【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
- 基于R语言对用户评论进行情感分析
- 【自然语言处理】情感分析资源
- keras实现双向循环RNN,豆瓣电视剧评论情感分析
- 【自然语言处理】利用nltk实现情感分析
- 胡歌热播剧《猎场》遭差评 “程序猿”用自然语言分析揭真相
- 用 Python分析胡歌的《猎场》到底值不值得看?
- 用 Python分析胡歌的《猎场》到底值不值得看?
- 用 Python分析胡歌的《猎场》到底值不值得看?
- 数据分析胡歌猎场
- 用python对鹿晗、关晓彤微博进行情感分析
- python的中文文本挖掘库snownlp进行购物评论文本情感分析实例
- Python 使用nltk对数据进行自然语言处理(nlp)
- 自然语言情感分析简介
- 用python进行自然语言处理
- 用python进行自然语言处理
- Recurrences UVA
- SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3:
- Selenium 自动化测试从零实战
- Ubuntu下安装opencv-3.3.0
- 各类模型参数汇总
- 【python 自然语言处理】对胡歌【猎场】电视剧评论进行情感值分析
- C#删除字符串最后一个字符的几种方法
- 非旋转 Treap 学习笔记(二)
- Linux系统介绍(一)命令行
- mysq免安装版l卸载过程相关问题
- iOS开发
- Deepo:几乎包含所有主流深度学习框架的Docker镜像
- Linux系统介绍(二)文件系统结构
- JAVA连接oracle中的表或视图