【问题标题】:Jaccard similarity across sets with synonyms具有同义词的集合间的 Jaccard 相似性
【发布时间】:2016-08-16 17:14:29
【问题描述】:

假设您有两个具有如下属性集的用户:

userA = {"happy", "excited"}
userB = {"sad", "anxious"}

现在,如果我们要计算它的 Jaccard 相似度,它将为 0。但是,我们想要定义 excitedanxious 非常相似。

我的问题是,如何构建?

我要定义另一组与excited 同义的词吗?那么我如何将其纳入 Jaccard 指数计算中?

【问题讨论】:

    标签: algorithm statistics data-mining similarity


    【解决方案1】:

    您不能对单词执行此操作,因为它们可能是模棱两可的,但如果您能够导出 WordNet 所谓的“词义”,则可以将其映射到可以编码所有具有词义的同义词的同义词集哪个匹配。

    例如,请参阅此 Python NLTK 示例以进行词义消歧:http://www.nltk.org/howto/wsd.html

    对同义词集 ID 进行聚类会得到您想要的结果(假设 anxiousexcited 实际上在您用于消歧的数据库中至少有一个同义词意义)。

    【讨论】:

      【解决方案2】:

      我建议使用某种词库制作同义词集群。每个单词最多属于一个集群。
      对于每个集群,选择一个“规范”代表。
      现在,当您必须计算 Jaccard 相似度时,将每个单词替换为其集群中的代表。然后照常进行。

      示例集群(用粗体标记的代表):
      1. ,伟大,优秀,积极,有价值
      2. 坏的,可怜的,悲伤的,可怕的

      假设您要计算两个用户的相似度:
      用户A = {“积极”}
      用户B = {“好”}

      然后将它们转换为
      userA' = {"good"} (因为"good"是cluster的代表,"positive"属于)
      用户B' = {“好”}

      相似度 = 1 / 1 = 1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-27
        • 2011-10-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-07
        • 1970-01-01
        相关资源
        最近更新 更多