python简单实战项目:《冰与火之歌1-5》角色关系图谱构建——人物关系可视化
python簡單實戰項目:《冰與火之歌1-5》角色關系圖譜構建
python簡單實戰項目:《冰與火之歌1-5》角色關系圖譜構建——數據庫設計
Scrapy+redis+mongodb分布式爬蟲抓取小說《冰與火之歌1-5》
先來張Gephi繪制酷炫的人物關系圖
圖中每個節點代表一個角色,節點與節點之間的連線代表共現,而連線的粗細表示共現的頻次多少。節點的大小以及顏色深淺表示度的大小,即一個角色參與共現的總頻次。
現在說說這張圖的實現步驟:
1.對挖掘獲取的語料進行角色抽取
2.對出現同一章節的角色進行合并
3.使用步驟2中的數據進行共現矩陣計算
4.利用UCINET、NETDRAW、Gephi對共現矩陣實現可視化。
1.對挖掘獲取的語料進行角色抽取
先前原本使用的是jieba和nlpir兩種自然語言處理包進行角色抽取的,但是后面發現效果特別差,所有后面則從百度百科上檔了一批角色列表下來,那這個與原文本進行比對,實現角色的抽取。
2.對出現同一章節的角色進行合并
寫爬蟲的時候就實現一邊爬一邊對角色進行抽取。
3.使用步驟2中的數據進行共現矩陣計算
讀取數據庫,使用關鍵詞共現矩陣算法構建矩陣。
算法請參考python構建關鍵詞共現矩陣
共現矩陣
4.利用UCINET、NETDRAW、Gephi對共現矩陣實現可視化
本博客的重點在這里~
點擊打開UCINET,
點擊file→Open→選擇csv格式的共現矩陣數據
成功導入數據后,然后點擊file→Save as,將數據保存為.##h后綴格式文件。
打開netdraw,依次如下圖點擊,打開剛剛保存的.##h文件
這個時候其實已經可以發現,netdraw已經把共現網絡繪制出來了,但是效果太low了,所以這里使用gephi繪制更好的效果。
使用gephi之前,需要將netdraw打開的文件另存為.net文件。
打開運行gephi,使用gephi直接打開剛剛保存的.net后綴文件。
由于是對角色進行簡單抽取,角色和角色之間不存在方向傳遞的性質,因此這里選擇無向的。
如果是中文文本的話,下方的字體也需要改成中文的字體。比如黑體、宋體等。
濾波的作用是對結果進行篩選,這里設置度來作為篩選條件。
總結
以上是生活随笔為你收集整理的python简单实战项目:《冰与火之歌1-5》角色关系图谱构建——人物关系可视化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面试--跨域--cors
- 下一篇: 在vue项目中操作元素ref案例;