自然语言处理技术(NLP)在推荐系统中的应用

作者: 张相於,58集团算法架构师,转转搜索推荐部负责人,负责搜索、推荐以及算法相关工作。多年来主要从事推荐系统以及机器学习,也做过计算广告、反作弊等相关工作,并热衷于探索大数据和机器学习技术在其他领域的应用实践。
责编:何永灿(heyc@csdn.net)
本文为《程序员》原创文章,更多精彩文章请订阅《程序员》

概述

个性化推荐是大数据时代不可或缺的技术,在电商、信息分发、计算广告、互联网金融等领域都起着重要的作用。具体来讲,个性化推荐在流量高效利用、信息高效分发、提升用户体验、长尾物品挖掘等方面均起着核心作用。在推荐系统中经常需要处理各种文本类数据,例如商品描述、新闻资讯、用户留言等等。具体来讲,我们需要使用文本数据完成以下任务:

  • 候选商品召回。候选商品召回是推荐流程的第一步,用来生成待推荐的物品集合。这部分的核心操作是根据各种不同的推荐算法来获取到对应的物品集合。而文本类数据就是很重要的一类召回算法,具有不依赖用户行为、多样性丰富等优势,在文本信息丰富或者用户信息缺乏的场合中具有非常重要的作用。
  • 相关性计算。相关性计算充斥着推荐系统流程的各个步骤,例如召回算法中的各种文本相似度算法以及用户画像计算时用到的一些相关性计算等。
  • 作为特征参与模型排序(CTR/CVR)。在候选集召回之后的排序层,文本类特征常常可以提供很多的信息,从而成为重要的排序特征。

但是相比结构化信息(例如商品的属性等),文本信息在具体使用时具有一些先天缺点。

首先,文本数据中的结构信息量少。严格来说,文本数据通常是没有什么结构的,一般能够有的结构可能只是“标题”、“正文”、“评论”这样区分文本来源的结构,除此以外一般就没有更多的结构信息了。为什么我们要在意结构信息呢?因为结构代表着信息量,无论是使用算法还是业务规则,都可以根据结构化信息来制定推荐策略,例如“召回所有颜色为蓝色的长款羽绒服”这样一个策略里就用到了“颜色”和“款式”这两个结构化信息。但是如果商品的描述数据库中没有这样的结构化信息,只有一句“该羽绒服为蓝色长款羽绒服”的自由文本,那么就无法利用结构信息制定策略了。

其次,文本内容的信息量不确定。与无结构化相伴随的,是文本数据在内容的不确定性,这种不确定性体现在内容和数量上,例如不同用户对同一件二手商品的描述可能差异非常大,具体可能在用词、描述、文本长短等方面都具有较大差异。同样的两个物品,在一个物品的描述中出现的内容在另外一个物品中并不一定会出现。这种差异性的存在使得文本数据往往难以作为一种稳定可靠的数据源来使用,尤其是在UGC化明显的场景下更是如此。

再次,自由文本中的歧义问题较多。歧义理解是自然语言处理中的重要研究课题,同时歧义也影响着我们在推荐系统中对文本数据的使用。例如用户在描述自己的二手手机时可能会写“出售iPhone6一部,打算凑钱买iPhone7”这样的话,这样一句对人来说意思很明确的话,却对机器造成了很大困扰:这个手机究竟是iPhone6还是iPhone7?在这样的背景下如何保证推荐系统的准确率便成为了一个挑战。

但是文本数据也不是一无是处,有缺点的同时也具有一些结构化数据所不具有的优点:

  • 数据量大。无结构化的文本数据一般来说是非常容易获得的,例如各种UGC渠道,以及网络爬取等方法,都可穿获得大量文本数据。
  • 多样性丰富。无结构化是一把双刃剑,不好的一面已经分析过,好的一面就是由于其开放性,导致具有丰富的多样性,会包含一些结构规定以外的数据。
  • 信息及时。在一些新名词,新事物出现之后,微博、朋友圈常常是最先能够反应出变化的地方,而这些都是纯文本的数据,对这些数据的合理分析,能够最快得到结构化、预定义数据所无法得到的信息,这也是文本数据的优势。

综上所述,文本数据是一类量大、复杂、丰富的数据,对推荐系统起着重要的作用,本文将针对上面提到的几个方面,对推荐系统中常见的文本处理方法进行介绍。

从这里出发:词袋模型

词袋模型(Bag of Words,简称BOW模型)是最简单的文本处理方法,其核心假设非常简单,就是认为一篇文档是由文档中的词组成的多重集合(多重集合与普通集合的不同在于考虑了集合中元素的出现次数)构成的。这是一种最简单的假设,没有考虑文档中诸如语法、词序等其他重要因素,只考虑了词的出现次数。这样简单的假设显然丢掉了很多信息,但是带来的好处是使用和计算都比较简单,同时也具有较大的灵活性。

在推荐系统中,如果将一个物品看作一个词袋,我们可以根据袋中的词来召回相关物品,例如用户浏览了一个包含“羽绒服”关键词的商品,我们可以召回包含“羽绒服”的其他商品作为该次推荐的候选商品,并且可以根据这个词在词袋中出现的次数(词频)对召回商品进行排序。

这种简单的做法显然存在着很多问题:

首先,将文本进行分词后得到的词里面,并不是每个词都可以用来做召回和排序,例如“的地得你我他”这样的“停用词”就该去掉,此外,一些出现频率特别高或者特别低的词也需要做特殊处理,否则会导致召回结果相关性低或召回结果过少等问题。

其次,使用词频来度量重要性也显得合理性不足。以上面的“羽绒服”召回为例,如果在羽绒服的类别里使用“羽绒服”这个词在商品描述中的出现频率来衡量商品的相关性,会导致所有的羽绒服都具有类似的相关性,因为在描述中大家都会使用类似数量的该词汇。所以我们需要一种更为科学合理的方法来度量文本之间的相关性。

除了上面的用法,我们还可以将词袋中的每个词作为一维特征加入到排序模型中。例如,在一个以LR为模型的CTR排序模型中,如果这一维特征的权重为w,则可解释为“包含这个词的样本相比不包含这个词的样本在点击率的log odds上要高出w”。在排序模型中使用词特征的时候,为了增强特征的区分能力,我们常常会使用简单词袋模型的一种升级版——N-gram词袋模型。

N-gram指的就是把N个连续的词作为一个单位进行处理,例如:“John likes to watch movies.Mary likes movies too.”这句话处理为简单词袋模型后的结果为:

["John":1, "likes":2, "to":1, "watch":1, "movies":2
  • 6
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值