豆瓣影评词云

内容复制自公众号,排版可能不耐看,不要介意哈。

既然已经爬取了数据,哪个guy不想顺手做下分析呢?前一期PythonGuy爬取电影《送你一朵小红花》的豆瓣影评,现在准备对数据进行简单分析,由于数据格式为文本,本次分析方法为对所有评论文字进行分词,记录所有词语出现次数(词频),按升序排序后,提取关键词,作词云图。

 

依赖库:numpy、wordcloud、PIL、matplotlib、jieba

 


 

 1.分词 

 

分词选用jieba,国人开发的一款优秀中文分词第三方库,其利用中文词库,确定汉字之间的关联概率,概率大的组成词语,形成分词结果,除了分词,用户还可以添加自定义词语。

本例使用jieba.analyse包对评论分词后统计词频,并提取词频前200个词语。

 

 

分词

参数解释:

  1. sentence:待分词文本

  2. topk:提取关键字个数

  3. withWeight:是否返回每个关键词权重

  4. allowPOS:是否允许提取关键词词性,默认为allowPOS='ns';'n','vn','v',提取地面,名词、动名词,动词

 

评论(部分原始数据)

 

精确模式分词

 

提取200个关键词

 


 

 2.创建词云图 

 

使用第三方库wordcloud创建词云,首先创建一个WordCloud对象

 

 

部分参数说明:

  1. width:图像宽度

  2. height:图像高度

  3. font_path:指定字体路径

  4. mode:颜色模型

  5. max_font_size:最大字体大小

  6. random_sate:随机颜色种子

  7. mask:掩膜

  8. scale:比例,参数大小和图像分辨率呈正相关

  9. background_color:背景色

  10. relative_scaling:单词出现频率对字体大小的权重

调用generate_from_frequencies(freq)方法创建词云,字典参数freq:词语为键,词频为值

 

 

所选掩膜图像

 

读取图片做掩膜图像

 

根据掩膜生成词语颜色

 

 


 

 3.结果 

 

生成影评词云图

 

分析:

观众对电影的评论褒贬不一,推测该电影易烊千玺主演,类型为青春偶像片,猜测大部分观众不是单纯为看电影而买单。至于剧情,大概是以男主/女主与病魔对抗为主线,展开一系列关乎爱情、亲情、青春的思考。

 

 

 

 

 

以上分析受限于作者认知水平,如有冒犯,你好像也拿我没办法。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是Python爬取豆瓣电影词云图的步骤: 1.导入需要的库和模块 ```python import requests from bs4 import BeautifulSoup import jieba from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt from PIL import Image import numpy as np ``` 2.获取网页源代码并解析 ```python url = 'https://movie.douban.com/subject/26363254/comments?status=P' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} response = requests.get(url, headers=headers) soup = BeautifulSoup(response.text, 'html.parser') ``` 3.获取评论内容并进行分词 ```python comments = soup.find_all('span', class_='short') comment_text = '' for comment in comments: comment_text += comment.text words = jieba.cut(comment_text) ``` 4.统计词频并生成词云图 ```python word_counts = {} for word in words: if len(word) == 1: continue else: word_counts[word] = word_counts.get(word, 0) + 1 wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', max_words=200, max_font_size=100, width=800, height=600) wordcloud.generate_from_frequencies(word_counts) plt.imshow(wordcloud, interpolation='bilinear') plt.axis('off') plt.show() ``` 5.生成带有图片的词云图 ```python mask = np.array(Image.open('movie.png')) image_colors = ImageColorGenerator(mask) wordcloud = WordCloud(font_path='msyh.ttc', background_color='white', max_words=200, max_font_size=100, width=800, height=600, mask=mask) wordcloud.generate_from_frequencies(word_counts) plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation='bilinear') plt.axis('off') plt.show() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值