【问题标题】:Jaccard similarity in pythonpython中的Jaccard相似度
【发布时间】:2018-01-02 23:18:58
【问题描述】:

我正在尝试找出两个文档之间的 jaccard 相似性。但是,我很难理解函数 sklearn.metrics.jaccard_similarity_score() 在幕后是如何工作的。根据我的理解,Jaccard 的 sim = 文档中术语的交集/文档中术语的联合。

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

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

高于功能。给我jaccard 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

有人可以帮助我了解我是否在这里遗漏了一些明显的东西。

【问题讨论】:

    标签: python-2.7 scikit-learn similarity


    【解决方案1】:

    据我了解

    两个文档中术语的交集 = 2。

    peek to peek 交点根据各自的索引。因为我们需要为我们的模型预测正确的值。

    Normal Intersection = 4. 离开索引的顺序。

    # so,
    jaccard_score = 2/(6+6-4) = 0.25
    

    【讨论】:

      【解决方案2】:

      here所述:

      在二分类和多分类中,Jaccard 相似系数得分等于分类准确率。

      因此,在您的示例中,它正在计算匹配元素的比例。这就是为什么你会得到 0.25 作为结果。

      【讨论】:

      • 感谢您的回复!那么,它是频率匹配的地方(第 2 项和第 3 项)吗?如果是,这是否是获取文档相似度分数的有效方法?
      • 设置 Jaccard 相似度可以衡量文档之间的相似度,但 TF-IDF 等指标在文档的词袋模型中更为常见。
      • 顺便看看https://radimrehurek.com/gensim/index.html。在那里你可以找到你需要的东西。
      猜你喜欢
      • 2017-03-27
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2021-09-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多