三天搭建内容推荐系统——标签挖掘、画像搭建、算法推荐

推荐系统的起步阶段一般都从基于内容的推荐开始做起,内容推荐系统可以快速搭建并且快速见效。要把基于内容的推荐做好,重要的是要做好“抓、洗、挖、算”:

  • 抓:持续抓取数据来丰富自己的内容源和分析维度是必不可少的(即便是对于千亿大厂来说);
  • 洗:冗余、垃圾、政治、涩情等内容都需要被清洗出去;
  • 挖:不管是抓来的数据还是自家的数据,如果不深入挖掘,那就是对资源的极度浪费。这是推荐系统最重要的环节;
  • 算:将用户的兴趣和物品的属性相匹配,计算出更合理的相关性。这是推荐系统的使命。

快速搭建内容推荐系统,大体上可以分成三个步骤:

  1. 构建标签库(标签挖掘):利用文本挖掘算法,把非结构化内容进行结构化,去粗取精,保留关键信息,构建高质量的标签库(其结果的准确度、粒度、覆盖面决定了用户画像的质量);
  2. 构建用户兴趣画像(标签选择):根据用户注册数据、行为数据,把第一步的标签传递给用户,作为用户的兴趣标签;
  3. 内容推荐算法:通常包括相似性计算、相关性计算和学习算法等

1. 构建标签库(标签挖掘)

标签挖掘是内容推荐中最重要的一环,本质上是将非结构化数据进行结构化的过程。利用成熟的NLP算法分析物品端的文本信息,可以得到如下信息:

  • 关键词提取:最基础的标签来源,也为其他文本分析提供基础数据,常用TF-IDF和TextRank。
  • 嵌入Embedding:从词到篇章,都可以学习其嵌入表达。嵌入表达可以挖掘出字面意思之下的语义信息,并且用有限的维度表达出来。
  • 文本分类:将文本按照分类体系进行分类,用分类来表达粗粒度的结构化信息。
  • 命名实体识别:人物、位置、著作、影视剧、历史事件和热点事件等,常用基于词典的方法结合CRF模型(Conditional Random Field,条件随机场)。
  • 文本聚类:在无人制定分类体系的前提下,无监督地将文本划分成多个类簇。虽然不是标签,类簇编号也是用户画像的常见构成。
  • 主题模型:从大量已有文本中学习主题向量,然后再预测新的文本在各个主题上的分布概率。主题模型也很实用,它其实也是一种聚类思想。主题向量不是标签形式,但也是用户画像的常用构成。

1.1 关键词提取

关键词提取是最基础的标签来源,也为其他文本分析提供基础数据。常用方法有TF-IDF和TextRank,都属于无监督方法,无需标注数据。

1.1.1 TF-IDF

TF-IDF提取关键词的思想来自信息检索领域,其思想很朴素:

  • 在一篇文章中,反复出现的词会更重要;
  • 在所有文本中都出现的词不重要。

这两点分别量化成TF和IDF两个指标:
TF(Term Frequence,词频)
某一个词在文本中出现的次数。由于在短文本中,词频通常都是1,因此TF在长文本中更加有用。
IDF(Inverse Document Frequence,逆文本频率指数)
在已有的所有文本中,统计某一词出现在了多少文本中,也就是文档频率(记为n),以及一共有多少文本(语料库规模,记为N),
IDF的计算公式为:

IDF=log(N/(n+1))

IDF的计算公式有如下几个特点:

  • 所有词的语料库规模N都是一样的,因此文档频率n越小的词,IDF值越大。
  • 如果一个词的文档频率n为0,会得到无穷大的IDF值,因此分母中要有一个加1,起平滑作用。
  • 对于新词,文档频率n应该是0,但也可以默认复制为所有词的文档频率平均数、众数或中位数。

IDF值的本质与信息熵息息相关,如果一个词在所有文档中出现的频率很大,那么它在一个文档中带来的信息量就很小。
IDF是提前统计好的:利用TF-IDF方法提取关键词,有一个必要的资源,就是提前根据词典计算的IDF值,尤其是对于短文本,TF值不生效,几乎就是依赖IDF排序。
TF*IDF
计算出TF值和IDF值后,将两个值相乘就能得到每一个词的权重。

根据权重筛选关键词有如下几种方式:

  • 保留K个权重最高的关键词;
  • 计算权重均值,保留均值之上的关键词;
  • 设定权重阈值,保留阈值之上的关键词;
  • 针对特定场景的过滤规则,如:仅提取动词和名词。

1.1.2 TextRank

TextRank的思想与PageRank类似,可以概括为以下几点:

  • 文本中设定一个窗口宽度,比如K个词,统计窗口内词与词的共现关系,将其看成无向图;
  • 所有词初始化的重要性都是1;
  • 每个节点把自己的权重平均分配给和自己有连接的其他节点;
  • 每个节点将所有其他节点分配给自己的权重求和,作为自己的新权重;
  • 以上两步反复迭代,知道所有的节点权重收敛为止。

那些有共现关系的词,都会互相支持对方成为关键词。


常规的抽取标签方法,得到的标签都是稀疏的,而且为了覆盖广泛,往往会引入大量的同义或者近义标签。Embedding可以解决这个问题。

1.2 Embedding向量——用低维向量表示一个物品

Embedding是一个数学概念,也叫作嵌入。嵌入表达可以挖掘出字面意思之下的语义信息,并且用有限的维度表达出来
通过学习得到每个词低维度的稠密向量,有了这个向量就可以计算词之间的距离,从而实现标签的归一化,提高标签库的经济性。

比如某个词有100个语义,于是这个词可以用一个100维的向量表达,向量中各个维度值的大小代表了词包含的各个语义的量。

学习Embedding向量也叫作表示学习,常见方法有Word2Vec、GloVe、FastText。

其中FastText是Facebook开源工具,还可用于做文本分类。

1.3 文本分类

图文信息流APP的资讯内容需要被自动分类到不同的频道中,从而得到最粗粒度的结构化信息,也可被推荐系统用来在冷启动时探索用户兴趣。
短文本分类方面最经典的算法是SVM,现在最常用的工具是FastText。
FastText是一个工具,它可以做两件事——学习词语的Embedding向量以及做文本分类,尤其是句子分类。
句子分类的场景就是给句子打标签,一个句子输出多个标签。


命名实体,是文本中具有特定意义的实体。例如地名、电影名、书籍名等,是一类非常有价值的标签。将这些描述客观实体的词,从非结构化的文本中识别出来, 有助于构建高质量的标签库。

1.4 命名实体识别

命名实体识别(NER,Named-Entity Recognition)在NLP技术中是非常成熟的技术方向,通常被认为是一种序列标注问题,和分词、词性标注属于同一类问题。
所谓序列标注问题,就是从左到右遍历一个序列中的每个元素,一边遍历一边对每一个元素分类,分类的符号因序列标注问题的不同而不同。序列标注不是一个简单的分类问题,因为通常情况下预测某个元素的标签时会依赖前一个元素。
序列标注问题经典的模型是HMM(Hidden Markov Medel,隐马尔可夫模型)和CRF(Conditional Random Field,条件随机场);也可使用比较实用的词典法。

1.5文本聚类

文本聚类如何用在挖掘标签库上呢?

  1. 对全量文本聚类,得到每一个类的中心;
  2. 将新的文本向最近的类中心靠拢,并归于某个聚类;
  3. 给每个类赋予一个独一无二的ID,也可以从该类中找出最能代表该类的主题词来作为类别标签。

文本聚类一般选择主题模型或者隐语义模型(LSI,Latent Semantic Index)。以LDA(Latent Dirichlet Allocation,潜在狄利克雷分布)为代表的主题模型能更准确地抓住主题,并且能够得到软聚类效果,也就是说可以让一条文本属于多个类簇。

附:衡量标签库质量的方法

  • 标签覆盖面:能覆盖的用户/物品越多越好;
  • 标签健康度:好的标签库,其标签覆盖分布熵要高,熵越高分布越均匀;
  • 标签经济型:标签之间的相似性越小越好。

前文讲解了如何将用户端和物品端文本结构化,从而得到标签、关键词、Embedding向量等。接下来看看如何把物品的结构化信息传递给用户。

2. 构建用户兴趣画像(标签选择)

我们把用户是否消费物品看成一个分类问题。用户用实际行动帮我们标注了若干数据,那么挑选出他实际感兴趣的特性就变成了特征选择问题
最常用的是卡方检验信息增益两种方法,这两种方法都是有监督学习,基本思想如下:

  • 把物品的结构化内容看成文档;
  • 把用户对物品的行为看成类别;
  • 每个用户访问过的物品就是一个文本集合;
  • 在这个文本集合上使用特征选择算法选出每个用户关心的东西。

卡方检验与信息增益的不同之处在于:前者针对每个分类单独筛选出一套标签出来,后者则是全局统一筛选。

2.1 卡方检验

卡方检验(Chi-Square Test)本身是一种有监督的特征选择方法。
在文本分类任务中,提取关键词是为分类人物服务的,而不仅仅是挑选出直观上看着重要的词。
卡方检验本质上在检验“词Wi和某个类别Cj相互独立”这个假设是否成立。
卡方值越大,和这个假设偏离越大,越说明这个词Wi和类别Cj有关联,这个词就是关键词了。
计算第i个词Wi和第j个类别Cj的卡方值,公式:
在这里插入图片描述
需要以下四个统计量:

  • 类别为Cj的文本中,出现词Wi的文本数A;
  • 类别为Cj的文本中,没有出现词Wi的文本数C;
  • 其他类别中,出现词Wi的文本数B;
  • 其他类别中,没有出现词Wi的文本数D;
  • N为全文本量,由于是比较卡方值的大小,N其对每个词都一样,计算时可以省略。

2.2 信息增益

信息增益(IG,Information Gain)在数据挖掘的决策树分类算法中应用得最多,经典的决策树算法挑选分裂节点时,就要计算各个属性的信息增益,并且始终挑选信息增益最大的节点作为分裂点。
信息增益大的词可以作为关键词,计算步骤如下:

  1. 统计全局文本的信息熵
  2. 统计每个词的条件熵,即知道了一个词后再统计文本的信息熵,只不过这里要分别计算包含词和不包含词两部分的信息熵,再按各自文本比例加权平均
  3. 每个词的信息增益 = 全文本信息熵 - 单个的条件熵

备注:要理解信息增益,必先理解信息熵。但对于大多数能看到这儿的同学,想必对于信息熵的概念早已耳熟能详。

3.内容推荐算法

3.1 相似性算法——余弦相似度

对于基于内容的推荐系统,最简单的推荐算法当然是计算相似性:
用户的画像内容表示为稀疏向量,同时内容端也有对应的稀疏向量,在两者之间计算余弦相似度,根据相似度对推荐物品排序。

3.2 相关性算法——BM25F

如果再进一步,可以更好地利用内容中的结构化信息:
直观上新闻的标题更重要,所以我们可以借鉴信息检索中的相关性计算方法来做推荐排序计算,即BM25F算法。

3.3 学习算法——LR(逻辑回归)、GBDT(梯度提升树)

收集优化目标类行为的日志数据,将其转换成训练样本,然后训练预估模型。
每个样本由两部分组成:

  • 特征变量可以包含用户端的画像内容、物品端的结构化内容,可选的有日志记录时的一些上下文场景信息,如时间、位置、设备。
  • 目标变量是用户行为,作为标注信息,包含“有反馈”和“无反馈”。

用这样的样本训练一个二分类器时,常用的模型师逻辑回归和梯度提升树,或二者的结合。在推荐匹配时,预估用户发生行为的概率,并按照概率排序。

小结

基于内容的推荐系统一般是推荐系统的起步阶段,且会持续存在:

  • 内容数据始终存在并蕴含了丰富的信息,不用太浪费;
  • 产品冷启动阶段没有用户行为,别无选择;
  • 新的物品要被推荐出去,首选内容推荐。

本文主要梳理了内容推荐的三个主要步骤:
一、构建标签库
使用文本挖掘算法,分析所有能分析的文本内容,结构化后构建高质量的标签库。
二、构建用户兴趣画像
根据用户行为数据,为用户构建具有很高覆盖度区分度的兴趣画像。
把用户的正负反馈看成分类问题,对应的物品标签看成特征,使用特征选择方法为每一位用户构建用户画像。
三、推荐算法

  • 相似性计算——余弦相似度
  • 相关性计算——BM25F
  • 机器学习——LR(逻辑回归)、GBDT(梯度提升树)

参考文献

[1] 陈开江. 推荐系统[M]. 电子工业出版社, 2019-10.

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值