美文网首页
Apache Gremlin基于内容的协同过滤推荐算法实现

Apache Gremlin基于内容的协同过滤推荐算法实现

作者: 娃娃学软件 | 来源:发表于2018-11-03 22:54 被阅读0次

    目的

    基于Apache Gremlin的协同推荐一文中描述了如何利用Apache Gremlin实现《玩具总动员》影片的基于用户协同过滤推荐算法。向对有共同爱好影片《玩具总动员》的观众推荐其它的影片。
    本文将继续介绍如何利用Apache Gremlin实现《玩具总动员》影片的基于内容的协同过滤算法实现。

    Apache Gremlin VS Toy Story

    推荐相似属性影片

    加入作为一个父亲想给自己的孩子挑选一个电影,而这个电影与《玩具总动员》影片有着很高相似属性,那么我们就可以利用在Apache Gremlin电影推荐图数据一文中建立的电影评级图数据,以及基于Apache Gremlin的协同推荐一文中定义的corated自定义遍历函数。实现代码如下:

    gremlin> m = [:]
    gremlin> x = [] as Set
    gremlin> v.out('hasGenera').aggregate(x).back(2).corated(3)
    .filter{it != v}.out('hasGenera').retain(x).back(2).title.groupCount(m) >> -1
    ==>null
    gremlin> m.sort{a,b -> b.value <=> a.value}[0..9]
    ==>American Beauty (1999)=949
    ==>Back to the Future (1985)=876
    ==>Toy Story 2 (1999)=871
    ==>Princess Bride, The (1987)=851
    ==>Groundhog Day (1993)=843
    ==>Shakespeare in Love (1998)=807
    ==>Forrest Gump (1994)=775
    ==>Men in Black (1997)=747
    ==>E.T. the Extra-Terrestrial (1982)=737
    ==>Bug's Life, A (1998)=700
    

    推荐属性相同的影片

    从上面的计算结果我们找到了合适的推荐影片,而且这些影片与《玩具总动员》的属性高度关联相似。
    但是,作为一个严格的父亲会发现上述的结果中有些影片虽然与《玩具总动员》高度关联相似,但是还是发现其中部分影片不适合儿童,例如《American Beauty》影片。于是我们就要更加对属性进行严格的控制,这位父亲希望能推荐的影片的属性完全和《玩具总动员》一致。针对这位父亲的需求,我们需要推荐的影片属性和《玩具总动员》一致,代码如下:

    gremlin> m = [:] 
    gremlin> x = [] as Set                                                                                                                                    
    gremlin> v.out('hasGenera').aggregate(x).back(2).corated(3)
    .filter{it != v}.filter{it.out('hasGenera')>>[] as Set == x}.title
    .groupCount(m) >> -1
    ==>null
    gremlin> m.sort{a,b -> b.value <=> a.value}[0..9]                                                                                                    
    ==>Toy Story 2 (1999)=871
    ==>Bug's Life, A (1998)=700
    ==>Chicken Run (2000)=465
    ==>American Tail, An (1986)=140
    ==>Aladdin and the King of Thieves (1996)=39
    ==>American Tail: Fievel Goes West, An (1991)=37
    ==>Rugrats Movie, The (1998)=34
    ==>Adventures of Rocky and Bullwinkle, The (2000)=21
    ==>Saludos Amigos (1943)=4
    
    Apache Gremlin

    想了解更多图计算的知识,请点击娃娃学软件

    相关文章

      网友评论

          本文标题:Apache Gremlin基于内容的协同过滤推荐算法实现

          本文链接:https://www.haomeiwen.com/subject/cnzhxqtx.html