编辑距离算法给出了两个字符串之间距离的度量。
问题:这些措施中的哪一个与检测两个实际上相同的不同人名最相关?(由于拼写错误而不同)。诀窍是它应该尽量减少误报。例子:
奥巴马奥巴马 => 可能应该被合并
Obama Ibama => 不应合并。
这只是一个过于简单的例子。他们的程序员和计算机科学家是否更详细地解决了这个问题?
编辑距离算法给出了两个字符串之间距离的度量。
问题:这些措施中的哪一个与检测两个实际上相同的不同人名最相关?(由于拼写错误而不同)。诀窍是它应该尽量减少误报。例子:
奥巴马奥巴马 => 可能应该被合并
Obama Ibama => 不应合并。
这只是一个过于简单的例子。他们的程序员和计算机科学家是否更详细地解决了这个问题?
我可以建议这样做的信息检索技术,但它需要大量的文档才能正常工作。
使用标准的 IR 技术索引您的数据。Lucene是一个很好的开源库,可以帮助您。
一旦你得到一个名字(例如奥巴马):检索出现奥巴马这个词的集合集。让这个集合成为D1
。
现在,对于D1
中的每个单词1搜索(使用您的 IR 系统)。设 为。w
Obaama AND w
D2
分数|D2|/|D1|
是一个估计有多少w
连接到Obaama
,并且很可能会接近 2 的w=Obama
1。
您可以手动标记一组示例并找到预期单词的值。
使用标准的词典相似性技术,您可以选择过滤掉绝对不是拼写错误的单词(Like Barack
)。
另一个经常使用的解决方案需要查询日志——找到搜索词之间的相关性,如果查询日志中奥巴马与奥巴马有相关性——它们是连接的。
1:您可以通过首先执行第二个过滤器来提高性能,并且只检查字典上“足够相似”的候选人。
2:通常也使用归一化,因为更频繁的词更有可能与任何词在同一个文档中,无论是否相关。
您可以查看也使用SecondString的NerSim(演示) 。你可以找到他们相应的论文,或者考虑这篇论文:命名实体匹配的稳健相似性度量。