我正在尝试设计一种在名称中执行纠错的算法。我的方法是建立一个具有正确名称的数据库,计算每个名称与输入的名称之间的编辑距离,然后建议最接近的5或10个。
这项任务与标准的单词纠错有很大不同,因为有些名称可能会被首字母替换。例如,"Jonathan Smith“和"J. Smith”实际上非常接近,可以很容易地被认为是相同的名字,所以编辑距离应该非常小,如果不是0的话。另一个挑战是,有些名字可能写得不同,但听起来却是一样的。例如,Shnaider和Schneider是由不同地区的人编写的同名版本(我想还有更好的例子)。还有另一种情况-想象一下在编写Jawaharlal Nehru时可能出现的所有错误,其中大多数与真实姓名无关。同样,它们中的大多数可能在语音上是相似的。
显然,Lucene的纠错算法在这里帮不了我,因为它不能处理上述情况。
所以我的问题是:你知道有没有能够在名字中进行纠错的库?你能提出一些处理上述情况的算法吗?
我对c++或java中的库很感兴趣。至于算法建议,任何语言或伪代码都可以。
发布于 2012-11-06 16:19:02
有关语音匹配的信息,请参阅Soundex。
我认为修改Levenshtein距离算法,将“缩写为初始”和“从初始扩展”作为单距离编辑应该是直接的,但细节目前超出了我的能力范围。
发布于 2012-11-08 07:47:03
你也可以看看Metaphone。
https://stackoverflow.com/questions/13246800
复制相似问题