编辑距离的算法给出了两个字符串之间的距离的量度。
问题:以下哪种措施与检测实际上相同的两个不同的人的名字最相关? (因拼写错误而有所不同)。诀窍在于,它应将误报率降至最低。例子:
奥巴马
奥巴马
=>应该合并
奥巴马
伊巴马
=>不应合并。
这只是一个简单的例子。解决这个问题的程序员和计算机科学家是否更详细?
最佳答案
我可以建议这样做的 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:通常也使用归一化,因为更频繁的单词更有可能与任何单词出现在同一文档中,无论它们是否相关。