2016-06-20 94 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方法,但它需要很长时间,我需要更快的程序来处理更大的数据 –