點擊下圖get知識卡片
閱讀難度:★★☆☆☆
技能要求:機器學習、python、分詞、數據可視化
字數:1500字
閱讀時長:6分鐘
本文結合最近熱播的電視劇《延禧攻略》,對其人物的關係在數據上進行解讀。通過從網上收集相關的小說、劇本、人物介紹等,經過word2vec深度學習模型的訓練,構建人物關係圖譜,並通過可視化的方式進行展示。
1
圖譜
先看看全劇人物的關係圖譜:
節點越大、越靠近中心,在劇中與其他角色的關係越錯綜複雜。
我們把圖放大,觀察下:
可以發現:
瓔珞、爾晴、吉祥、明玉、錦繡、傅恆
這6位人物是全劇中推動劇情發展的關鍵所在。從這個角度看《延禧攻略》是一部關於多名宮女與一位侍衛的故事。
這個圖譜還可以看各個人物與其他人物的關聯度
再看下乾隆與其他人的關係:
當然我們也可以通過代碼查詢:
圖譜體驗地址:
https://shadowcz007.github.io/text2kg/
上面的圖譜是怎麼得出的呢?
2
構建思路
需要的數據:
延禧攻略小說
延禧攻略劇本
延禧攻略人物名稱
算法:
word2vec
前端:
echart
開發環境:
python
在處理數據的時候,我們需要把數據裡的標點符號,以及一些沒用的詞語去掉(例如第xx章之類的)。配合結巴分詞,做一輪分詞後,再把一些字符長度為1的去掉(例如各種語氣詞、數量詞等)。
最後處理成:
數據準備好之後。主要使用gensim進行word2vec的訓練。gensim是一個Python NLP的包,封裝了google的C語言版的word2vec。安裝gensim是很容易的,使用"pip install gensim"即可。
3
word2vec
word2vec,也叫word embeddings,中文名「詞向量」,作用就是將自然語言中的詞語轉為計算機可以理解的稠密向量。詞語轉化為向量的關係如下圖所示:
word2vec可以學習到詞語之間的關係,原理是在文本中相關的詞總是大概率的同時出現。再看下圖:
從圖上看,word2vec可以學習到各種有趣的關係。例如,單詞「king」經常和「quee」出現在一起,而「man」經常和「woman」出現在一起。
通過word2vec分析,我們可以發現代表「king」的矢量可以跟代表「queen」,「man」和「woman」的矢量有如下簡單的關係:
king=queen-woman+man
通過詞到向量的轉化,我們可以基於向量進行各種運算。
除了應用於語言學裡,還可以應用到化學裡,例如Atom2Vec,它能夠從不同元素組合而成的化合物名稱(如NaCl, KCl, H2O )來學習區分不同的原子,從而發現一些可能的新化合物。這個程序借鑑了自然語言處理中的簡單概念:
一個詞語的特性是可以從它周圍出現的其他單詞來得出的;對應的把化學元素根據它們所處的化學環境進行聚類得出相關的化學元素。
從這些數據的分析中,人工智慧程序可以發現鉀和鈉有著類似的性質,因為它們都可以跟滷素結合成化合物,「就像king和queen很類似一樣,鉀和鈉也是類似的。」
訓練後的模型,可以輸入不同原子組成的化合物進行各種向量運算,幫助我們發現新的化合物。
4
gensim word2vec指南
簡單一行代碼就可以開始訓練模型:
model = Word2Vec(line_sent, size=100,window=5,min_count=1)
訓練好之後,可以查詢找出某一個詞向量最相近的詞集合:
model.wv.similar_by_word('瓔珞', topn =10)
還可以看兩個詞向量的相近程度,這裡給出了劇中兩組人的相似程度:
print(model.wv.similarity('瓔珞', '爾晴'))print(model.wv.similarity('皇后', '弘曆'))
相似度:
0.91754638971106170.8206695311318175
又或者找出不同類的詞,這裡給出了人物分類:
model.wv.doesnt_match("瓔珞 皇后 弘曆 傅恆 爾晴".split())
結果: 弘曆
從結果來看,弘曆是皇帝,當然跟這些人都不是一類的。
再看一組:
model.wv.doesnt_match("瓔珞 皇后 傅恆 爾晴".split())
結果: 傅恆
傅恆是男的,也跟這些人不同類。
以上為全文內容,word2vec還有其他好玩的應用,例如我們可以分析每個人物的性格,找出描述人物的性格詞語;應用於設計語言的挖掘,我們可以提取出某種設計風格的特點;應用於文章寫作,我們可以分析某種文章的風格,讓機器協作我們進行寫作創作;等等。
9月
mixlab線下活動推薦:
智能時代的個人主頁/名片
我們在9.1號準備了一期的workshop,幫助0基礎的同學掌握編程技能及設計技能,花一天時間即可學會小程序開發&設計。課程特點:線下面對面溝通,高效學習,同時可以獲得線上的指導。
點擊置底「閱讀原文」報名
---
MixLab 是一所面向未來的實驗室,它提倡「跨界創新,開放成長」的理念。因為不設邊界,讓創新有了更多可能;因為開放性和包容性,讓每一個跨界者都能在這裡充分成長。因此,MixLab的中文名字叫做「無界社區」。
MixLab 通過去中心化的模式,讓社群裡的跨界者互幫互助來共同成長。
在這裡我們沒有絕對的精英,我們相信每個人只要不斷突破自己的認知邊界,你就能成為精英。因為,哪怕只有一天的跨界也能激發無限可能性。我們認為創新者就是能幫助他人把不同領域價值有效融合在一起的人。在這裡我們不培養技術專家,我們培養創新精神和創新者。讓每一個普通人成為創新驅動器是這個社群的共同願景。
——跨界 開放 互助 學習 思維 創新
mixlab期待您的加入!
讚賞的方式可以是點廣告~