Levenshtein、N-Gram、余弦和 Jaccard 距离系数的属性 - 在句子匹配中

机器算法验证 文本挖掘 距离函数 相似之处
2022-03-23 08:25:49

假设我有两个字符串:

string A: 'I went to the cafeteria and bought a sandwich.'
string B: 'I heard the cafeteria is serving roast-beef sandwiches today'.

公式:

Levenshtein 距离:将字符串 a 转换为字符串 b 所需的最小插入、删除或替换次数

N-gram 距离:两个字符串之间出现 n-gram 向量的绝对差的总和。例如,字符串 A 和 B 的二元向量的前 3 个元素将分别为 (1, 1, 1) 和 (0, 0, 0)。

余弦相似度: abaabb

杰卡德相似度: length(ab)length(ab)

例句中单词粒度的度量:

Levenshtein distance = 7 (if you consider sandwich and sandwiches as a different word)
Bigram distance = 14
Cosine similarity = 0.33
Jaccard similarity = 0.2

我想了解使用这些(不)相似性度量中的每一个的利弊。如果可能的话,最好在例句中理解这些优点/缺点,但如果你有一个更好地说明差异的例子,请告诉我。另外,我意识到我可以通过文本中的单词数来缩放 Levenshtein 距离,但这不适用于二元距离,因为它会大于 1。

首先,余弦和 Jaccard 似乎提供了相似的结果。Jaccard 实际上的计算量要小得多,而且(有点)更容易向外行解释。

0个回答
没有发现任何回复~