日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ELK 可視化分析熱血電影《長(zhǎng)津湖》15萬(wàn)+影評(píng)

 銘毅天下 2021-12-24

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ù)流圖如下:

其中:

  • 數(shù)據(jù)采集:解決數(shù)據(jù)源頭問(wèn)題,得到初始數(shù)據(jù)。

  • 數(shù)據(jù)清洗:確保 Logstash 環(huán)節(jié)能同步,做必要的特殊字符清洗處理。

  • 數(shù)據(jù)同步:同步選型logstash_input_csv,logstash input、output、filter 環(huán)環(huán)相扣,協(xié)同搞定。

  • 數(shù)據(jù)存儲(chǔ):基于建模實(shí)現(xiàn)數(shù)據(jù)落地存儲(chǔ),方便檢索、聚合、后續(xù)可視化分析。

  • 數(shù)據(jù)分析:實(shí)際分析哪些維度可以可視化,有沒(méi)有偏差,有偏差需要調(diào)整建模,重新導(dǎo)入或者 reindex 數(shù)據(jù)。

  • 數(shù)據(jù)可視化:基于數(shù)據(jù)存儲(chǔ)的特定維度,實(shí)現(xiàn)可視化分析。待可視化分析的維度,在建模階段就要敲定。以上,大的框架已初步搞定,剩下就是各個(gè)小模塊的填充工作。

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)可獲取的可用字段如下:

  • comment_id:評(píng)論id,全局唯一。

  • approve:評(píng)論點(diǎn)贊數(shù)。

  • reply:評(píng)論回復(fù)數(shù)。

  • comment_time:評(píng)論時(shí)間。

  • sureViewed:是否真實(shí)觀看。

  • nickName:昵稱(chēng)。

  • gender:性別。

  • cityName:城市。

  • userLevel:用戶等級(jí)。

  • user_id:用戶id。

  • score:評(píng)分。

  • content:評(píng)論內(nèi)容。

cai 集過(guò)程非本文重點(diǎn),所以略過(guò)。

初始 CSV 數(shù)據(jù)如下圖所示:

4、可分析數(shù)據(jù)字段及預(yù)期可視化內(nèi)容

4.1 評(píng)論時(shí)間走勢(shì)圖

  • 橫軸:comment_time。
  • 縱軸:評(píng)論數(shù)。

4.2 性別比例餅圖

  • 基于字段:gender

4.3 城市分布Top圖

  • 橫軸:人數(shù)。
  • 縱軸:城市。

4.4 用戶等級(jí)餅圖

  • 基于字段:userLevel。

4.5城市地理位置坐標(biāo)圖城市分布圖

  • 基于字段:cityName。
  • 遇到問(wèn)題:沒(méi)有坐標(biāo)信息,如何通過(guò)地圖可視化?

4.6 評(píng)分餅圖

  • 基于字段:score。
  • 遇到問(wèn)題:字符串類(lèi)型不能處理,需要類(lèi)型轉(zhuǎn)換,如何做?

4.7 評(píng)論內(nèi)容詞云

  • 基于字段:content
  • 遇到問(wèn)題:content 正文內(nèi)容如何形成詞云呢?

4.8 評(píng)論點(diǎn)贊+再評(píng)論混合排行榜

  • 基于字段:approve。

4.9 情感分析

  • 遇到問(wèn)題:需要根據(jù)content 生成情感值
  • 后面再擴(kuò)展

5、數(shù)據(jù)清洗

5.1 采集環(huán)節(jié)清洗

比如:數(shù)據(jù)要基于鍵值評(píng)論 id 去重,以確保避免數(shù)據(jù)重復(fù)。

  • 數(shù)據(jù)同步環(huán)節(jié)清洗。

比如:去掉 message 字段,避免 ES 端重復(fù)存儲(chǔ)。

比如:csv 中特定的引號(hào)等特殊字符要處理掉。

比如:csv 格式要逐行規(guī)范,避免同步大量報(bào)錯(cuò)。

5.2 數(shù)據(jù)預(yù)處理清洗

下面的建模、預(yù)處理小節(jié)詳細(xì)介紹。

6、數(shù)據(jù)建模

6.1 數(shù)據(jù)建模的重要性

數(shù)據(jù)建模非常重要,建模起到了承上啟下的銜接作用。

  • 一方面:csv 的數(shù)據(jù)要逐個(gè)字段映射為 ES 的字段。

字段類(lèi)型設(shè)置要保證全局可用、支持未來(lái)可擴(kuò)展。

重復(fù)建模需要 reindex 操作,數(shù)據(jù)量越大,時(shí)間成本越高。

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

ES 字段設(shè)置的不規(guī)范,會(huì)導(dǎo)致后面數(shù)據(jù)沒(méi)法進(jìn)行可視化或者效果不好。

6.2 遇到問(wèn)題及解決方案

  • Q1:content 正文內(nèi)容如何形成詞云呢?
解決方案:content 這么大的字段,通常設(shè)置為:text 類(lèi)型。
但是,咱們需要可視化詞云,所以需要在 text 基礎(chǔ)上,開(kāi)啟:fielddata。
類(lèi)似詞云分詞,之前文章也分析過(guò),所以輕車(chē)熟路。
  • Q2:已有字段不足以支撐可視化分析?
解決方案:加字段,新字段數(shù)據(jù)結(jié)合預(yù)處理添加。
新增字段包括:
(1)director tag 字段 用途:形成導(dǎo)演詞云。
(2)starring 明星 tag 字段 用途:形成明星詞云。
(3)location 坐標(biāo)字段 用途:繪制坐標(biāo)錨點(diǎn)。
  • Q3:日期字段類(lèi)型多且不一致導(dǎo)致同步報(bào)錯(cuò),如何解決?
解決方案:Mapping 建模全量列舉。
這個(gè) bug 解決花費(fèi)近小半天時(shí)間。
最終,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、數(shù)據(jù)預(yù)處理

基礎(chǔ)清洗有了,建模有了,重頭戲就放在數(shù)據(jù)預(yù)處理上了。

剛才也提及:我們不止是基于 csv 已有的字段做分析,而是會(huì)擴(kuò)展了很多字段。

那么面臨問(wèn)題是:新擴(kuò)展字段的數(shù)據(jù)怎么來(lái)?

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

最后的呈現(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('千璽')){
      ctx.starring.add('易烊千璽')
  }
  • location 坐標(biāo)字段

需要借助城市名稱(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)。

  • input csv 配置。

  • filter 添加列字段。

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

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ì)圖

15 W+的評(píng)論數(shù)據(jù)。

8.3 評(píng)論時(shí)間走勢(shì)圖

可以看出來(lái),存在超前觀看情況,9月底就有評(píng)論。
10 月1 日 迎來(lái)第1高峰,10 月 5 日迎來(lái)第2高峰。

8.4 主演詞云和評(píng)論次數(shù)統(tǒng)計(jì)圖

無(wú)可爭(zhēng)議,易烊千璽作為頂級(jí)流量,關(guān)注度最高。在雷公和吳京之間關(guān)注高的是雷公。
至少說(shuō)明:胡軍主演的雷公深入人心。
我是在“沂蒙山小調(diào)”出來(lái)之后,哭成淚人的,太感人了。

8.5 導(dǎo)演詞云

陳凱歌導(dǎo)演排在第一位,他的關(guān)注度也是最高的。
林超賢和徐克導(dǎo)演比較,林超賢導(dǎo)演的關(guān)注度要高一些。

8.6 評(píng)分統(tǒng)計(jì)

實(shí)現(xiàn)的時(shí)候,4分、4.5分統(tǒng)計(jì)為 4。
可以看出:4分之上的比率為:94.59%。
基本對(duì)應(yīng)評(píng)分:9.5 分。

8.7 用戶等級(jí)統(tǒng)計(jì)

70.68% 的處于2級(jí)。

8.8 最多點(diǎn)贊和最多評(píng)論疊加用戶信息圖

此處kibana 有文字疊加效果,看著像是bug。

8.9 總評(píng)論詞云

電影好不好,觀眾說(shuō)了算。
《長(zhǎng)津湖》實(shí)至名歸,票房破 50 億是最好的證明。觀眾的評(píng)論最多的是:震撼、好看、值得、致敬、推薦、吾輩、銘記等。
這里在處理詞云的時(shí)候,吸取之前的教訓(xùn),使用:ik_smart 粗粒度分詞。
并且手動(dòng)過(guò)濾掉一些單字“噪音“分詞,確保更直觀,相對(duì)真實(shí)的反應(yī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ō):“如今繁華盛世、如您所愿”。

“親愛(ài)的朋友們,當(dāng)你坐上早晨第一列電車(chē)馳向工廠的時(shí)候,當(dāng)你扛上犁耙走向田野的時(shí)候,當(dāng)你喝完一杯豆?jié){、提著書(shū)包走向?qū)W校的時(shí)候,當(dāng)你坐到辦公桌前開(kāi)始這一天工作的時(shí)候,當(dāng)你往孩子口里塞蘋(píng)果的時(shí)候,當(dāng)你和愛(ài)人一起散步的時(shí)候……朋友,你是否意識(shí)到你是在幸福之中呢?你也許很驚訝地說(shuō):“這是很平常的呀!”可是,從朝鮮歸來(lái)的人,會(huì)知道你正生活在幸福中。請(qǐng)你意識(shí)到這是一種幸福吧,因?yàn)橹挥心阋庾R(shí)到這一點(diǎn),你才能更深刻了解我們的戰(zhàn)士在朝鮮奮不顧身的原因。朋友!你是這么愛(ài)我們的祖國(guó),愛(ài)我們的偉大領(lǐng)袖毛主席,你一定會(huì)深深地愛(ài)我們的戰(zhàn)士,——他們確實(shí)是我們最可愛(ài)的人!”

推薦

1、重磅 | 死磕 Elasticsearch 方法論認(rèn)知清單(2021年國(guó)慶更新版)
2Elasticsearch 7.X 進(jìn)階實(shí)戰(zhàn)私訓(xùn)課(口碑不錯(cuò))
3、項(xiàng)目實(shí)戰(zhàn) 01:將唐詩(shī)三百首寫(xiě)入 Elasticsearch 會(huì)發(fā)生什么?

短時(shí)間快習(xí)得多干貨!

已帶領(lǐng)70位球友通過(guò) Elastic 官方認(rèn)證!

中國(guó)僅通過(guò)百余人

比同事搶先一步學(xué)習(xí)進(jìn)階干貨

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多