Ber*_*ala 3 language-agnostic nlp
我不是自然语言编程学生,但我知道这不是简单的strcmp(n1,n2).
这是我到目前为止所学到的:
我不是在寻找拼写替代品!假设输入的拼写是正确的.
例如,下面的所有名称都可以指同一个人:
我试着:
注意:我的任务不是在文本中查找名称,而是比较2个名称.例如
name_compare( "James Brown", "Brown, James", "en-US" ) ---> 99.0%
Run Code Online (Sandbox Code Playgroud)
我使用Tanimoto Coefficient在Python中快速(但不是超级)解决方案:
"""
Formula:
Na = number of set A elements
Nb = number of set B elements
Nc = number of common items
T = Nc / (Na + Nb - Nc)
"""
def tanimoto(a, b):
c = [v for v in a if v in b]
return float(len(c)) / (len(a)+len(b)-len(c))
def name_compare(name1, name2):
return tanimoto(name1, name2)
>>> name_compare("James Brown", "Brown, James")
0.91666666666666663
>>> name_compare("Berry Tsakala", "Bernard Tsakala")
0.75
>>>
Run Code Online (Sandbox Code Playgroud)
编辑: 指向优秀且有用的书籍的链接.