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