2013-04-24 28 views
1

使用PHP我從Facebook和Twitter獲取好友列表,並將每個列表存儲在關聯數組中。我有他們的名字和地點。我想根據他們的姓名和地點對來自fb和twitter的朋友進行比較,並提供相似度得分。算法從Facebook和Twitter朋友中找到相似度分數?

就像我想設置一個約0.7的閾值,如果分數多於一個人的分數,那麼這意味着它們代表了同一個實體。我已經使用php函數similar_text,但它太基本了,它幾乎爲每個朋友提供了50-60%的匹配,因爲它只是基於名稱中的單詞。

有什麼建議嗎?

回答

1

您可能想要考慮矢量空間模型:將每個名稱和位置表示爲維度非常高的空間中的維度。將twitter表示爲一個矢量,將facebook表示爲另一個矢量。例如,如果我在facebook和twitter上有一個名爲Mike的朋友,則「Mike」維在兩個向量中都具有非零值。通過比較這兩個向量之間的角度,我可以計算出相似度分數。角度越小表示相似度越高。一個簡單的例子:

我的Twitter朋友: 阿達 艾倫 貝絲 達納 喬恩

我的Facebook朋友: 安妮 貝絲 達納 喬恩

空間包含尺寸: <阿達, Alan,Anne,Beth,Dana,Jon>

Twitter的矢量: = < 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

+0

這是一個好主意,根據名稱計算相似度,我有一個問題,我該如何將位置呢?就像我有兩套Ada Alan Beth Dana Jon,一個住在洛杉磯,另一個住在紐約。 – 2013-04-24 15:46:42