返回 登录
-1

《纽约时报》如何打造新一代推荐系统

阅读4899

作者:Alexander Spangher
译者:李雅慧
原文链接:Building the Next New York Times Recommendation Engine


《纽约时报》每天发布超过300篇文章、博客和鲜活的故事。

通过精炼读者获取这些内容的途径,即在移动应用和网站上基于读者喜好调整文章布局,能够帮助读者找到与他们相关的内容,比如在正确的时间推送读者感兴趣的内容、重大事件的个性化补充内容、符合他们偏好的多媒体格式故事等。

本文将介绍最近在改造《纽约时报》推荐算法的过程中所做的工作,目前该算法主要应用于《纽约时报》网站“Recommended for You”(为您推荐)栏目。

历史

基于内容的过滤

新闻推荐必须要适用于新鲜的内容:许多读者还没有浏览过的突发新闻。因此,在发布时可用的文章数据就显得至关重要,这些数据包括:话题、作者、频道和每篇文章相关的关键字标签。

我们的第一个推荐系统就是根据这些关键词标签来做出推荐的。通过使用文章的标签和用户30天内的阅读历史,算法找出已经被阅读过的内容相似的文章。

这种方法依赖于内容模型,基于内容的推荐算法有很多种,它是其中之一。

该方法从一开始就具有很强的吸引力:如果一位读者阅读了10篇含有“Clinton”(克林顿)标签的文章,那么以后如果出现含有“Clinton”标签的文章他们很可能会喜欢。这种方法不仅适用于过去的内容,也同样适用于新内容,因为它依赖于内容发布时可用的数据。

然而,依赖于内容模型,有时可能产生意想不到的效果。因为算法是基于标签在语料库中的稀缺性来赋予权重的,少见的标签影响大。绝大多数情况下这种方法有效,但偶尔也会降低用户的体验。比如,有位读者指出,虽然她关注与同性相关的新闻,但她偶尔会在“婚礼”栏目中看到系统给她推荐与异性恋夫妇婚礼相关的报道。这就是因为“婚礼和订婚”这个低频标签曾经在一篇之前的文章中被读者点击,因此权重高于其他也许更符合这位读者兴趣的标签。

协同过滤

为了弥补前述方法的不足,我们测试了协同过滤方法。协同过滤基于有共同特征的读者所阅读的内容来过滤文章;在我们的案例中,“共同特征”是由阅读历史来决定的。

这种方法也颇有吸引力:如果一位读者的阅读偏好与另一位读者非常相似,那么这位读者读过的文章,另一位读者也可能感兴趣,反之亦然。

然而,这种方法在推荐最新发布的未阅读文章时并不奏效:与某个读者群相关的最新文章并没有被这个读者群中的任何一个读者阅读过。协同过滤可能也会在假设情况下以一种狭隘的视角聚集一些阅读模式。

现行做法

现在看来,结合两种技术可以取二者所长。我们建立了一种算法,灵感来源于“协同话题模型”(Collaborative Topic Modeling, CTM)技术,算法由四部分组成:

  1. 基于内容建模;
  2. 根据监测来自于读者的信号来调整模型;
  3. 基于读者偏好建模;
  4. 基于偏好和内容之间的共同特征来做出推荐。

概述

算法建模的第一步是把每篇文章处理成与其相关的话题集合。可以把话题看成是一个没有被观察到的主题,比如“政治”或“环境”,这个主题影响了文章中我们能够观察到的文字。举个例子,如果一篇文章与环境相关,那么我们期望文章中出现类似“树”或“保护”这类单词。

我们基于每位读者的话题偏好来对他们建模。然后可根据文章话题与读者偏好话题的匹配程度来推送相关文章。

下面举个例子:假设所有上个月《纽约时报》发布的文章都可归属于两个话题,我们基于这个假设来运行算法。在这个条件下,算法会大致将这些话题识别为两类:“政治”和“艺术”。当算法发现这样一篇文章:《美国在伊拉克的足迹进一步深入》,这篇文章会被标记为100%的“政治”;当发现A.O.Scott(译者注:《纽约时报》首席影评人)的一篇影评时,这篇文章会被标记为100%“艺术”。算法还可对文章混合标记,比如一篇与艺术政治相关的文章:《弗里克博物馆放弃遭受质疑的翻新方案》,被标记为50%的“政治”文章和50%的“艺术”文章。

在“政治”–“艺术”空间图中,也许可以用这种方式来描述:

图片描述

下一步,假设读者60%的时间里喜欢阅读“艺术”文章,在40%的时间里喜欢阅读“政治”文章。我们可以在图中用红色的x表示这位读者。最为神奇的一点是,他们在空间上接近于与自己兴趣一致的文章,即便他们还没有阅读过这些文章;我们给读者推荐的就是在空间上最接近于他们的文章。

还有一些需要进一步回答的问题。这个话题空间图能捕捉模棱两可的单词用法吗?还有,如何才能最好地观察读者偏好?毕竟,用户点击并不是最稳健的数据来源:我相信在有时你点击的内容并不是自己真正喜欢的,有时又错过了自己会感兴趣的内容。

我们仔细测试了很多方案,建立的算法让能够更好的回答这些问题,并且提供了一个新的理解《纽约时报》的强大方法。

算法由三部分组成:

  1. 如何基于一篇文章的文本来建立该文章的模型。
  2. 如何基于