在我的应用程序中,我有一个功能,用户可以连接到不同的社交网络以获取朋友列表。例如,您可以通过linkedIn和Facebook获取您的朋友。
我想提供一个朋友列表,这是将来自不同社交网络的各种列表组合在一起的结果。问题是如何确定不同列表中的名称是否可能是同一个人?例如,Facebook可能会说“Jim Smith”和Linked In可能会说“Jim Smith,Phd”,我希望我的应用程序检测到他们是同一个人。
我已经查看了Levenshtein距离函数的字符串,但我不确定在考虑两个名称之前设置阈值是什么,可能相同,75%的置信度。
以下是我正在考虑的事情:
我打算使用apache commons StringUtils.getLevenshteinDistance()进行Leventstien计算。
x的价值是多少? 10%,20%,30%......等等?这是一个很好的算法,我的数学技能非常生疏,我不确定这是否有效。
有更好的方法吗?是否有一个标准库,人们应该使用这样的东西?
答案 0 :(得分:2)
我会选择一个自动算法来决定应该是什么阈值:
您可能需要考虑的替代方案是 machine learning - classification algorithms。在这里,如果user1与user2相同,则需要对(user1,user2)
进行calssify,答案为true
。
您可以使用相同的工具(统计测试,并使用cross-validation)来估计此方法的准确性。
(免责声明:虽然我认为自己是经验丰富的ML开发人员,但我从未试图用这种方法做过类似的事情。)