python 求连线相似度_Python分析《都挺好》中的人物关系,苏大强与蔡根花是真爱?...
如今大火的電視劇《都挺好》源于阿耐的同名小說(shuō),今天我們來(lái)對(duì)這部小說(shuō)使用python分析一下人物關(guān)系。本文主要使用google推出的word2vec進(jìn)行分析。使用的庫(kù)主要有jieba、gensim。
一、文本準(zhǔn)備
從網(wǎng)上下載《都挺好》小說(shuō)txt。打開(kāi)查看如下所示:
?
可以看出,文本中有分段以及大量的換行符,所以在讀取文本時(shí)需要先去除這些符號(hào)。讀取文本函數(shù)如下:
二、文本分詞
在使用word2vec進(jìn)行模型訓(xùn)練之前,首先需要將文本處理成word2vec可以操作的格式,即分詞后使用空格分隔的文本。本文使用jieba進(jìn)行分詞,為了提高分詞效果,加入了用戶(hù)字典和停用詞設(shè)置。
用戶(hù)字典格式為:
停用詞格式為:
以下是添加用戶(hù)字典的代碼:
以下是添加停用詞設(shè)置:
下面開(kāi)始分詞,一開(kāi)始直接使用jieba分詞,但是后面做相似度分析的時(shí)候效果不好,因?yàn)楹枚酂o(wú)關(guān)詞性的詞也跑出來(lái),如下圖:
所以為了提高效果,在分詞的時(shí)候加入了詞性,分詞的代碼如下:
調(diào)用函數(shù)之后會(huì)產(chǎn)生兩個(gè)文件,一個(gè)文件是分詞的文件,用來(lái)進(jìn)行word2vec訓(xùn)練,另一個(gè)文件存儲(chǔ)分詞相應(yīng)的詞性。此時(shí),我們還需要一個(gè)能根據(jù)詞來(lái)查詢(xún)其詞性的方法,代碼如下:
?
三、模型訓(xùn)練
經(jīng)過(guò)第二步的分詞之后,就可以進(jìn)行訓(xùn)練了。訓(xùn)練主要是調(diào)用word2vec相關(guān)的函數(shù)將詞向量化,主要代碼如下:
模型已經(jīng)生成,我們可以調(diào)用模型來(lái)看一下具體某個(gè)詞的詞向量
是一個(gè)200維的向量。維度可以由我們定義。至此,模型已經(jīng)訓(xùn)練好。下面進(jìn)行測(cè)試
四、模型測(cè)試
如果此時(shí)直接使用模型,效果和之前一樣,我們可以利用已生成好的詞性文件來(lái)進(jìn)行優(yōu)化。主要思路是當(dāng)查找到與目標(biāo)相似度較高的詞時(shí),查詢(xún)其詞性,如果是想要的詞性,就輸出,不是就拋棄。具體代碼如下:
本次求與“蘇大強(qiáng)”相似度最高的10個(gè)詞,運(yùn)行結(jié)果如下
效果確實(shí)好多了。但是發(fā)現(xiàn)這些詞沒(méi)有文章中的主人公。查看蘇大強(qiáng)與蔡根花的相似度:
運(yùn)行結(jié)果如下:
蘇大強(qiáng)與蔡根花的相似度明明很高,為什么求相似度top10時(shí)沒(méi)有她。
還有其他主人公的相似度比上面的詞相似度低一些,但是要更加的有用。如何能顯示出更多有效的詞呢。
后來(lái)經(jīng)過(guò)排查,發(fā)現(xiàn)是因?yàn)椤安谈ā痹~性為空,所以在進(jìn)行優(yōu)化時(shí),就把本文的人名優(yōu)化去了,原因是jieba沒(méi)有把這些詞當(dāng)做人名(nr)。
五、模型優(yōu)化
針對(duì)這種情況,我們有兩種解決方式,第一種是將這些人名的詞性加入到詞性文件,這樣在查找時(shí),就可以找到。第二種方式是直接尋找指定詞與目標(biāo)詞的相似度。第二種目標(biāo)性更強(qiáng),下面我們直接用用戶(hù)字典里的詞作為與目標(biāo)“蘇大強(qiáng)”的相似度比較。
還是不太好看,排序輸出后為:
從結(jié)果中可以看出,蘇大強(qiáng)與蔡根花的相似度最高,蔡根花是蘇大強(qiáng)的保姆,也是他的 “寶貝”,也挺符合故事情節(jié)的。
來(lái)源:Python中文社區(qū)
作者:KingShine
總結(jié)
以上是生活随笔為你收集整理的python 求连线相似度_Python分析《都挺好》中的人物关系,苏大强与蔡根花是真爱?...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 找不到python2018解释器_pyt
- 下一篇: nmon结果分析工具_Nmon实时监控并