我正在寻找可以让我识别出两个名字是同一个人的 gem 或项目。例如
J.R. Smith == John R. Smith == John Smith == John Roy Smith == Johnny Smith
我想你明白了。我知道没有什么是 100% 准确的,但我想得到至少能处理大多数情况的东西。我知道最后一个可能需要昵称数据库。
最佳答案
我认为一种选择是使用 Levenshtein distance 的 ruby 实现
两个字符串之间的 Levenshtein 距离定义为将一个字符串转换为另一个字符串所需的最小编辑次数,允许的编辑操作是插入、删除或替换单个字符。
然后你可以定义距离小于 X(X 是一个你必须调整的数字)的名字来自同一个人。
编辑 通过一点搜索,我找到了另一种基于语音的算法,称为 Metaphone
仍然有很多漏洞,但我认为在这种情况下,每个人能做的最好的事情就是给你备选方案,让你测试,看看什么最有效
关于ruby - 解析人名并在 Ruby 中匹配它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4731730/