pyecharts之參透神劇人物關(guān)系

《人民的名義》相信是大家都不是陌生吧,去年可是火遍大江南北,號稱史上最大尺度反貪反腐神劇,時隔許久還是看到許多關(guān)于該劇的文案;恰好最近在學習NLP相關(guān)知識,決定對其進行人物關(guān)系進行分析。而對人物關(guān)系最直觀的表現(xiàn)應該是社交網(wǎng)絡圖譜或者關(guān)系圖。
接下來,讓我們一起來研究怎樣制作人物關(guān)系圖呢?

1.pyecharts 介紹

pyecharts 相關(guān)基礎(chǔ)可參考

pyecharts 官方文檔可參考

2.數(shù)據(jù)準備

因為我們是希望跟貼近于劇情,所以選取劇本以切合大部分人熟悉的劇情。獲取數(shù)據(jù)方式主要有網(wǎng)絡數(shù)據(jù)采集、網(wǎng)絡API方式獲取、自定義網(wǎng)絡爬蟲工具等等,我們可以選擇適合自己的方式來獲取數(shù)據(jù),數(shù)據(jù)文件和代碼會在后期更新。

2.1 文本預處理

當我們拿到數(shù)據(jù)后,首先了解自己的數(shù)據(jù)包含什么信息。由于我們獲取到的數(shù)據(jù)為文本文件,首先要對文本進行預處理;主要包括分詞、去掉一些特殊字符和停用詞等。就像我們可能會有外號啊、小名啊等等,所以劇中人物也會有不同名字,所以我們需要進行統(tǒng)一。為保證在分詞時能夠正確切分一些固定名稱,所以需要導入自定義詞典來幫助我們進行分詞操作。在提取文本特征時需要去掉一些停用詞,以提高分析的準確度。經(jīng)過以上處理基本可以得到較為干凈的文本文件。接下來可以在此基礎(chǔ)上進行深入分析。

文本預處理可參考

3.人物出現(xiàn)頻次

首先我們可以通過人物在劇中出場次數(shù)來初步了解主角是誰?根據(jù)參演人員列表,統(tǒng)計該演員在劇中出現(xiàn)的次數(shù),通過pyecharts畫出出場次數(shù)top10的演員和出場次數(shù),得知侯亮平戲份做多,供480余次;果然是大Boss。其次是我們的老戲骨和行走的表情包達康書記。廢話不多說,有圖有真相。

from pyecharts import Bar,Line,Overlap
import  pandas as pd

df = pd.read_csv("人物出場次數(shù)統(tǒng)計.csv")
attr = df.ID[:11]
y_axis = df.Weight[:11]
bar = Bar("人物出場次數(shù)")
bar.add("", attr, y_axis,
  is_stack=False,
  bar_category_gap='20%')
line = Line()
line.add("",attr,y_axis)
overlap = Overlap()
overlap.add(bar)
overlap.add(line)
overlap.render("line_bar.html")
人物出場次數(shù)

4.社交網(wǎng)絡關(guān)系

開始今天的重頭戲哦,首先我們根據(jù)參演人員列表生成節(jié)點文件;采用句為單位進行分析,標識人物關(guān)系。得到參演人員的社交網(wǎng)絡關(guān)系,通過求得的共現(xiàn)矩陣,借助Gephi畫出社交網(wǎng)絡關(guān)系圖。圖中邊的粗細代表關(guān)系的密切程度或在劇中的交集。邊越粗則表示兩人關(guān)系越密切。而名字的大小即節(jié)點大小表示該參演人員在劇中的社交強弱或存在感。

4.1 pyecharts 實現(xiàn)

from pyecharts import Graph
import pandas as pd


df_node = pd.read_csv("參演人員節(jié)點.csv")

df_links = pd.read_excel('參演人員邊大小.csv')
nodes = [{"name":name1.strip(),"symbolSize":size/10} for name1,size in zip(df_node.ID,df_node.Weight) if size>1 ]
# nodes = []
links = [{"source":name2.strip(),"target":name1.strip(),"value":weight}
         for name1,name2,weight in zip(df_links.name1,df_links.name2,df_links.frequency)]
graph = Graph("人民的名義關(guān)系圖",width=1200,height=1000)
graph.add("", nodes, links,graph_layout="circular", repulsion=800, label_pos = "right",
graph_repulsion = 50, is_legend_show = False,
line_curve = 0.2, label_text_color = None)
graph.render()
人民的名義關(guān)系圖

4.2 Gephi工具實現(xiàn)

  • 1.在https://gephi.org/ 下載windows版的安裝包進行安裝。打開后如下圖所示。

  • 2.新建工程,導入數(shù)據(jù)
    選擇數(shù)據(jù)資料tab,點擊輸入數(shù)字表格,添加節(jié)點和邊的csv數(shù)據(jù)。


  • 3.點擊概覽調(diào)整相關(guān)樣式??梢酝ㄟ^度,權(quán)重等信息修改相關(guān)的樣式。


  • 4.修改字體,顯示相應的標簽


  • 5.選擇一個自動化布局的方式,預覽,再調(diào)整相關(guān)參數(shù)


4.2.1 效果展示

人民的名義人物關(guān)系圖

人民的名義人物關(guān)系圖

詳細代碼和樣例html文件后期整理及時更新,也可以私信哦

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 項目設(shè)計目的 通過一個綜合數(shù)據(jù)分析案例:”金庸的江湖——金庸武俠小說中的人物關(guān)系挖掘“,來學習和掌握MapRedu...
    printf200閱讀 2,173評論 0 1
  • 項目設(shè)計目的 通過一個綜合數(shù)據(jù)分析案例:”金庸的江湖——金庸武俠小說中的人物關(guān)系挖掘“,來學習和掌握MapRedu...
    piziyang12138閱讀 3,910評論 0 3
  • 最近和舍友看完了去年大火的電視劇【人民的名義】,看完覺得里面的人物關(guān)系很有意思,決定對其分析分析,也順便測試一下早...
    wong11閱讀 6,363評論 11 56
  • 人是矛盾綜合體。 有多少人就有多少種性格。 因為人是社會人,所以人總是在不斷地發(fā)生著變化。 向上向善是社會的主旋律...
    梧桐_66a8閱讀 275評論 0 3
  • 不知歸去多年后,安身的那片土地上,會開出怎樣的花,長出怎樣的樹 如果,它們同樣有情感,會不會頑劣的不去吞下孟婆湯,...
    固執(zhí)的流亡者閱讀 141評論 0 0

友情鏈接更多精彩內(nèi)容