2017-07-27 206 views
0

我正试图找到两个文档之间的jaccard相似度。然而,我很难理解功能sklearn.metrics.jaccard_similarity_score()如何在幕后工作。根据我的理解,Jaccard的sim =文档中的术语与文档中的术语联合的交集。python中的Jaccard相似度

考虑下面的例子: 我对两个文件DTM是:

array([[1, 1, 1, 1, 2, 0, 1, 0], 
     [2, 1, 1, 0, 1, 1, 0, 1]], dtype=int64) 

以上FUNC。给我的捷卡SIM得分

print(sklearn.metrics.jaccard_similarity_score(tf_matrix[0,:],tf_matrix[1,:])) 
0.25 

我试图找到我自己的得分为:

intersection of terms in both the docs = 4 
total terms in doc 1 = 6 
total terms in doc 2 = 6 
Jaccard = 4/(6+6-4)= .5 

能有人请帮助,如果有什么明显我是缺少在这里我明白了。

回答

0

如上所述here

在二进制和多类分类中,Jaccard相似系数分数等于分类精度。

因此在你的例子中它正在计算匹配元素的比例。这就是为什么你会得到0.25

+0

谢谢你的回应!那么,频率匹配(第二和第三学期)在哪里?如果是的话,这是否是获得文件相似性得分的有效方法? – Apoorv

+2

设置Jaccard相似性可以是文档之间相似度的度量,但是诸如TF-IDF之类的度量在文档的bag-of-word模型中更常见。 – enezhadian

+0

顺便检查一下'https:// radimrehurek.com/gensim/index.html'。在那里你可能会发现你需要什么。 – enezhadian