编辑距离的算法给出了两个字符串之间的距离的量度。

问题:以下哪种措施与检测实际上相同的两个不同的人的名字最相关? (因拼写错误而有所不同)。诀窍在于,它应将误报率降至最低。例子:

奥巴马
奥巴马
=>应该合并

奥巴马
伊巴马
=>不应合并。

这只是一个简单的例子。解决这个问题的程序员和计算机科学家是否更详细?

最佳答案

我可以建议这样做的 information-retrieval技术,但是它需要大量文档才能正常工作。

使用标准的IR技术为您的数据建立索引。 Lucene是一个很好的开源库,可以帮助您。

一旦获得名称(例如,Obaama):检索单词Obaama 出现在其中的集合集。将该集合设为D1
现在,对于D11 中的每个单词w,搜索Obaama AND w (使用您的IR系统)。设置为D2

得分|D2|/|D1| 是对w连接多少Obaama的估计,对于w=Obama 2,最有可能接近1。
您可以手动标记一组示例,并找到可以从中得出单词的值。

使用标准的词典相似性技术,您可以选择过滤出绝对不是拼写错误的单词(例如Barack)。

另一个常用的解决方案需要查询日志-如果obaama与查询日志中的obama有关联,则在搜索到的单词
之间找到关联-它们已连接。

1:您可以通过首先执行第二个过滤器来提高性能,并且仅按词典顺序检查“足够相似”的候选者。

2:通常也使用归一化,因为更频繁的单词更有可能与任何单词出现在同一文档中,无论它们是否相关。

10-04 13:18