豆瓣电影数据可视化项目(豆瓣电影大数据分析)
本篇文章给大家谈谈豆瓣电影数据可视化项目,以及豆瓣电影大数据分析对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、数据可视化的设计步骤有哪些?
- 2、数据可视化的16个经典案例
- 3、从电影网站爬取数据并进行可视化分析会用到哪些数据
- 4、数据分析项目包含哪些流程?
- 5、豆瓣电影数据分析
- 6、简书用户画像 之 如何挖掘用户的电影喜好
数据可视化的设计步骤有哪些?
1、需求分析
需求分析是大数据可视化项目开展的前提,要描述项目背景与目的、业务目标、业务范围、业务需求和功能需求等内容,明确实施单位对可视化的期望和需求。包括需要分析的主题、各主题可能查看的角度、需要发泄企业各方面的规律、用户的需求等内容。
2、建设数据仓库/数据集市的模型
数据仓库/数据集市的模型是在需求分析的基础上建立起来的。数据仓库/数据集市建模除了数据库的ER建模和关系建模,还包括专门针对数据仓库的维度建模技术。
3、数据抽取、清洗、转换、加载(ETL)
数据抽取是指将数据仓库/集市需要的数据从各个业务系统中抽离出来,因为每个业务系统的数据质量不同,所以要对每个数据源建立不同的抽取程序,每个数据抽取流程都需要使用接口将元数据传送到清洗和转换阶段。
4、建立可视化场景
建立可视化场景是对数据仓库/集市中的数据进行分析处理的成果,用户能够借此从多个角度查看企业/单位的运营状况,按照不同的主题和方式探查企业/单位业务内容的核心数据,从而作出更精准的预测和判断。
数据可视化的16个经典案例
[数据可视化]
本文编译自:Ross Crooks
数据可视化是指将数据以视觉的形式来呈现,如图表或地图,以帮助人们了解这些数据的意义。通过观察数字、统计数据的转换以获得清晰的结论并不是一件容易的事。而人类大脑对视觉信息的处理优于对文本的处理——因此使用图表、图形和设计元素,数据可视化可以帮你更容易的解释数据模式、趋势、统计数据和数据相关性,而这些内容在其他呈现方式下可能难以被发现。
数据可视化可以是静态的或交互的。几个世纪以来,人们一直在使用静态数据可视化,如图表和地图。交互式的数据可视化则相对更为先进:人们能够使用电脑和移动设备深入到这些图表和图形的具体细节,然后用交互的方式改变他们看到的数据及数据的处理方式。
我们必须用一个合乎逻辑的、易于理解的方式来呈现数据。但是,并非所有数据可视化作品的效果都一样好。那么,如何将数据组织起来,使其既有吸引力又易于理解?让我们通过下面的16个有趣的例子获得启发,它们是既注重风格也注重内容的数据可视化经典案例。
1:为什么会有“巴士群”现象
这里有一个关于复杂数据集的很好的例子,它看起来感觉像一个游戏。在这个例子里,Setosa网站为我们呈现了“巴士群”现象是如何发生的,即当一辆巴士被延迟,就会导致多辆巴士在同一时间到站。
只用数字讲述这个故事是非常困难的,所以取而代之的是,他们把它变成一个互动游戏。当巴士沿着路线旋转时,我们可以点击并按住一个按钮来使巴士延迟。然后,我们所要做的就是观察一个短暂的延迟如何使巴士在一段时间以后聚集起来。
2:世界上的语言
这个由DensityDesign设计的互动作品令人印象深刻,它将世界上众多(或者说,我们大多数人)语言用非语言的方法表现出来,一共有2678种。
这件作品可以让你浏览使用共同语言的家庭,看看哪些语言是最常用的,并查看语言在世界各地的使用范围。这是一种了不起的视觉叙事方法:将一个有深度的主题用一种易于理解的方式进行解读。
3:按年龄段分布的美国人口百分比
应该用什么方式去呈现一种单一的数据?这是一个令人信服的好榜样。
Pew Research创造了这个GIF动画,显示人口统计数量随着时间推移的的变化。这是一个好方法,它将一个内容较多的故事压缩成了一个小的动图包。此外,这种类型的微内容很容易在社交网络上分享或在博客中嵌入,扩大了内容的传播范围。
4:NFL(国家橄榄球联盟)的完整历史
体育世界有着丰富的数据,但这些数据并不总是能有效地呈现。然而,FiveThirtyEight网站做得特别好。
在下面这个交互式可视化评级中,他们对国家橄榄球联盟史上的每一场比赛计算“等级分” – – 根据比赛结果对球队实力进行简单的衡量 。总共有超过30,000个评级,观众可以通过比较各个队伍的等级分来了解每个队伍在数十年间的比赛表现。
5:Google Flights 上的美国感恩节
下面是将一段时间内在空中移动的物体进行可视化的好方法。这是由Google Trends驱动的项目,它跟踪感恩节前出发、到达和穿越美国的航班。
可视化始于当天很早的时间,随着时间的推移,像播放电影一样显示在全国各地飞行中的航班。不需要显示时间外的任何数字,观众即可以看到当天哪段时间是国际航班、国内航班以及往返于全国各地不同枢纽的航班的热门时间。
6:是什么真正造成了全球变暖?
我们都知道,“不要只简单地展示数据,讲个故事吧”。这正是彭博商业正在做的可视化 ——用互动的方式来讲述故事的来龙去脉。。
此图的关键是要反驳用自然原因解释全球变暖的理论。首先你会看到从1880年至今观测到的温度上升情况。为了使故事内容更加丰富,当你向下滚动时,这个可视化图会让你清楚的了解到相较于已被观测到的因素,造成全球变暖的不同因素到底有多少。作者希望观众能够得到非常清晰的结论。
7:在叙利亚,谁和谁在战斗?
许多不同的团体之间的关系可能令人很难理解 – 尤其是当有11个这样的团体存在的时候。这些团体之间有的结盟,有的敌对,反之亦然。这让人难以理解。
但是,Slate网站通过表格的形式和熟悉的视觉表达,将这些数据简化为一种简单的、易于理解和可交互的形式。观众可以点击任一张脸来查看双方关系的简要描述。
8:最有价值的运动队
这是通过叠加数据来讲述深层故事的一个典型例子。
这个交互由Column Five设计,受福布斯“2014年最具价值的运动队50强”名单得到的启发。但是它不仅将列表可视化,用户还可以通过它看到每支队伍参赛的时间以及夺得总冠军的数量。这为各队的历史和成功提供了更全面的概况信息。
9:美国风图
下面是一个类似感恩节航班的可视化图,除了图中显示的时刻,它还能实时显示美国本土的风速和风向。
它是直观设计的一个很好的案例:风速用线条移动的快慢来表示,方向通过线条移动的路径来表示。它会即时显示美国风向的总体趋势,无需任何数字,除非你在地图上点击鼠标。另外,使用时设定最多两个变量会使它更容易操作。
10:政治新闻受众渠道分布图
据Pew研究中心称,当设计师在信息内容很多又不能删的时候,他们通常会把信息放到数据表中,以使其更紧凑。但是,他们在这里使用分布图来代替。
为什么呢?因为分布图可以让观众在频谱上看到每个媒体的渠道。在分布图上,每个媒体的渠道之间的距离尤为显著。如果这些点仅仅是在表中列出,那么观众就无法看到每个渠道之间的对比效果。
11:著名创意人士的日程安排
这个数据可视化图是用奇特的想法描绘出的一个简单概念。这个表格利用Mason Currey的《日常惯例》一书中的信息展示了那些著名创意人士的日程安排,解读其时间和活动安排。这不仅是一个数据分析的例子(因为你可以通过单独的活动来浏览日程安排),也是一个品牌宣传的佳作。
12:今年发生了哪些新闻?
最好的数据可视化方式,就是用直观和美丽的方式传达信息。Echelon Insights致力于这一方式,将2014年Twitter上最受关注的新闻进行了可视化。
1亿8450万条推文是什么样子?就是如下图所示的艺术品。
13:问题的深度
当你想强调规模的时候,静态数据可视化是表达你的观点的极佳方式。下面这张来自《华盛顿邮报》的信息图长得令人难以置信…这是故意的。他们在图中展示了一架飞机可以探测到的深海信号是多么的深,通过比较飞机的探测深度与高层建筑、已知哺乳动物的最大深度、泰坦尼克号沉船的深度等。这是简单的视觉效果和颜色梯度的极佳使用方式。
最后,将数据添加到新闻报道中(文中为失踪的马航)是提供背景的好方式。
14:前沿预算
上述图表相对简单,以下是创造设计精致的、传递大量数据的图表的方法。秘诀何在?——用简单和干净的格式,便于读者理解数据。
这个由GOOD Magazine 和 Column Five制作的图表,解读了NASA的五年预算,显示资金将怎么花、花在哪里。此外,它还有一个主题设计,这真是一个全面成功的作品!
15: Kontakladen慈善年报
不是所有的数据可视化都需要用动画的形式来表达。当现实世界的数据通过现实生活中的例子进行可视化,结果会令人惊叹。设计师Marion Luttenberger把包含在Kontakladen慈善年报中的数据以一种独特的方法表现出来。
该组织为奥地利的吸毒者提供支持,所以Luttenberger就通过现实生活中的视觉元素来宣传他们的使命。例如,这辆购物车的形象表现出受助者每一天可以负担得起多少生活必需品。
16:奥地利太阳能年报
虽然有许多方法都能使数据可视化,但是其中,使用真实信息主体去创建数据可视化作品的做法非常了不起。这份来自Austria Solar的年度报告,通过在页面上使用太阳光感墨水,用真正的太阳能给公司数据赋予生命。
一句话总结:他们是天才。
从电影网站爬取数据并进行可视化分析会用到哪些数据
从电影网站爬取数据并进行可视化分析会用到的数据如下。
1、beautifulsoup、re、urllib库。
2、SQLite包,数据可视化方面主要用到flask框架、echarts和wordcloud等。
3、此类数据可以搭建简单的数据可视化网站。
数据分析项目包含哪些流程?
1、数据采集
了解数据采集的意义在于真正了解数据的原始面貌,包括数据产生的时间、条件、格式、内容、长度、限制条件等。
2、数据存储
无论数据存储于云端还是本地,数据的存储不只是我们看到的数据库那么简单。
3、数据提取
数据提取是将数据取出的过程,数据提取的核心环节是从哪取、何时取、如何取。
4、数据挖掘
数据挖掘是面对海量数据时进行数据价值提炼的关键。
5、数据分析
数据分析相对于数据挖掘更多的是偏向业务应用和解读,当数据挖掘算法得出结论后,如何解释算法在结果、可信度、显著程度等方面对于业务的实际意义,如何将挖掘结果反馈到业务操作过程中便于业务理解和实施是关键。
6、数据展现
数据展现即数据可视化的部分,数据分析师如何把数据观点展示给业务的过程。数据展现除遵循各公司统一规范原则外,具体形式还要根据实际需求和场景而定。
7、数据应用
数据应用是数据具有落地价值的直接体现,这个过程需要数据分析师具备数据沟通能力、业务推动能力和项目工作能力。
豆瓣电影数据分析
这篇报告是我转行数据分析后的第一篇报告,当时学完了Python,SQL,BI以为再做几个项目就能找工作了,事实上……分析思维、业务,这两者远比工具重要的多。一个多月后回过头来看,这篇报告虽然写得有模有样,但和数据分析报告还是有挺大差别的,主要原因在于:a.只是针对豆瓣电影数据分析太过宽泛了,具体关键指标到底是哪些呢?;b.没有一个确切有效的分析模型/框架,会有种东一块西一块的拼接感。
即便有着这些缺点,我还是想把它挂上来,主要是因为:1.当做Pandas与爬虫(Selenium+Request)练手,总得留下些证明;2.以豆瓣电影进行分析确实很难找到一条业务逻辑线支撑,总体上还是描述统计为主;3.比起网上能搜到的其他豆瓣电影数据分析,它更为详细,可视化效果也不错;
本篇报告旨在针对豆瓣电影1990-2020的电影数据进行分析,首先通过编写Python网络爬虫爬取了51375条电影数据,采集对象包括:电影名称、年份、导演、演员、类型、出品国家、语言、时长、评分、评论数、不同评价占比、网址。经过去重、清洗,最后得到29033条有效电影数据。根据电影评分、时长、地区、类型进行分析,描述了评分与时长、类型的关系,并统计了各个地区电影数量与评分。之后,针对演员、导演对数据进行聚合,给出产量与评分最高的名单。在分析过程中,还发现电影数量今年逐步增加,但评分下降,主要原因是中国地区今年低质量影视作品的增加。
另外,本篇报告还爬取了电影票房网( )1995-2020年度国内上映的影片票房,共采集4071条数据,其中3484条有效。进一步,本文分析了国内院线电影票房年度变化趋势,票房与评分、评价人数、时长、地区的关系,票房与电影类型的关联,并给出了票房最高的导演、演员与电影排名。
清洗、去重后,可以看到29033条数据长度、评分、评论数具有以下特点:
结合图1(a)(b)看,可以看到电影数据时长主要集中在90-120分钟之间,向两极呈现阶梯状递减,将数据按照短(60-90分钟),中(90-120分钟),长(120-150分钟),特长(150分钟)划分,各部分占比为21.06%, 64.15%, 11.95%, 2.85%。
结合图2(a)看,可以看到我们采集到的电影数据评分主要集中在6.0-8.0之间,向两极呈现阶梯状递减,在此按照评分划分区间:2.0-4.0为口碑极差,4.0-6.0为口碑较差,6.0-7.0为口碑尚可,7.0-8.0为口碑较好,8.0-10.0为口碑极佳。
这5种电影数据的占比分别为:5.78%, 23.09%, 30.56%, 29.22%, 11.34%
再将评分数据细化到每年进行观察,可以发现,30年内电影数量与年度电影均分呈反相关,年度均分整体呈现下降趋势,2016年电影均分最低,电影数量最多。
进一步做出每个年份下不同评级等级的电影数据占比,可以发现,近年来,评分在[2.0,6.0)的电影数据占比有着明显提升,评分在[6.0,7.0)的数据占比不变,评分在[7.0,10.0)的数据占比减少,可能原因有:
对照图5,可以发现,评分与时长、评论人数的分布大致呈现漏斗状,高分电影位于漏斗上部,低分电影位于漏斗下部。这意味着,如果一部电影的评论人数很多(特别是超过30w人观影),时长较长(大于120min),那么它大概率是一部好电影。
根据各个国家的电影数量作图,可以得到图6,列出电影数量前十的国家可得表格2,发现美国在电影数量上占第一,达到8490部,中国其次,达6222部。此外,法国,英国,日本的电影数量也超过1000,其余各国电影数量相对较少。这可以说明美国电影有着较大的流量输入,在中国产生了较大的影响。
进一步分析各国电影的质量,依据评分绘制评分箱线图可得图7,在电影数量排名前20的国家中:
接着我们可以探索,哪个国家的电影对豆瓣评分随年份下降的贡献最大,考虑到电影数量对应着评分的权重。根据上述各国的电影评分表现,我们可以猜测电影数量较多的国家可能对年度均分的下降有较大影响。于是,我们再计算出这些国家的年度电影均分,并与整体均分进行比较分析。
再作出中国大陆,中国台湾,中国香港的均分箱线图图9(a),可以看到,大陆电影均分低于港台电影,且存在大量低分电影拉低了箱体的位置。
分析相关性可得,大陆、香港、台湾电影年度均分与全部评分关联度分别为R=0.979,0.919,0.822,说明滤去台湾和香港电影,大陆电影年度均分的变化趋势与全部评分变化更接近。图9(b)可以进一步反映这一点。
可以看到,大部分类型集中在X×Y=[10000,30000]×[6.00,7.50]的区间范围内,剧情、喜剧、爱情、犯罪、动作类电影数量上较多,说明这些题材的电影是近三十年比较热门的题材,其中剧情类电影占比最多,音乐、传记类电影平均得分更高,但在数量上较少,动作、惊悚类电影评论人数虽多,但评价普遍偏低。
除此之外,还有两块区域值得关注:
根据类型对电影数据进行聚合,整理得到各类型电影评分的时间序列,计算它们与整体均分时间序列的相关性,可得表格4与图11,可以看到剧情,喜剧,悬疑这三种类型片与总分趋势变化相关性最强,同时剧情、喜剧类电影在电影数量上也最多,因此可以认为这两类电影对于下跌趋势影响最大,但其余类别电影的相关性也达到了0.9以上,说明几种热门的电影得分的变化趋势与总体均分趋势一致。
前面已经得知,中美两国电影占比最高,且对于均分时间序列的影响最大。在此,进一步对两国电影进行类型分析,选取几种主要的类型(数量上较多,且相关性较高)进行分析,分别是剧情,喜剧,爱情,惊悚,动作,悬疑类电影,绘制近年来几类电影的数量变化柱状图与评分箱线图可得图12,13,14,15。
对导演与演员进行聚合,得到数据中共有15011名导演,46223名演员。按照作品数量在(0,2], (2,5], (5,10], (10,20], (20,999]进行分组统计导演数量,可以发现,15009名导演中有79.08%只拍过1-2部作品,46220名演员中有75.93%只主演过1-2部作品。忽略那些客串、跑龙套的演员,数据总体符合二八定律,即20%的人占据了行业内的大量资源。
在此,可以通过电影得分、每部电影评论人数以及电影数目寻找优秀的电影导演与演员。这三项指标分别衡量了导演/演员的创作水平,人气以及产能。考虑到电影数据集中可能有少量影视剧/剧场版动画,且影视剧/剧场版动画受众少于电影,但得分普遍要高于电影,这里根据先根据每部电影评论数量、作品数量来筛选导演/演员,再根据电影得分进行排名,并取前30名进行作图,可得图17,18。
结合电影票房网( )采集到的3353条票房数据,与豆瓣数据按照电影名称进行匹配,可以得到1995-2020年在中国大陆上映的电影信息,分别分析中国内地电影的数量、票房变化趋势,票房与评分、评价人数、时长、地区以及类型的关系,此外还给出了不同导演与演员的票房表现以及影片票房排名。
如图19所示,国内票房数据与上映的电影数量逐年递增,2020年记录的只是上半年的数据,且由于受疫情影响,票房与数量骤减。这说明在不发生重大事件的情况下,国内电影市场规模正在不断扩大。
对电影数据根据类型进行聚合,绘制散点图21,可以发现:
提取导演/演员姓名,对导演/演员字段进行聚合,计算每个导演/演员的票房总和,上映电影均分、以及执导/参与电影数目进行计算,作出票房总和前30名的导演/演员,可得图22,23,图中导演/演员标号反映了票房排名,具体每位导演/演员的上映影片数量、均分、每部电影评价人数、平均时长与总票房在表5、表6中给出。
最后根据电影票房进行排名,得到票房排名前20的电影如表格7所示,可以看到绝大部分上榜电影都是中国电影,索引序号为3、10、12、14、18、19为美国电影,这也反映了除国产电影之外,好莱坞大片占据较大的市场。
本篇报告采集了1990-2020年间豆瓣电影29033组有效数据,从豆瓣电影的评分、时长、地区、类型、演员、导演以及票房等信息进行分析评价,主要有以下结论:
简书用户画像 之 如何挖掘用户的电影喜好
我在 《爬取百万页面 分析用户画像》 中分析了用户的书籍喜好,这里继续尝试通过影评文章的抓取、内容清洗、影评句子提取,建立机器学习情绪预测模型,挖掘分析用户对流行电影的喜好。
涉及的NLP(自然语言处理)知识点:
涉及的ML(机器学习)知识点:
电影的拍摄成本高、票价也不低,消费者投入的关注度和观看成本高(最终的投入成本是包括注意力投入、金钱投入、时间投入和感情投入)。
简单算下观看一部电影的成本(步骤):先看下预告内容,做下同期上映电影的比较,觉得导演、演员阵容都不错,下定决心要看了,跟男/女友/老婆 /老公/基友/闺密做推荐,推荐成功后去选座买票,观影当天说不定还得先吃个饭,饭后乖乖的在影院呆上90分钟(关键时刻还得憋尿),观影结束后指不定还得来个夜宵、开个房间探讨下人生什么的。。。
读一本书的成本(步骤):1.打开书/电子阅读器/手机;2. 读!
这样对比看一部电影比读一本书的投入成本高多了!
因此观众给出的反馈自然也比书籍会强烈一些,特别是满怀期待看完却发现是一部烂片,有种上当受骗的感觉。
因此对电影光是通过词频作为喜好度是不够的,用户可能反复的在骂呢。
所以需要引入多一个分析的因子:情绪。用户提及某个电影时的情绪是怎么样的,是积极愉悦、还是负面愤怒,加上这个才能有效判定用户对电影或者某个事物的喜好。
在豆瓣上,用户的评分就是最直接的情绪数值:5力荐,4推荐,3还行,2较差,1很差。
但在这类写作平台上,发布文章时是没有一个选项来填写分数,也没提供选择心情的选项。
“所言即其所思”,这是普遍人性。每个用户写下的文字表达想法,在字里行间都会不经意的使用一些情绪用词来表达,这些便是我可以获取的“原始数据”。
精准推荐!用户谈论得多的东西未必是TA所喜爱的,也许是TA痛恨的(比如说前任)。如果用户在自己大力差评某部电影的文章底部看到另一部相似烂片的推荐,推荐文案还写着“亲,我猜你还喜欢看这些”,估计这用户会有种吃了苍蝇刚吐出来发现迎面又飞来几只的感觉。
通过用户在讨论某事物时上下文的情绪分析,来判断对该事物的喜恶,将预测结果加入对事物的打分计算中,最后得出一个可量化、可计算的分数值,便是一个精准推荐系统的需要解决的问题。
理论上只需要一句话:要识别出文章中提及的电影,以及作者对该电影的评论,是好评还是差评,作为文章作者对该电影的喜恶,并根据评论的情绪强烈程度转化为喜恶程度即可。
那实际上,就要解决以下问题:
下面逐一细说。
我采集了上几个比较受欢迎的电影专题以及一个大V帐号文章(数据截止至采集数据时):
但由于对专题页面加了访问限制,每个专题只能访问到最新的200个列表页面,因而每个专题可获取2~3000篇文章,以此作为抽样数据样本。
要分析对电影的评价,首先就要获取到文章中提到电影名称有哪些,最简单的匹配规则便是提取书名号 《》 内的内容。
而实际获取到的电影名称真可谓“脏乱差”,有电影名、书籍名、文章名等,有些电影名称会用缩写引用(如《变1》、《复联》、《生化危机4/5/6》),或者中英文混合在一起(如《机器人总动员(wall-e)》),甚至还有错漏别字(如《那些年,我们一起追过的女孩》,多了个“过”字),以及包含中英文特殊标点空白符号等,例如:
因此需要进行一轮“数据大清洗”,我使用如下清洗策略:
其中“电影专用词典”,是通过采集了 「猫眼 影片总票房排行榜」 2000~2017年间上榜的所有电影,约有3000+部,如图:
再根据文章中所收集到的电影名称的候选文本,抓取「豆瓣网」的官方电影名字(遭遇了豆瓣业内闻名的反爬策略就不多说了),合并去重后约有8400多部。看一眼才发现好多电影连听都没听过,有些电影名称还挺有趣,以后有时间还可以做下电影名称的分析。
为了解决错别字,我通过文本相似性算法,在电影专用词典里找出与之最相似名称。
知名的相似算法有不少,如:
经过简单比较,我选择了其中表现最好的 jaro_winkler_distance
运用到文章内容上,可得到相似电影名称,感觉效果还可以:
构建一个Pipeline用于提取页面中电影名称,对单个页面测试效果如下:
运用到所有页面上:
至此完成了电影名称的提取、清洗,得出每篇文章提及的电影名称,如图:
判断一篇文章的情绪,最简单的做法是通过提取所有情绪词来统计下词频及其权重可得到一个粗糙的结果,但这样的结果对“影评”类文章不是很准确。
根据观察,一篇电影评论文章中,往往会有大段的电影情节描述,然后夹杂一两句评论。而有些电影本身剧情就是比较负面、阴暗的(如灾难片类的),但影片本身质量很高(如《釜山行》,豆瓣评分8.2),如果文章内容包含大量的剧情描述,那么得到关键词会偏向于负面情绪,并不能用于表达出作者对电影的喜好情绪。
因此我使用了这样的提取策略:
评论句子提取的结果示例如下:
这样的策略对有些内容不是很适用,例如这样的标题:《同样是豆瓣9.2分,它或许比《摔跤吧!爸爸》更深》,这是典型的“借势营销”型文案,文章内容中推介的是另外一部韩国电影《熔炉》,而时下《摔跤吧!爸爸》正热,标题中带上这个会更吸引用户点击。
另外一个思路是对文章进行摘要提取,然后对摘要进行情绪识别。而对于文章的主题提取,可以使用在ML算法中的用于解决 主题模型 问题的算法(如LDA),但不确定是否适合影评这种混合了大量剧情描述的文章内容。
得到相关评论文本后,便可对文本进行分词及情绪识别,这里有两种做法,一是使用带有情绪情感度的专业词典,配合专有算法;另外一种是使用机器学习算法。
一开始我使用了大连理工大学的《大连理工情感词汇本体库》,是目前最权威的中文情绪词典,共含有情感词共计27466个,包含了词语的词性种类、情感类别、情感强度及极性等信息,例如:
中文情感词汇本体的情感分类体系是在国外比较有影响的Ekman的6大类情感分类体系的基础上构建的。在Ekman的基础上,词汇本体加入情感类别“好”对褒义情感进行了更细致的划分。最终词汇本体中的情感共分为7大类21小类,如图:
把情感词典加入分词词典,对候选每个句子进行分词,得出情感词组,并累加每个情感词的强度值作为句子的情感值。
但经过测试后,发现预测效果并不理想,究其原因发现是情感词典中命中的词语太少,在句子中得不到相关词语,也就无法判断情感极性和强度。
使用情感词典的测试结果:
而专业词典的扩展需要专业领域知识,扩展起来很困难,我目前没找到更新的专业词典,国内这块的资料相当匮乏,而国外有个知名的SentiWordNet库,中文NLP研究的难度系数可想而知。
鉴于情感词典的资源限制,决定尝试使用机器学习来对文本做正、负面情绪预测。
1). 构建分词词典:
分词需要构建专用领域的词典,这样得到的分词结果才会更精确。
因为只需要有正负情感类别、不需要有情感强度及极性等信息,我使用了网络上公开的一些情感词典,:
合并、清洗和去重后,最终构建出了 14000+ 个词的积极情绪词典, 18000+ 个词的消极情绪词典。
积极词典:
消极词典:
2). 准备训练语料
从网上搜集到几个带有积极、消极的标注的评论语料数据集,分别包含了书籍、DVD、音乐、购物领域的各有4000条评论,如下图:
可惜没找到中文影评相关的语料,但找到 国外英文的影评语料 ,对,英文资料很丰富。。。
3). 训练模型
由于是文本型特征,分类算法上选择了 朴素贝叶斯 ,把数据分为2份,一半训练,另一半做测试。
使用 jieba 分词工具,对文本进行分词得到候选词组,把得到的词组作为特征输入来训练情绪预测模型。
训练后的模型测试结果如下:
训练后的模型在书籍、音乐、影碟及购物评论的语料上都有不错的效果。
在提取出的影评短句上测试:
又是“无聊”、“又俗又傻”而一个“但”字就反转了情绪,真是难为分类器了:
经过反复对比实验,发现语料的质量决定了模型的精度,而语料的扩展对比扩展专业词典却容易多了。例如几年前都没有“ 因吹斯汀 ”这些网络流行词,更不知道它代表是正面情绪,以后只要不断更新相关领域的语料库来重新训练则可得到更精确的模型。
俗话说“是骡子是马拉出来遛遛”。
得到一个预测情绪的模型后,便可对影评文章进行预测,但预测的结果是否准确?准确率又有多高?这又是个问题。
每当事情陷入停滞,我就会想起日本漫画大师安达充说过“当故事情节发展不下去的时候,加入一个新角色,是最简单的做法”。
这时需要祭出一个“旁证”了。这所谓的“旁证”,也就是目前大家比较认可的电影评分网站——豆瓣网。
大家都知道豆瓣网上的电影用户通过打星(5力荐,4推荐,3还行,2较差,1很差),转换得出的10分制的评分,我们可简单把1 4.9分视作负面评价、5 10分视作正面评价,没有分数的视作中性评价。再把豆瓣的评价结果视作大部分人认同的结果,当然这样肯定是有偏差的。
大胆假设,小心求证,先试试看吧。
根据电影名词典再次去抓取豆瓣网上的电影信息,这次包含了电影分数::
使用获取到的电影专题『电影院』文章内容测试,结果如下:
1048篇中,豆瓣评分结果与模型预测符合的有974篇,准确率是92.9%,WOW!真的这么准吗?
看下详细结果,豆瓣评分是正面的有1022条,预测对了973篇,例如:
而豆瓣评分是负面的有28条记录,而模型只预测出1篇是负面的:
真的是模型预测错了吗?
从负面例子中抽样看看模型分解的结果:
评论《麻烦家族》(豆瓣评分4.8)的:
从自动摘要出来的句子来看,实际上文章作者表现出正面情绪,模型预测为正面,预测正确 😊。
再看评论同一部电影的另外一个文章的评论:
作者显然是给了个差评,但模型给了出的预测是正面,预测错误 😞。
负例的预测准确率低,有两个原因,一个是豆瓣评分正负标准的阀值设定不够精准,二是训练数据不平衡。
之前使用的阀值策略是:“简单把1 4分视作负面评价、5 10分视作正面评价,没有分数的视作中性评价”。
我猜测在4~5分这个区间应该是灰度地带,正负面评论都会有。为了验证这个猜想,使用获取到的所有豆瓣电影分数,导入数据分析工具中,排除掉没有分数的条目后得到6500+条电影数据,其中最低是2.1,最高是9.7。
查看评分分布的直方图与比例饼图:
调整区间阀值,把 2.1-4.9 划分为一个区间,系统自动分成了3组分值:
发现5分以下电影仅占12%。
从评分分布结果看,在上大部分人写文章是针对高分(好评)电影为主,低分(差评)电影的文章数量很少,从提取出来的数据量看,两者比率约为100:3。
训练数据不平衡导致正例过拟合,而负例欠拟合。
要解决数据不平衡问题,可以重新采样训练集。有两种方法使不平衡的数据集来建立一个平衡的数据集——欠采样和过采样,解释如下:
由于训练数据不多,我使用了 过采样 中的自举方案。我将另外一个的电影专题『影视天堂』中模型预测结果与豆瓣评分结果一致的内容作为训练数据集来强化训练模型:
然后再对电影专题『电影院』测试一次:
负例的准确率改善了一些些,这说明效果是有的,以后只需继续获取到新的数据再“喂”给模型,模型预测结果会越来越精准。
至此,得到一个不算成熟的电影情绪预测模型,可以用来做一些有趣的统计分析了。
将『影视天堂』专题的分析结果在数据分析工具上进行数据可视化展示,得到一个「长尾图」:
从报表中可得到这些信息:
注1:严格来说《欢乐颂》不是电影而是电视剧作品,在用豆瓣网的数据构建电影词典时我没有做严格区分
注2:专题的数据获取是在5月份完成的,以及专题的最新收录文章有访问限制,无法获取到旧的文章,因此得到的当时热门影视作品的影评,从而呈现出信息跟当时热播作品比较相关
再对先前获取到的 1万个用户的近60万篇文章内容 ,运行相应的Pipeline进行电影情绪数据的提取。
可视化数据后得到图表:
现在可以看看,上用户给予好评的电影有哪些,使用「词云图」展示如下:
用户给予差评的电影有哪些:
现在也可以精准了解每一个用户的电影口味了,以 『毒舌电影 - 』 为例子:
注3:本文发表时上“毒舌电影”经历过被封事件后已改名为“Sir电影”;专题“影视天堂”已改名为“电影”
以后做电影个性化推荐可就不要推荐错了 😉。
关于豆瓣电影数据可视化项目和豆瓣电影大数据分析的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。