我有三个主要模特。用户,照片和关系。
关系模型由两个字段= from_user,to_user组成。当userA(from_user)跟随UserB(to_user)时,我想显示与userB类似的其他帐户到userA。 userA将更倾向于关注与userB类似的帐户。我应该采用什么方法来获得类似帐户的列表?
我能立即想到的第一个例子是Instagram&在您关注用户后立即显示类似帐户的Twitter我想也许他们展示的建议账户是多组交叉的结果。
在UserB的所有“跟随”关注者之间进行设置交叉可能是一种可能的解决方案。这将生成一个集合,显示UserB的关注者遵循的所有常见用户。当这个集合呈现给userA时,userA也可能倾向于关注此集合上的人,因为userB的粉丝也跟随他们。我的逻辑是,用户B的粉丝可能会有共同的兴趣。这种共同兴趣可能是他们首先关注用户B的原因之一。 userB的关注者很可能也会关注类似于userB的其他帐户。
我开始考虑这个问题的原因完全是因为我前几天Quora发现了一个问题。
一位用户提到:
1。你关注的人跟随的人。我对Twitter的绝大部分用途都是让媒体人知道他们正在做什么。大多数建议都是他们遵循的帐户。
2。匹配的电子邮件。你认识的人上传了他们的地址簿或电子邮件活动以进行“挖掘”,你就在列表中。 LinkedIn真的好像喜欢这个,因为大多数建议都是我实际上并不知道的人,但我几年前通过电子邮件与他们进行了短暂的互动。
正如你们有些人所说,这可能是一个开放式的问题,但我决定在堆栈上给它一个破解,看看你们有些人已经采用了其他实现。如果这个问题不适合堆栈溢出,请帮我将它指向某个地方,也许是另一个堆栈交换社区。
谢谢
答案 0 :(得分:0)
https://www.facebook.com/help/501283333222485/
我认为我有一个很好的起点。谢谢大家的帮助。
答案 1 :(得分:0)
也许你应该使用Strongly Connected Components的图论理论。您的模型可以被认为是有向图,其中顶点对应于用户,边是“跟随”关系。
观察上图。如果“用户b”跟在“用户c”之后,推荐“用户d和h”是合理的,这些用户与“用户c”位于同一个强连接组件中。
Tim Roughgarden在Coursera的“算法导论”课程中提出了这种方法(如answer所述)。
你可以使用类似的方法与其他类型的定向或无向关系,如“与...一起研究”,“与...合作”等,以找到最有可能“相似”的用户。