我想比较不同格式的名称,例如:“乔治·W·布什”,“乔治·布什”,“乔治·沃克·布什”,“布什,乔治·沃克”,“布什,GW”,“布什,乔治”等。带点(“。”)的也很少,但我从列表中省略了它们,因为无论如何我都将其标准化。实际上,逗号(“,”)也将被剥离。
确定两个给定名称是否实际代表同一个人的最佳方法是什么?我曾考虑过使用nameparser
并构建比较算法,但是请提供其他可能的选择。使用Python标准模块的任何方法也都可以。
答案 0 :(得分:1)
最准确的方法是使用NLP库,例如spacy。它可以让您计算单词之间的相似度。
如果您想要一种更简单的方法,则可以实现一个简单的算法,例如:
Object.defineProperty(Array.prototype, 'first', {
value() {
return this.find(() => true);
}
});
console.log( ['a', 'b', 'c'].first() );
然后测量两个结果字符串之间的差异...
但这显然不会给出绝对结果。
答案 1 :(得分:1)
有一个开放源代码库,该库很有用,或者至少可以用作构建更多功能的基础。
样品用量:
>>> from whoswho import who
>>> who.match('Bush, G.W.', 'George W. Bush')