我正在尝试设计一种算法,用于对姓名进行纠错。我的方法是建立一个包含正确姓名的数据库,计算每个姓名与输入姓名之间的编辑距离,然后建议5或10个最接近的姓名。
这项任务与标准单词纠错有很大不同,因为有些姓名可能会被缩写。例如,“Jonathan Smith”和“J. Smith”实际上非常相似,可以轻松地被认为是同一个名字,因此如果不是0,则编辑距离应该非常小。另一个挑战是有些姓名可能会以不同的方式书写,但发音相同。例如,Shnaider和Schneider是由不同语境的人写的同一个名字的版本(我想还有更好的例子)。还有另一种情况 - 想象一下在写Jawaharlal Nehru时可能出现的所有可能的错误,其中大多数与真实姓名无关。同样,它们中的大多数在音韵上可能是相似的。
显然,Lucene的纠错算法在这里对我没有帮助,因为它不能处理上述情况。
因此,我的问题是:您是否了解任何能够对姓名进行纠错的库?您能否提出一些处理以上情况的算法?
我对C ++或Java中的库感兴趣。至于算法提议,任何语言或伪代码都可以。
这项任务与标准单词纠错有很大不同,因为有些姓名可能会被缩写。例如,“Jonathan Smith”和“J. Smith”实际上非常相似,可以轻松地被认为是同一个名字,因此如果不是0,则编辑距离应该非常小。另一个挑战是有些姓名可能会以不同的方式书写,但发音相同。例如,Shnaider和Schneider是由不同语境的人写的同一个名字的版本(我想还有更好的例子)。还有另一种情况 - 想象一下在写Jawaharlal Nehru时可能出现的所有可能的错误,其中大多数与真实姓名无关。同样,它们中的大多数在音韵上可能是相似的。
显然,Lucene的纠错算法在这里对我没有帮助,因为它不能处理上述情况。
因此,我的问题是:您是否了解任何能够对姓名进行纠错的库?您能否提出一些处理以上情况的算法?
我对C ++或Java中的库感兴趣。至于算法提议,任何语言或伪代码都可以。