使用PHP,我从facebook和twitter获取好友列表,并将每个列表存储在一个关联数组中我有他们的名字和地址。我想根据fb和twitter上的朋友的名字和位置对他们进行比较,并提供一个相似度得分。
就像我想设定一个大约0.7的阈值,如果分数比一个人的分数高,那就意味着他们代表同一个实体。我使用过类似的php函数,但是它太基本了,它给了几乎每个朋友50-60%的匹配率,因为它只是基于名称中的单词。
有什么建议吗?
最佳答案
您可能需要考虑向量空间模型:将每个名称和位置表示为非常高维空间中的一个维度。将twitter表示为一个向量,将facebook表示为另一个向量。例如,如果我在facebook和twitter上都有一个名为Mike的朋友,“Mike”维度在这两个向量中都有一个非零值通过比较这两个向量之间的角度,我可以计算出相似度得分。较小的角度表示相似度较高一个简单的例子:
我的Twitter朋友们:
阿达
艾伦
贝丝
达纳
乔恩
我的Facebook好友:
安妮
贝丝
达纳
乔恩
空间包含维度:
推特向量:
t=
Facebook矢量:
f=
它们之间的角度等于ArcCos([f dot t t]/[| f |*| t |])
见https://en.wikipedia.org/wiki/Vector_space_model