这将是我第二次询问计算语言学/模糊字符串匹配,但这次不是关于词干。
我的第一个问题是使用模糊字符串匹配对数据库进行重复数据删除,我已经做到了。现在,我必须检测一个字符串是否是另一个字符串的简写。例如:
- JOHN ADRIAN FREEMAN WELTER 等于 JAF Welter 或 JAFWelter
- MICROSOFT OFFICE 等于 MS OFFICE
- BUILDING 等于 BLDG
我目前正在使用 SimMetrics 的 .Net 版本来解决我的第一个问题。那么,SimMetrics 中有没有一种方法可以解决我的问题呢?如果没有,那么解决这个问题的最佳方法是什么?
以下是 SimMetrics 中实现的指标:
- 汉明距离
- 莱文斯坦距离
- Needleman-Wunch 距离或卖方算法
- 史密斯-沃特曼距离
- Gotoh 距离或 Smith-Waterman-Gotoh 距离
- 街区距离或L1距离或城市街区距离
- 蒙格埃尔坎距离
- Jaro 距离度量
- 雅罗·温克勒
- SoundEx 距离指标
- 匹配系数
- 骰子系数
- Jaccard 相似度或 Jaccard 系数或 Tanimoto 系数
- 重叠系数
- 欧几里得距离或 L2 距离
- 余弦相似度
- 变分距离
- 海灵格距离或巴塔查亚距离
- 信息半径(Jensen-Shannon 散度)
- 谐波平均值
- 偏差散度
- 混淆概率
- 陶
- Fellegi 和 Sunters (SFS) 指标
- TFIDF 或 TF/IDF
- 快速A
- 爆破
- 最大匹配
- q-gram
- Ukkonen 算法
我对所有这些算法都不是很熟悉。我已经在这里使用的是 Leveshtein Distance、Needleman-Wunch、Jaro-Winkler、SoundEx 和 TF/IDF。而且我认为这些算法不足以解决这个简写名称问题