2016-06-20 153 views
-1

給出兩個文檔,我想計算它們之間的相似度。我有措施找出餘弦距離,N-gram和tf-idf使用這個: This is a previously asked questionpython中兩個文檔的比較

我想知道,還有什麼需要使用這些函數來完成。

而且,我已經嘗試推行Word2Vec,下面我試圖找到相似之處使用下面的代碼:

for i in range(len(Words)): 
    print i 
    for k in range(len(Words)): 
     net_sim = 0.0 
     for j in range(len(Words.ix[i]['A'])): 
      sim = 0.0 
      for l in range(len(Words.ix[k]['A'])): 
       if sim < model.similarity(Words.ix[i]['A'][j],Words.ix[k]['A'][l]): 
        sim = model.similarity(Words.ix[i]['A'][j],Words.ix[k]['A'][l]) 
      net_sim += sim 
     Similarity.ix[i][k] = net_sim/len(Words.ix[i]['A']) 

對於曾經字一個給定的文檔中,我試圖找到第二個文檔中最相近的詞並添加它們的相似性。然後,我除以單詞的數量,以便將其歸一化爲0到1的範圍。 這裏,單詞是一個DataFrame,由單獨的行中的不同文檔的單詞組成,模型是一個Word2Vec模型。這個過程需要花費很多時間,我希望優化它,從而尋找不同的方法

+0

請告訴我們你已經擁有的代碼! –

+0

http://stackoverflow.com/a/22577329/6350407 –

+1

請向我們展示您已擁有的代碼**!對不起,但是因爲你把代碼放在一起,你找不到別的地方。你必須至少表現出一些努力。 –

回答

1

如果您專注於使用您所描述的這些功能,應該很容易通過閱讀nltk wiki來實現,但我不'不知道這是否是比較它們之間相似性的最佳方法。

difflib docs頁所述,您也可以使用它們的軟件包來比較文件和序列。

該模塊提供了的比較序列的類和函數。它可以用於例如比較文件,並且可以產生 各種格式的差異信息,包括HTML和上下文 和統一差異。

要比較目錄和文件,請參閱filecmp模塊。


更具體地說,可以使用difflib.SequenceMatcher()比較文本的序列。

例子:

import difflib 

# passing strings 
difflib.SequenceMatcher(None, str1, str2) 

# reading files 
difflib.SequenceMatcher(None, file1.read(), file2.read()) 

更多的例子和教程,請參閱:

PyMOTW - difflib

+0

不,我需要找到範圍爲0到1的相似度。 我嘗試了Word2Vec方法,但它需要很長時間,我需要更快的程序來處理更大的數據 –