【问题标题】:Algorithm for finding similarity between objects查找对象之间相似性的算法
【发布时间】:2015-07-09 21:56:07
【问题描述】:

我有一些巨大的数据集(在 10-20 之间),我需要找出这些数据集之间的关系。数据集非常庞大,以至于计算可能不适合单台机器。这些数据集中的字段是文本而不是数字。更复杂的是,某些字段也可能包含不正确的词,例如我使用模糊算法的 'house' 的 'huose'。

为了解决这个问题,我正在考虑使用余弦相似度,但不确定如此庞大数据集的性能。我的问题是,这种算法是否足以解决这类问题(性能和准确性)。如果没有,我应该研究其他一些算法吗?

编辑:更多信息

我将使用的数据集可能是文本文件和数据库表的混合。列中的值通常为 10-50 字符长,它不是一个巨大的文档。我寻找的关系是数据集的一列与另一列的相似程度。我有点想根据列之间的相似性得出一个分数。比如

Col1 Col2 Col3 甲乙 C S B E C A 电视 X E

所以在上面的例子中可以说Col1Col3之间有很强的关系,而Col1Col2之间的关系很弱。

【问题讨论】:

  • 您的意思是您有 10-20 个大文本文件?这是什么类型的文本?您在这些数据集之间寻找什么样的关系?一个例子在这里可能会有所帮助......

标签: algorithm bigdata string-matching


【解决方案1】:

不,使用余弦相似度不是一个好的选择,因为:

  1. 它不考虑词的顺序(假设词袋模型)。
  2. 它需要计算每对对象的成对距离,这对于庞大的集合在计算上是不可能的。

您可能确实在 Information Retrieval 中寻找类似于 Near Duplicate Detection 的东西。我已经在 different thread 中解释过一次(虽然不是完全的骗局),但这里是如何做到的:

一种已知的解决方案是使用 Jaccard-Similarity 来获取两个文档之间的差异。

Jaccard 相似度基本上是 - 从每个文档中获取单词集,让这些集合为 s1s2 - 并且 jaccard 相似度为 |s1 [intersection] s2|/|s1 [union] s2|

通常在面对近乎重复的内容时 - 然而,单词的顺序有一定的重要性。为了处理它——在生成集合s1s2 时——你实际上生成了k-shinglings 集合,而不是只有单词的集合。
例如

Text 1:"I'm writing a crawler to"
Text 2:"I'm writing a some text crawler to get"

使用k=2,集合将是:

s1 = { I'm write, write a, a crawler, crawler to }
s2 = { I'm write, write a, a some, some text, text crawler, crawler to, to get }
s1 [union] s2 = { I'm write, write a, a crawler, crawler to, a some, some text, text crawler, to get } 
s1 [intersection] s2 = { I'm write, write a, crawler to }

在上面,jaccard-similarity 将是3/8。如果您使用相同的方法使用单个单词(k=1 shinglings),您将得到您想要的5/8 - 但在我(以及大多数 IR 专家)看来,这是更糟糕的解决方案。

此过程可以很好地扩展以非常有效地处理大量集合,而无需检查所有对并创建大量集合。更多细节可以在these lecture notes找到(我在大约2年前做过这个讲座,基于作者的笔记)。

【讨论】:

  • 对不起,阿米特,我之前忘了补充,列中的大部分值将是单个单词字符串或 2-3 个单词的组合。它不会是一个文件。所以词序可能不会起主要作用。不过,您的解决方案看起来很有趣。如果您建议的解决方案仍然适用于单词匹配,请告诉我。
【解决方案2】:

这听起来像是一个经常被称为Schema Matching 的问题。

余弦距离听起来确实是您描述的一种非常好的方法。将每一列视为长文档,并比较列之间的余弦距离。

【讨论】:

    猜你喜欢
    • 2017-12-08
    • 2022-01-08
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-09
    • 2023-03-25
    相关资源
    最近更新 更多