如何评估包含字符串的两列的相似性?

数据挖掘 文本 文本处理
2021-10-06 04:36:44

我是文本处理的新手,并且遇到了一个问题来识别列的相似性。为了详细说明问题,考虑我们有两列带有字符串值:

Column A      |        Column B
-------------------------------
abcd          |          xyz
foo           |          bar
xyzzy         |          acct
xyz           |          world
onex          |          foo
...           |          ...
...           |          ...

列的长度可以达到数千。有没有一种方法可以确定列的相似程度?

目前,我正在为这两个列创建 Minhash 签名并计算 Jaccard 相似度 b/w 签名。但问题是,即使对于值有大量重叠的列,相似度得分也太低了。

然后,我尝试通过获取最常出现的值的一部分来创建签名,但这似乎也无济于事。

有没有其他方法可以解决这个问题?

1个回答

您可以对字符串使用相似度指标有许多“现成的”包可以比较字符串相似度,例如stringdistfor R.

例如,stringsim 函数允许您比较字符串相似度(并且可以选择使用不同的度量标准)。

示例(在 R 中):

library(stringdist)

stringsim("cat", "catfish")
> [1] 0.4285714

# Also works with vectors
df = data.frame(a=c("cat","dog","tree"),b=c("catfish","hotdog","forest"))

stringsim(df$a,df$b, method="jaccard")
> [1] 0.4285714 0.6000000 0.5000000

另请参阅此 github-repo进行模糊匹配等。