ELK 可视化分析热血电影《长津湖》15万+影评

1、《长津湖》观后

2018 年有了孩子后,近 3 年没有再看过电影。

念于《长津湖》的确大热,我对战争片心念神往、对中国近现代史非常好奇,加上老婆的男神段奕宏参演。一拍即合,我俩在国庆假期的最后一天看了这部鸿篇巨制、热血催泪电影。

f15e5ff7f0fdc5e7abc6294860fc1d6c.png

《长津湖》电影海报

宏大的战争场面、天壤之别的中美装备、物质条件差异、零下40度的恶劣的环境这些都已深深的印在我的脑海里。电影相对真实的还原了历史,这些历史是眼睛可以看到的,耳朵可以听到的,恰是之前学生阶段无法学到的或学的不够深刻的地方。

中学阶段学过魏巍的《谁是最可爱的人》,当时是全篇背下课文的。但是:我刚才自己又逐字逐句完整的读了一遍,不一样、完全不一样......

边读边浑身起了鸡皮疙瘩,之前的懵懂、不懂现在全懂了,之前的死记硬背现在全都理解了。

思绪万千也感慨万千......

电影里的雷公、伍千里、伍万里等是最可爱的人,数以百万的志愿军战士都是最可爱的人。

前辈们的出生入死,就是为了我们不再打仗。

没有他们,就不会有我们的万家灯火。

上面仅是我的一点感触,大家的反馈如何呢?

本文结合 ELK(Elasticsearch、Logstash、Kibana)实现了《长津湖》15万+影评数据的可视化分析。

2、动手之前我的几点疑问与思考

Q1:数据从哪里来?

Q2:原始数据就够了吗?需不需要清洗?如何清洗?

Q3:有哪些字段?如何建模?

Q4:做哪些维度的分析?

Q5:如何做可视化分析?

这么一分析,就知道:数据是大前提,没有了数据的基础,清洗、建模、可视化分析都是“空中楼阁”。

如果从一个小项目的角度出发,我的初步构想数据流图如下:

446763fb8cf16c12d75e9d7d424ed8b8.png

其中:

  • 数据采集:解决数据源头问题,得到初始数据。

  • 数据清洗:确保 Logstash 环节能同步,做必要的特殊字符清洗处理。

  • 数据同步:同步选型logstash_input_csv,logstash input、output、filter 环环相扣,协同搞定。

  • 数据存储:基于建模实现数据落地存储,方便检索、聚合、后续可视化分析。

  • 数据分析:实际分析哪些维度可以可视化,有没有偏差,有偏差需要调整建模,重新导入或者 reindex 数据。

  • 数据可视化:基于数据存储的特定维度,实现可视化分析。待可视化分析的维度,在建模阶段就要敲定。以上,大的框架已初步搞定,剩下就是各个小模块的填充工作。

3、影评数据获取可行性分析

如前所述,数据分析的前提是:先拿到数据。

可供采集选型:mao眼、豆ban等。由于豆ban评论字段较少,可供分析的维度自然少一些,所以选择mao眼影评数据。

23580e6258f99b6eb0770ef5b31dfd47.png

站在 N 多前辈mao眼影评采集 + 分析的基础上,猫眼有 API 能拿到全量的 json 形式的评论数据,基本确立了可行性。

确立可行性之后,要看能拿到哪些字段,以便后续建模和可视化分析。

初步公开可获取的可用字段如下:

  • comment_id:评论id,全局唯一。

  • approve:评论点赞数。

  • reply:评论回复数。

  • comment_time:评论时间。

  • sureViewed:是否真实观看。

  • nickName:昵称。

  • gender:性别。

  • cityName:城市。

  • userLevel:用户等级。

  • user_id:用户id。

  • score:评分。

  • content:评论内容。

cai 集过程非本文重点,所以略过。

初始 CSV 数据如下图所示:

a7cff64be728d307f0124b4af59c74e6.png

4、可分析数据字段及预期可视化内容

4.1 评论时间走势图

  • 横轴:comment_time。

  • 纵轴:评论数。

4.2 性别比例饼图

  • 基于字段:gender

4.3 城市分布Top图

  • 横轴:人数。

  • 纵轴:城市。

4.4 用户等级饼图

  • 基于字段:userLevel。

4.5城市地理位置坐标图城市分布图

  • 基于字段:cityName。

  • 遇到问题:没有坐标信息,如何通过地图可视化?

4.6 评分饼图

  • 基于字段:score。

  • 遇到问题:字符串类型不能处理,需要类型转换,如何做?

4.7 评论内容词云

  • 基于字段:content

  • 遇到问题:content 正文内容如何形成词云呢?

4.8 评论点赞+再评论混合排行榜

  • 基于字段:approve。

4.9 情感分析

  • 遇到问题:需要根据content 生成情感值

  • 后面再扩展

5、数据清洗

5.1 采集环节清洗

比如:数据要基于键值评论 id 去重,以确保避免数据重复。

  • 数据同步环节清洗。

比如:去掉 message 字段,避免 ES 端重复存储。

比如:csv 中特定的引号等特殊字符要处理掉。

比如:csv 格式要逐行规范,避免同步大量报错。

5.2 数据预处理清洗

下面的建模、预处理小节详细介绍。

6、数据建模

6.1 数据建模的重要性

数据建模非常重要,建模起到了承上启下的衔接作用。

  • 一方面:csv 的数据要逐个字段映射为 ES 的字段。

字段类型设置要保证全局可用、支持未来可扩展。

重复建模需要 reindex 操作,数据量越大,时间成本越高。

  • 另一方面:可视化部分要基于 ES 字段。

ES 字段设置的不规范,会导致后面数据没法进行可视化或者效果不好。

6.2 遇到问题及解决方案

  • Q1:content 正文内容如何形成词云呢?

解决方案:content 这么大的字段,通常设置为:text 类型。

但是,咱们需要可视化词云,所以需要在 text 基础上,开启:fielddata。

类似词云分词,之前文章也分析过,所以轻车熟路。

  • Q2:已有字段不足以支撑可视化分析?

解决方案:加字段,新字段数据结合预处理添加。

新增字段包括:

(1)director tag 字段 用途:形成导演词云。

(2)starring 明星 tag 字段 用途:形成明星词云。

(3)location 坐标字段 用途:绘制坐标锚点。

  • Q3:日期字段类型多且不一致导致同步报错,如何解决?

解决方案:Mapping 建模全量列举。

这个 bug 解决花费近小半天时间。

最终,Mapping 敲定如下所示:

PUT changjinhu_movie_index
{"settings": {"index": {"default_pipeline": "auto_process"}},"mappings": {"properties": {"comment_id": {"type": "keyword"},"approve": {"type": "long"},"reply": {"type": "long"},"comment_time": {"type": "date","format": " yyyy-M-d H:m || yyyy-M-dd H:m || yyyy-M-dd H:mm || yyyy-M-d HH:mm || yyyy-M-dd HH:mm ||yyyy-MM-dd HH:mm || yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"},"sureViewed": {"type": "keyword"},"nickName": {"type": "text","analyzer": "ik_max_word","fields": {"keyword": {"type": "keyword"}}},"gender": {"type": "keyword"},"cityName": {"type": "text","analyzer": "ik_max_word","fields": {"keyword": {"type": "keyword"}}},"userLevel": {"type": "keyword"},"user_id": {"type": "keyword"},"score": {"type": "keyword"},"score_level": {"type": "integer","fields": {"keyword":{"type":"keyword"}}},"director": {"type": "keyword"},"starring":{"type":"keyword"},"content": {"type": "text","analyzer": "ik_max_word","fields": {"smart": {"type": "text","analyzer": "ik_smart","fielddata": true},"keyword": {"type": "keyword"}}},"location": {"type": "geo_point"}}}
}

7、数据预处理

基础清洗有了,建模有了,重头戏就放在数据预处理上了。

刚才也提及:我们不止是基于 csv 已有的字段做分析,而是会扩展了很多字段。

那么面临问题是:新扩展字段的数据怎么来?

  • director tag 字段、starring 明星 tag 字段

最后的呈现不能全局搜索明星和导演形成词云,效率太低。

解决方案:借助 ingest 管道预处理,提前给满足给定条件的数据打上明星和导演的标记。

举例如下,借助 painless 脚本实现。

if(ctx.content.contains('易烊千玺') | ctx.content.contains('易烊') | ctx.content.contains('千玺')){ctx.starring.add('易烊千玺')}
  • location 坐标字段

需要借助城市名称到城市经纬度坐标的映射关系,添加坐标字段。

这里当然可以在 csv 层面通过遍历添加或者在 ES 端通过 update_by_query 添加。

最后,我选择在 ingest 预处理环节添加,办法相对笨一些,但是效果不错,达到预期。

代码有几百行,篇幅原因,此处省略。

至此,我们就扫清了一切数据层面的障碍,接下来就是同步导入数据、数据分析&数据可视化了。

同步中规中矩,借助:logstash_input_csv 实现。

  • input csv 配置。

  • filter 添加列字段。

columns => ["comment_id","approve","reply","comment_time","sureViewed","nickName","gender","cityName","userLevel","user_id","score","content"]}
  • output es 集群配置。

logstash 同步环节截图:

c39ee579282df8ee318dcb91da2bbc5a.png

8、Kibana 可视化分析

8.1 基于城市名称经纬度坐标的可视化

383a65cba8ff3ea5923e671945bb7a02.png

红球越大,代表观影人数阅读。

由多到少依次为:北京、深圳+广州、成都+重庆、上海等。

4112d3018b4f6a225471a5c160e83a9c.png

和下面的基于城市名称的统计结果一致。

8.2 总数据量统计图

7276ff335e3ee24662d30cad998b9b0f.png

15 W+的评论数据。

8.3 评论时间走势图

cf5457171bcdf62730ab1149cb7a14b4.png

可以看出来,存在超前观看情况,9月底就有评论。

10 月1 日 迎来第1高峰,10 月 5 日迎来第2高峰。

8.4 主演词云和评论次数统计图

8d079fb619b7e817593216a832b9ead3.png

c228df3fbd9a9cca527b610f394ebba3.png

无可争议,易烊千玺作为顶级流量,关注度最高。在雷公和吴京之间关注高的是雷公。

至少说明:胡军主演的雷公深入人心。

我是在“沂蒙山小调”出来之后,哭成泪人的,太感人了。

8.5 导演词云

dd79756b330aebfe1fdba09f5a773899.png

陈凯歌导演排在第一位,他的关注度也是最高的。

林超贤和徐克导演比较,林超贤导演的关注度要高一些。

8.6 评分统计

fb45b1792e5e88f1ca7b1484b47709f9.png

实现的时候,4分、4.5分统计为 4。

可以看出:4分之上的比率为:94.59%。

基本对应评分:9.5 分。

e76c746b84d81fe71171b43bbe3f3425.png

8.7 用户等级统计

04cef0680c3beb3f1b4d8c982ff50c68.png

70.68% 的处于2级。

8.8 最多点赞和最多评论叠加用户信息图

5ae313d3a2ee6132f3d38d482da6ff65.png

此处kibana 有文字叠加效果,看着像是bug。

8.9 总评论词云

03f466a7c3ef2de7b379cca6fb030ce4.png

电影好不好,观众说了算。

《长津湖》实至名归,票房破 50 亿是最好的证明。观众的评论最多的是:震撼、好看、值得、致敬、推荐、吾辈、铭记等。

这里在处理词云的时候,吸取之前的教训,使用:ik_smart 粗粒度分词。

并且手动过滤掉一些单字“噪音“分词,确保更直观,相对真实的反应群众的呼声。

整体效果图:

64d8f4de9ccd6f07bfdfea6582e7016e.png

4c33f4d0ace02b19c70d2406830092de.png

e5a720688322dcc398a50aac9c377b38.png

9、小结

从构思到实现前后断断续续2个周的时间,中间清洗、预处理花费时间比较多。

类似影评分析国内基本用 python 结合 echarts 居多,而强大的 ELK 基本都能覆盖到,本文做了初步验证。

大家有好的想法也欢迎留言交流。

最后,我想以《谁是最可爱的人》中的一段话结束本篇文章,算作是对先辈们的缅怀,正如《长津湖》宣传海报所说:“如今繁华盛世、如您所愿”。

“亲爱的朋友们,当你坐上早晨第一列电车驰向工厂的时候,当你扛上犁耙走向田野的时候,当你喝完一杯豆浆、提着书包走向学校的时候,当你坐到办公桌前开始这一天工作的时候,当你往孩子口里塞苹果的时候,当你和爱人一起散步的时候……朋友,你是否意识到你是在幸福之中呢?你也许很惊讶地说:“这是很平常的呀!”可是,从朝鲜归来的人,会知道你正生活在幸福中。请你意识到这是一种幸福吧,因为只有你意识到这一点,你才能更深刻了解我们的战士在朝鲜奋不顾身的原因。朋友!你是这么爱我们的祖国,爱我们的伟大领袖毛主席,你一定会深深地爱我们的战士,——他们确实是我们最可爱的人!”

推荐

1、重磅 | 死磕 Elasticsearch 方法论认知清单(2021年国庆更新版)

2、Elasticsearch 7.X 进阶实战私训课(口碑不错)

3、项目实战 01:将唐诗三百首写入 Elasticsearch 会发生什么?

f8c5fe4380b6d6b26d91e2af96552156.png

更短时间更快习得更多干货!

已带领70位球友通过 Elastic 官方认证!

中国仅通过百余人

f406224f84cd0978b0e4bf760b7d195e.gif

比同事抢先一步学习进阶干货!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/52615.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python爬取百部电影数据,我分析出了一个残酷的真相

2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线…

214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧

大家好,我是徐公,六年大厂程序员经验,今天为大家带来的是动态心形代码,电视剧 《点燃我温暖你》同款的,大家赶紧看看,拿去向你心仪的对象表白吧,下面说一下灵感来源。 灵感来源 今天&#xff…

ChatGPT提示词分享1/100 写作助手

作为一名中文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性,同时分解长句,减少重复,并提供改进建议。请只提供文本的更正版本,避免包括解释。请从编辑以下文本开始:[文章内容…

家庭教育的重要性,家庭教育是一切教育的基石

在孩子整个教育的过程中,学校教育是处于主导地位的,而家庭教育起着关键的作用。 家庭教育,是国民教育体系的重要组成部分,是社会、学校教育的基础、补充和延伸。家庭教育伴随人的一生,影响人的一生,对一个…

关注家庭教育-父母对子女的期望

关注家庭教育 - 孩子有自己的追求 文章目录 关注家庭教育 - 孩子有自己的追求简要正文期望家庭教育公众号 简要 人对自己的子女都免不了有一些期望。我们对子女实际上只能存品德方面的期望,因为品德它是放之四海而皆准的。你可以希望你的小孩以后长大待人很热忱&am…

如何才能做好家庭教育?家庭教育的五个主要方面

家庭教育的重要性家庭教育自古以来就受到人们的关注,但近年来在中国被作为一门学科来研究。这是时代发展、人才需求、人民整体素质提高必须涉及的问题。在这里,我们和家长一起探讨家庭教育的重要性,让家庭、社会、教育部门共同承担起教育下一…

家庭教育中如何使用批评教育?

孩子做错了事,作为父母,你知道应该怎么批评孩子吗?在家庭教育中,如果批评用得不好,就会比较麻烦,会严重限制孩子的发展。 在一次线下活动中,我看到一个妈妈带着孩子,准备进行乐器表演&#xff…

使用tushare大数据平台对几种股票因子进行计算

写在前面 去年七月,笔者开始接触买入股票,近一年下来,投入的的钱亏了一半,股票市场不是基金市场,其中的残酷给我这个初来乍到的年轻人上了一课。当时,我就在想,买卖股票是否能够赚钱&#xff0c…

利用tushare获取股票数据-V2 +股票数据分析

一、利用tushare获取股票数据 上次利用tushare的API获取了一部分的数据,感觉不够齐全,所以现在更新程序 import tushare as ts import pandas as pdpro ts.pro_api() data pro.query(stock_basic, exchange, list_statusL, fieldsts_code) #实例化一个…

免费获取股票历史交易数据方法与代码获取股票实时数据方法集合

现在网上有越来越多开源的股票数据的获取方法,言简意赅,小编在这里提供2种方法去获取股票数据,第一种呢还是针对于所有的用户,通过使用第三方平台提供的方法来获取到所需要的股票数据。 方法一:使用免费的网站进行 详…

获取股票交易数据的Tushare的使用方法

博客:https://www.cnblogs.com/DreamRJF/p/8660630.html 以前不知道怎么从网上直接获取数据,都是从交易软件上下载数据,也只有个别的软件才能下载,例如通达信可以导出数据,现在学到了一种新的方法,利用tush…

四万字歌词分析:那些年,我们一起追的五月天到底在唱什么?

大数据文摘出品 作者:蒋宝尚、曹培信 你见过自带荧光棒、中途大合唱、放完不离场的电影观众么? 如果你去电影院看了《五月天人生无限公司》,那么,你一定明白文摘菌在说什么。 如果你还没有看过,文摘菌这里弱剧透一下&a…

歌词生成(一)-SongNet简述

歌词生成相较于普通文本生成,需要配合特定的乐曲,并演唱。因而要求,每句歌词演唱的长度正好合拍,即不同曲子,每句歌词的字符个数是要受限制于乐曲。 本文暂不考虑曲配词问题,只是将问题抽象为,…

Android 开源歌词控件 LyricViewX

Android 开源歌词控件 LyricViewX 开源地址 Github https://github.com/Moriafly/LyricViewX LyricViewX 是一个美观的安卓歌词控件。 基于 LrcView 设计。 效果展示 Dso Music Github https://github.com/Moriafly/DsoMusic 双语 拖动 单语 比较与 LrcView 100% Kotlin…

如何获取LRC歌词

在日常的剪辑或者是其他情况下,需要使用LRC歌词,不需要下载新的杂门软件就能获取lrc歌词,真的很心动了,这里以网易云音乐为例: 1、打开网易云音乐网页版,找到需要的歌词 2、按F12键,选择 Netwo…

从ChatGPT等大模型的兴起,看未来计算芯片的发展趋势

欢迎关注软硬件融合公众号: 编者按 ChatGPT的火爆,直接引爆了大模型的繁荣,也使得NVIDIA GPU供不应求。 从发展的角度看,GPU并不是大模型最高效的计算平台。 GPT等大模型为什么没有突破万亿参数?核心原因在于在现在的G…

GPU和CPU芯片区别:为何要用GPU挖矿?

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是…

2023全云在线联合微软AIGC专场沙龙:人工智能与企业创新,促进创造力的数字化转型

6月29日,由全云在线平台和微软联合主办的人工智能与企业创新:促进创造力的数字化转型——2023AIGC微软专场沙龙在广州天河区正佳万豪酒店举行。 关于2023AIGC微软专场沙龙 GPT翻开了AGI新的一页,也翻开了各行各业的新篇章。 2022年11月30日…

呼吁暂停 GPT-5 研发的马斯克,转身抢购 1 万个 GPU,为 Twitter 大模型做准备!...

整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 曾不止一次地支持 AI 威胁论、曾与 OpenAI 分道扬镳、曾怒批 ChatGPT 唤醒人工智能、曾联合发起公开信,呼吁全球实验室应停止训练比 GPT-4 更强大的模型...... 毫无疑问,曾被 Fa…

个人掏5000万美元、获2.3亿美金认购,造中国版OpenAI,45岁前美团联合创始人王慧文再创业!...

整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 「即便只有一个人,我也要出发」,2023 年 2 月 13 日,原美团联合创始人王慧文在社交媒体平台郑重地说道。 这一次他的目光不再是聚焦在社交关系网络平台、二手房网站、…