1、《長(zhǎng)津湖》觀后2018 年有了孩子后,近 3 年沒(méi)有再看過(guò)電影。 念于《長(zhǎng)津湖》的確大熱,我對(duì)戰(zhàn)爭(zhēng)片心念神往、對(duì)中國(guó)近現(xiàn)代史非常好奇,加上老婆的男神段奕宏參演。一拍即合,我倆在國(guó)慶假期的最后一天看了這部鴻篇巨制、熱血催淚電影。 《長(zhǎng)津湖》電影海報(bào) 宏大的戰(zhàn)爭(zhēng)場(chǎng)面、天壤之別的中美裝備、物質(zhì)條件差異、零下40度的惡劣的環(huán)境這些都已深深的印在我的腦海里。電影相對(duì)真實(shí)的還原了歷史,這些歷史是眼睛可以看到的,耳朵可以聽(tīng)到的,恰是之前學(xué)生階段無(wú)法學(xué)到的或?qū)W的不夠深刻的地方。 中學(xué)階段學(xué)過(guò)魏巍的《誰(shuí)是最可愛(ài)的人》,當(dāng)時(shí)是全篇背下課文的。但是:我剛才自己又逐字逐句完整的讀了一遍,不一樣、完全不一樣...... 邊讀邊渾身起了雞皮疙瘩,之前的懵懂、不懂現(xiàn)在全懂了,之前的死記硬背現(xiàn)在全都理解了。 思緒萬(wàn)千也感慨萬(wàn)千...... 電影里的雷公、伍千里、伍萬(wàn)里等是最可愛(ài)的人,數(shù)以百萬(wàn)的志愿軍戰(zhàn)士都是最可愛(ài)的人。 前輩們的出生入死,就是為了我們不再打仗。 沒(méi)有他們,就不會(huì)有我們的萬(wàn)家燈火。 上面僅是我的一點(diǎn)感觸,大家的反饋如何呢? 本文結(jié)合 ELK(Elasticsearch、Logstash、Kibana)實(shí)現(xiàn)了《長(zhǎng)津湖》15萬(wàn)+影評(píng)數(shù)據(jù)的可視化分析。 2、動(dòng)手之前我的幾點(diǎn)疑問(wèn)與思考Q1:數(shù)據(jù)從哪里來(lái)? Q2:原始數(shù)據(jù)就夠了嗎?需不需要清洗?如何清洗? Q3:有哪些字段?如何建模? Q4:做哪些維度的分析? Q5:如何做可視化分析? 這么一分析,就知道:數(shù)據(jù)是大前提,沒(méi)有了數(shù)據(jù)的基礎(chǔ),清洗、建模、可視化分析都是“空中樓閣”。 如果從一個(gè)小項(xiàng)目的角度出發(fā),我的初步構(gòu)想數(shù)據(jù)流圖如下: 其中:
3、影評(píng)數(shù)據(jù)獲取可行性分析如前所述,數(shù)據(jù)分析的前提是:先拿到數(shù)據(jù)。 可供采集選型:mao眼、豆ban等。由于豆ban評(píng)論字段較少,可供分析的維度自然少一些,所以選擇mao眼影評(píng)數(shù)據(jù)。 站在 N 多前輩mao眼影評(píng)采集 + 分析的基礎(chǔ)上,貓眼有 API 能拿到全量的 json 形式的評(píng)論數(shù)據(jù),基本確立了可行性。 確立可行性之后,要看能拿到哪些字段,以便后續(xù)建模和可視化分析。 初步公開(kāi)可獲取的可用字段如下:
cai 集過(guò)程非本文重點(diǎn),所以略過(guò)。 初始 CSV 數(shù)據(jù)如下圖所示: 4、可分析數(shù)據(jù)字段及預(yù)期可視化內(nèi)容4.1 評(píng)論時(shí)間走勢(shì)圖
4.2 性別比例餅圖
4.3 城市分布Top圖
4.4 用戶等級(jí)餅圖
4.5城市地理位置坐標(biāo)圖城市分布圖
4.6 評(píng)分餅圖
4.7 評(píng)論內(nèi)容詞云
4.8 評(píng)論點(diǎn)贊+再評(píng)論混合排行榜
4.9 情感分析
5、數(shù)據(jù)清洗5.1 采集環(huán)節(jié)清洗比如:數(shù)據(jù)要基于鍵值評(píng)論 id 去重,以確保避免數(shù)據(jù)重復(fù)。
比如:去掉 message 字段,避免 ES 端重復(fù)存儲(chǔ)。 比如:csv 中特定的引號(hào)等特殊字符要處理掉。 比如:csv 格式要逐行規(guī)范,避免同步大量報(bào)錯(cuò)。 5.2 數(shù)據(jù)預(yù)處理清洗6、數(shù)據(jù)建模6.1 數(shù)據(jù)建模的重要性數(shù)據(jù)建模非常重要,建模起到了承上啟下的銜接作用。
字段類(lèi)型設(shè)置要保證全局可用、支持未來(lái)可擴(kuò)展。 重復(fù)建模需要 reindex 操作,數(shù)據(jù)量越大,時(shí)間成本越高。
ES 字段設(shè)置的不規(guī)范,會(huì)導(dǎo)致后面數(shù)據(jù)沒(méi)法進(jìn)行可視化或者效果不好。 6.2 遇到問(wèn)題及解決方案
PUT changjinhu_movie_index 7、數(shù)據(jù)預(yù)處理基礎(chǔ)清洗有了,建模有了,重頭戲就放在數(shù)據(jù)預(yù)處理上了。 剛才也提及:我們不止是基于 csv 已有的字段做分析,而是會(huì)擴(kuò)展了很多字段。 那么面臨問(wèn)題是:新擴(kuò)展字段的數(shù)據(jù)怎么來(lái)?
最后的呈現(xiàn)不能全局搜索明星和導(dǎo)演形成詞云,效率太低。 解決方案:借助 ingest 管道預(yù)處理,提前給滿足給定條件的數(shù)據(jù)打上明星和導(dǎo)演的標(biāo)記。 舉例如下,借助 painless 腳本實(shí)現(xiàn)。 if(ctx.content.contains('易烊千璽') | ctx.content.contains('易烊') | ctx.content.contains('千璽')){
需要借助城市名稱(chēng)到城市經(jīng)緯度坐標(biāo)的映射關(guān)系,添加坐標(biāo)字段。 這里當(dāng)然可以在 csv 層面通過(guò)遍歷添加或者在 ES 端通過(guò) update_by_query 添加。 最后,我選擇在 ingest 預(yù)處理環(huán)節(jié)添加,辦法相對(duì)笨一些,但是效果不錯(cuò),達(dá)到預(yù)期。 代碼有幾百行,篇幅原因,此處省略。 至此,我們就掃清了一切數(shù)據(jù)層面的障礙,接下來(lái)就是同步導(dǎo)入數(shù)據(jù)、數(shù)據(jù)分析&數(shù)據(jù)可視化了。 同步中規(guī)中矩,借助:logstash_input_csv 實(shí)現(xiàn)。
columns => ["comment_id","approve","reply","comment_time","sureViewed","nickName","gender","cityName","userLevel","user_id","score","content"]
logstash 同步環(huán)節(jié)截圖: 8、Kibana 可視化分析8.1 基于城市名稱(chēng)經(jīng)緯度坐標(biāo)的可視化紅球越大,代表觀影人數(shù)閱讀。 由多到少依次為:北京、深圳+廣州、成都+重慶、上海等。 和下面的基于城市名稱(chēng)的統(tǒng)計(jì)結(jié)果一致。 8.2 總數(shù)據(jù)量統(tǒng)計(jì)圖8.3 評(píng)論時(shí)間走勢(shì)圖8.4 主演詞云和評(píng)論次數(shù)統(tǒng)計(jì)圖8.5 導(dǎo)演詞云8.6 評(píng)分統(tǒng)計(jì)8.7 用戶等級(jí)統(tǒng)計(jì)8.8 最多點(diǎn)贊和最多評(píng)論疊加用戶信息圖8.9 總評(píng)論詞云9、小結(jié)從構(gòu)思到實(shí)現(xiàn)前后斷斷續(xù)續(xù)2個(gè)周的時(shí)間,中間清洗、預(yù)處理花費(fèi)時(shí)間比較多。 類(lèi)似影評(píng)分析國(guó)內(nèi)基本用 python 結(jié)合 echarts 居多,而強(qiáng)大的 ELK 基本都能覆蓋到,本文做了初步驗(yàn)證。 大家有好的想法也歡迎留言交流。 最后,我想以《誰(shuí)是最可愛(ài)的人》中的一段話結(jié)束本篇文章,算作是對(duì)先輩們的緬懷,正如《長(zhǎng)津湖》宣傳海報(bào)所說(shuō):“如今繁華盛世、如您所愿”。
推薦更短時(shí)間更快習(xí)得更多干貨! 已帶領(lǐng)70位球友通過(guò) Elastic 官方認(rèn)證! 中國(guó)僅通過(guò)百余人 ![]() |
|
來(lái)自: 銘毅天下 > 《待分類(lèi)》