图像
2016-08-09 21:03

1.主要方法

   将用户所有相关的tag组合成一个query,用户对某个tag的关心程度通过设定字段的boost来体现;Github的所有项目看做多个document,分成title和description两个域,基于Lucene实现用户和项目的匹配算法,取出Top n的项目为用户推荐。


2.实验结果

    例如:为stackoverflow用户ID=20089推荐项目,实验中取了排名前50个匹配项目,项目Id及匹配分数                     如下图所示


           image

     

             根据匹配分数拿到github项目具体信息:

            image

       stackoverflow的用户信息(可参考stackoverflow的top tags,反映了用户的关心领域)

    image



    结论:从上图可以看出,推荐的项目与用户的关心领域是密切相关的,top tags上是与前端相关的标签js,jquery等,匹配的项目也是与前端相关。由此可以认为该算法可以为用户从海量项目中筛选出用户所关心的项目

     优化:用户的关心领域的考量可以加入时间因子,某个帖子的发布时间越近,与帖子相关的tag应该获取更高的权重,存储tag的最近更新时间,取其与第一个stackoverflow帖子的时间差的函数值作为参考。


3.下一步工作

   上述工作得到了用户的所关心的领域的匹配项目,需要进一步筛选,项目本身有优劣之分,用户也有技术能力高低,如何确定该项目是否值得向某用户推荐,需要用户项目两个方面来分析。 首先,还是从项目出发,普遍认为流行的项目会更吸引用户关注,通过github项目属性,比如watch,fork,contributor,pull request等,皆能体现用户参与度。分析项目属性,对项目进行评价,记你一步筛选出比较流行的、优秀的项目推荐给用户。

           

回复 (2)
11879?1461414358
曾雅蓉 8年前
5?1460204756
尹刚 8年前
很好!请同步考虑,如何验证你的结果是好的?

可以通过邮件地址将两个平台的用户关联起来,看一段时间后该用户是否有涉猎我们推荐的项目。或者直接向stackoverflow有留邮件地址的用户,发邮件确认。

© Copyright 2007~2021 国防科技大学Trustie团队 & IntelliDE 湘ICP备 17009477号

问题和建议
还能输入50个字符 提交

加入QQ群

关注微信APP


×