1

使用 PHP,我从 facebook 和 twitter 获取朋友列表,并将每个列表存储在关联数组中。我有他们的名字和地点。我想根据他们的姓名和位置对来自 fb 和 twitter 的朋友进行比较,并提供相似度分数。

就像我想设置一个大约 0.7 的阈值,如果分数高于一个人的分数,那么这意味着它们代表同一个实体。我使用了php函数similar_text,但它太基础了,几乎每个朋友都有50-60%的匹配度,因为它只是基于名字中的单词。

有什么建议么?

4

1 回答 1

1

您可能需要考虑向量空间模型:将每个名称和位置表示为非常高维空间中的一个维度。将 twitter 表示为一个向量,将 facebook 表示为另一个向量。例如,如果我在 facebook 和 twitter 上都有一个名叫 Mike 的朋友,则“Mike”维度在两个向量中都有一个非零值。通过比较这两个向量之间的角度,我可以计算为相似度得分。较小的角度表示较高的相似度。一个简单的例子:

我的推特朋友:Ada Alan Beth Dana Jon

我的 facebook 好友:Anne Beth Dana Jon

空间包含维度:< Ada, Alan, Anne, Beth, Dana, Jon >

推特向量: t = < 1, 1, 0, 1, 1, 1 >

Facebook 向量: f = < 0, 0, 1, 1, 1, 1 >

它们之间的角度等于 ArcCos( [ f dot t ] / [ | f | * | t | ] )

https://en.wikipedia.org/wiki/Vector_space_model

于 2013-04-24T05:07:35.173 回答