基于标签/关键词的推荐

19

我想知道在标签驱动的电商环境中使用什么算法比较聪明:

  • 每个商品都有若干个标签。例如:

    商品名称:"Metallica - Black Album CD",标签:"metallica", "black-album", "rock", "music"

  • 每个用户都有一些标签和与之关联的朋友(其他用户)。例如:

    用户名:"testguy",兴趣标签:"python", "rock", "metal", "computer-science",好友:"testguy2", "testguy3"

我需要以一种复杂的方式通过检查其兴趣标签来向这些用户生成推荐结果。

想法:

  • 可以使用混合推荐算法,因为每个用户都有好友。(协同过滤 + 基于内容的推荐)。
  • 也可以根据用户标签找到相似的用户(同行),并为其生成推荐。

  • 也可以直接通过标签匹配用户和商品之间的标签进行推荐。

欢迎任何建议。我将在Python语言上实现此实验引擎,所以任何基于Python的库也受到欢迎。


5
请提供更多上下文,以便我能够准确翻译。 - msw
3
不错的问题。 - whybird
投票关闭,因为问题过于宽泛/工具推荐。 - Ciro Santilli OurBigBook.com
5个回答

18

1)为你的标签加权。

标签可以分为几个感兴趣的组:

  • 只有我标记的标签,我的朋友们没有
  • 一些我的朋友们标记的标签,但我没有
  • 由一些我的朋友们共享的标签和我自己标记的标签。

(有时您可能还想考虑朋友的朋友标签,但在我的经验中,这样做的努力并不值得。具体情况因人而异。)

确定该个体和/或该个体的朋友所感兴趣的所有标签,并为这些标签附加一个权重。一种简单的可能的标签权重公式是

(tag_is_in_my_list) * 2 + (friends_with_tag)/(number_of_friends)

请注意神奇数字2,它使你的意见价值是你所有朋友价值总和的两倍。请随意进行微调 :-)

2) 权衡你的项目

对于每个具有列表中任何标签的项目,只需将所有标签的加权值相加。 较高的值=更多的兴趣。

3) 应用阈值。

最简单的方法是向用户显示前n个结果。

更复杂的系统还会应用反标签(即不感兴趣的主题)并进行许多其他操作,但我发现这个简单公式既有效又快速。


1
非常感谢您的友善回答!我有点困惑这个公式:tag_is_in_my_list 究竟意味着什么?它是否代表二进制的1或0?祝好! - Hellnar
有任何关于此的示例/样本实现吗? - user962206

5
如果可以的话,找到一份O'Reilly出版的《集体智慧编程》(Programming Collective Intelligence),作者是Toby Segaran。书中有一个模型解决方案,可以完美地解决这个问题(还有很多其他非常好的内容)。

0

你的问题类似于产品推荐引擎,比如亚马逊广为人知的网站。它们使用一种称为关联规则的学习算法,基本上是根据用户和产品之间的共同特征Z建立用户X购买产品Y的条件概率。许多开源工具包实现了关联规则,例如OrangeWeka


0

您可以使用Python语义模块来为Drools指定规则,使用Python脚本语言。使用Drools可以轻松实现此操作。它是一个非常棒的规则引擎,我们用它来解决了几个推荐引擎问题。


0
我会使用受限玻尔兹曼机。它可以很好地解决类似但不完全相同的标签问题。

你能否再详细阐述一下这个答案,例如你会如何使用RBM? - dwanderson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接