要说五一期间最火的电影应该是刘若英执导的《后来的我们》,但就目前豆瓣的评分来看,火的不是剧情,而是它的“炒作”翻船了。但作为技术控的我们总希望用技术去探索真相,下面就跟随小编一起来用技术来客观评价《后来的我们》吧。

评价一部电影除了评分、票房之外,小编觉得影评也是一项重要的指标,所以我们就用豆瓣电影上对《后来的我们》影评进行分析。

看了这篇文章,你能get到的技能如下:

1.使用Python爬取数据。

2.使用Java进行中文分词,并统计词语频数。

巧妇难为无米之炊,下面我们就使用Python爬取豆瓣电影上对《后来的我们》的影评。此次使用到的Python库有request、BeautifulSoup、UserAgent。

requests库的主要作用:根据链接地址得到HTML页面的源代码。

BeautifulSoup库的主要作用:解析HTML文档,使用户方便提取所需内容。

UserAgent库的主要作用:用于生成随机的User-agent。

通过对豆瓣电影的分析,我们知道影评的链接格式为https://movie.douban.com/subject/26683723/comments?start={影评起始条数}&limit=20&sort=new_score&status=P&percent_type=,并且影评起始条数的值也是有规律的,以0开始,每次加20即可。

再分析HTML页面的源代码,我们知道每一条影评信息存放在一个名为comment的div标签下,在此div标签下有名为comment-time的span标签,存放此影评的发表时间,有一个p标签存放具体的影评文字。我们都可以通过BeautifulSoup库获相应标签下的内容。

我们把每一个页面的所有影评信息存放在本地创建的txt文件中。爬取影评的Python代码如下。

"""
采集豆瓣上《后来的我们》影评
"""
import requests
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
import time#从指定url下载HTML网页
def get_page(url, options={}):ua = UserAgent()base_headers = {'User-Agent':  ua.random}headers = dict(base_headers, **options)try:r = requests.get(url, headers=headers)if r.status_code == 200:r.encoding=r.apparent_encodingreturn r.textexcept ConnectionError:return None
start = 0
while start <= 200:time.sleep(5)fileName = "E:\\闲时程序代码\\python\\后来的我们\\影评\\douban" + str(start) + ".txt"f = open(fileName, "w",encoding='utf-8')comments = []    #要写入的影评字符串列表url = "https://movie.douban.com/subject/26683723/comments?start=" + str(start) + "&limit=20&sort=new_score&status=P&percent_type="text = get_page(url)if text is not None:soup = BeautifulSoup(text, 'html.parser')commentDivs = soup.find_all('div', 'comment')for each in commentDivs:commentinfo = each.find('span','comment-info')commenttime = str(commentinfo.find('span','comment-time ')['title'])content = ""for i, string in enumerate(each.find('p')):if i == 0:content = stringcontent = content.replace("\n",",")content.encode(encoding='utf-8',errors="ignore")comments.append(commenttime + " \t" + content + "\n")f.writelines(comments)print(str(start) + " :成功")else:print(str(start) + " :失败")start += 20

爬取成功后,在本地文件中有如下txt文件。

其中douban0.txt文件下内容如下。

有了影评数据,我们就可以进一步的进行分析了。我们对所有的影评文字进行一个中文分词处理。其中要用到的第三方jar包有 ansj_seg.jar nlp-lang.jar。

ansj_seg.jar的主要作用:对中文字符串进行词意分词。

nlp-lang.jar的主要作用:对分词提供支持。

进行分词的Java代码如下。

package ChineseSplit;import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import org.ansj.domain.Result;
import org.ansj.splitWord.analysis.ToAnalysis;/*** 对《后来的我们》影评进行中文分词处理* @author liuchen**/
public class Main {public static void main(String[] args) throws IOException {String str = "";            //存放所有影评字符String filepath = "E:\\闲时程序代码\\python\\后来的我们\\影评";File file = new File(filepath);String[] filelist = file.list();for (int i = 0; i < filelist.length; i++) {InputStreamReader isr = new InputStreamReader(new FileInputStream(filepath + "\\" + filelist[i]), "utf-8"); BufferedReader br = new BufferedReader(isr); String s = null;while((s = br.readLine())!=null){str += s.trim().split("\t")[1];}br.close();}       Result r = ToAnalysis.parse(str);  //返回分词结果String[] words = r.toStringWithOutNature("\t").split("\t");  //输出没有词性的分词结果 以制表符分开Map<String, Integer> map = new HashMap<String, Integer>();  //使用HashMap统计词语次数for(int i=0; i<words.length;i++){if(map.containsKey(words[i])){map.put(words[i], map.get(words[i])+1);}else{map.put(words[i], 1);}}for (Entry<String, Integer> entry : map.entrySet()) {     //输出分词结果System.out.println(entry);}     }
}

对分词结果进行人工去除标点符号、人称代词等,小编将能反映电影情节的词语的出现次数进行降序排序,结果如下。

将影评文字做成的词云图如下所示。

通过上面的分析,小编个人觉得《后来的我们》虽然已经取得了10亿票房,但它的口碑并不好,可能真的存在“炒作”的现象。小伙伴们有什么看法,可以在下方留言。

喜欢我的文章请关注微信公众号:追梦程序员。

从影评的角度看《后来的我们》相关推荐

  1. XLNet 发明者杨植麟:从学习的角度看NLP现状与未来(附PPT下载)

    近年来,基于Transformer的一系列大规模预训练模型不断推进NLP领域前沿,也持续冲击着大众和研究者关于NLP任务的认知.GPT-3在多项任务上取得的泛用能力似乎使人们看到了实现通用人工智能的曙 ...

  2. 【报名】杨植麟 :从学习的角度看NLP的现状与未来

    活动议程 日期:11月26日(周四) 时间 主题 19:00-19:05 主持人介绍 张家俊,中国科学院自动化研究所研究员,智源青年科学家 19:05-20:20 <从学习的角度看NLP的现状与 ...

  3. 从主数据的角度看一个零售ERP系统

    What is an ERP Retail System from a_ master Data Perspective 从主数据的角度看一个零售ERP系统 Retailers have lot of ...

  4. 从前端角度看网页渲染慢的原理及解决方案

    从前端角度看网页渲染慢的原理及解决方案 参考文章: (1)从前端角度看网页渲染慢的原理及解决方案 (2)https://www.cnblogs.com/joyho/articles/4455893.h ...

  5. 从JDK源码角度看Long

    概况 Java的Long类主要的作用就是对基本类型long进行封装,提供了一些处理long类型的方法,比如long到String类型的转换方法或String类型到long类型的转换方法,当然也包含与其 ...

  6. flinksql获取系统当前时间搓_DNF:从剑魂角度看工作服,不仅不是地摊货,更是超越了手搓套...

    工作服一直以来都得不到认可,被很多玩家调侃为"地摊货",主要原因还是在于,可以直接升级获取,好像牌面是有那么一点低,但从另一方面来说,工作服也只能从升级获取,就算欧皇也拿它没办法, ...

  7. 从一个程序员的角度看——微信小应用

    前言: 最近初步了解了一下微信小应用,APP端的同事也非常感兴趣,于是在公司内部做了一个小小的分享,分享的过程中有很多讨论内容,大家也是非常感兴趣和有自己的看法,当时"混乱"的场面 ...

  8. 淘宝拼多多之争,从宏观的角度看拼多多是如何实现商业逆袭的?

    本篇文章从宏观的角度看拼多多,先从官网的视角摘录一些信息.在拼多多上市招股书的第一部分股东信中的第一行写到:"拼多多不是一家传统公司.当中国市场接受了现有电子商务的格局,并认为其发展阶段已经 ...

  9. 一般向量空间的基变换_从希尔伯特空间的角度看线性变换的一般思想和问题

    一般线性变换以及傅里叶变换,欧氏变换,仿射变换,余弦变换,小波变换,拉普拉斯变换,Z变换,希尔伯特变换等等这些所谓的变换太多了,这些到底搞得是什么?怎么像云像雾又像风呢?怎么才能彻底理解它们?它们究竟 ...

最新文章

  1. JSON.parse 函数应用 (复制备忘)
  2. InfluxDb中写入重复数据问题解决方案
  3. hadoop跑第一个实例过程
  4. VIP到131970年过期就离谱~
  5. PDH光端机常见故障及解决方法介绍
  6. 震惊!华为对大数据又出新动作!
  7. 数据库连接软件SQLyog 13.1.7 免费下载安装
  8. 地址后面的sessionid怎么消除_大朗饭店消除蟑螂帮您识别隐蔽鼠迹
  9. 一位考研党亲自整理的大学计算机网络基础知识总结(不看后悔版)
  10. docker login Error response from daemon: Get http://ip:port/v2/: net/http: request canceled
  11. RHEL7安装配置FTP服务
  12. 503热敏电阻温度阻值对应表
  13. pycharm改变匹配括号的颜色
  14. php小于neq qe,ThinkPHP eq neq if 标签
  15. 上班路上摔了一跤算工伤吗?
  16. 码元,数据传输速率,带宽,信噪比,信道容量
  17. 算法--分治法归并排序 python
  18. Base64解密算法、AES解密
  19. Swin Transformer代码讲解
  20. 卡位亚洲新门户,华为云泰国开服

热门文章

  1. C++ Socket UDP范例
  2. java定义一个接口shape_编写一个java应用程序,定义一个接口,包含一个方法areas(),在rectangle勒,squ...
  3. ethtool如何让接口闪灯_linux 判定那块网卡为eth0 eth0对应的物理网卡闪灯30秒
  4. 创建jira plugin插件、创建jira实例生成jar包总结
  5. 大厂 vs 小厂,我的亲身体验
  6. 如何去掉流氓网站http://www.2345.com/?177
  7. 云计算被视为继大型计算机、个人计算机、互联网之后的第4次IT产业革命,顺应了当前各行业整合计算资源和服务能力的要求(转)...
  8. matlab 三个向量数据绘制曲面图
  9. 移动发送短信接口测试(1)
  10. utf-8等编码方式汉字和英文各占据的字节数