RS推荐系统-文本+用户画像

在推荐系统中,每个用户和物品也有其大量的文本信息,我们需要通过大量的文本数据中挖掘出每个用户的画像。

用户方
在用户这一方,可以获取:

  • 注册资料中的姓名,个人信息
  • 发表过的评论,动态等
  • 个人的聊天记录

物品端

  • 物品的标题,描述
  • 物品本身的内容
  • 物品的其他基本属性文本

对于互联网产品而言,信息的表达是最常见的一种方式,数量多,存储小,所有在推荐系统中,文本数据的挖掘起到至关重要的作用。

构建用户画像

要在物品端和用户端构建出一个基础的用户画像,需要做一下事情:

  • 把所有非结构化的文本结构化,去粗取精,保留关键的信息
  • 根据用户行为数据把物品的结构化结果传递给用户,与用户自己的结构化信息合并

在以上描述中,将文本的结构化最为关键和基础,其准确性、粒度、覆盖面都决定了用户画像的质量。我们通常拿到的文本信息,都是非结构化的,但是计算机在处理时,只能使用结构化的数据索引,检索,然后向量化计算,所以分析文本,就是为了让非结构化的数据结构化。

物品端的文本信息

  • 关键词提取:最基础的标签来源,也为其他文本分析提供基础数据,常用TFIDF和TextRank。
  • 内容分类:将文本按照分类体系分类,用分类来表达较粗粒度的结构化信息。
  • 文本:在无人指定分类体系的前提下,无监督地将文本划分成多个类簇,常用有KMeans无监督聚类的方式。
  • 主题模型:从大量已有文本中学习主题模型,然后再预测新的文本在各个主题上的概率分布情况。
  • 嵌入:即Embedding,从词到篇章,无不可以学习这种嵌入表达。嵌入表达时为了挖掘出字面意思之下的语音信息,并且用有限的维度表达出来。

文本结构化算法

TF-IDF

  • TF词频;IDF逆向文档频率。计算出TF和IDF后,将两个值相乘,就得到每一个词的权重。根据该权重筛选关键词的方式有:
  • 给定一个TopN,提取K个权重最大的词语,虽然这样做简单直接,果总共得到的词个数少于 N,那么所有词都是关键词了,显然这样做不合理
  • 计算所有词权重的平均值,取权重在平均值之上的词作为关键词

TextRank

TextRank 这个名字看上去是不是和著名的 PageRank 有点亲戚关系?是的,TextRank 是 PageRank 的私生子之一,著名的 PageRank 算法是 Google 用来衡量网页重要性的算法,TextRank 算法的思想也与之类似,可以概括为:

  • 文本中,设定一个窗口宽度,比如 K 个词,统计窗口内的词和词的共现关系,将其看成无向图。图就是网络,由存在连接关系的节点构成,所谓无向图,就是节点之间的连接关系不考虑从谁出发,有关系就对了;
  • 所有词初始化的重要性都是 1;
  • 每个节点把自己的权重平均分配给“和自己有连接“的其他节点;
  • 每个节点将所有其他节点分给自己的权重求和,作为自己的新权重;
  • 如此反复迭代第 3、4 两步,直到所有的节点权重收敛为止。

通过 TextRank 计算后的词语权重,呈现出这样的特点:那些有共现关系的会互相支持对方成为关键词

聚类

传统聚类方法在文本中的应用,今天逐渐被主题模型取代,同样是无监督模型,以 LDA 为代表的主题模型能够更准确地抓住主题,并且能够得到软聚类的效果,也就是说可以让一条文本属于多个类簇。
LDA 模型需要设定主题个数,如果你有时间,那么这个 K 可以通过一些实验来对比挑选,方法是:每次计算 K 个主题两两之间的平均相似度,选择一个较低的 K 值;如果你赶时间,在推荐系统领域,只要计算资源够用,主题数可以尽量多一些。
另外,需要注意的是,得到文本在各个主题上的分布,可以保留概率最大的前几个主题作为文本的主题。LDA 工程上较难的是并行化,如果文本数量没到海量程度,提高单机配置也是可以的,开源的 LDA 训练工具有 Gensim,PLDA 等可供选择。

词嵌入
词嵌入,即Word Embedding。前面讲到的结构化方案,除了LDA,其他得到的都是一些标签,而这些标签无一例外都是稀疏的,而词嵌入的方式则能够为每一个词学习得到一个稠密的向量。
这样说可能很抽象,换个说法,一个词可能隐藏很多语义信息,比如北京,可能包含“首都、中国、北方、直辖市、大城市”等等,这些语义在所有文本上是有限的,比如 128 个,于是每个词就用一个 128 维的向量表达,向量中各个维度上的值大小代表了词包含各个语义的多少。
拿着这些向量可以做以下的事情:

  • 计算词和词之间的相似度,扩充结构化标签;
  • 累加得到一个文本的稠密向量;
  • 用于聚类,会得到比使用词向量聚类更好的语义聚类效果。

这方面当然就属大名鼎鼎的 Word2Vec 了。Word2Vec 是用浅层神经网络学习得到每个词的向量表达,Word2Vec 最大的贡献在于一些工程技巧上的优化,使得百万词的规模在单机上可以几分钟轻松跑出来,得到这些词向量后可以聚类或者进一步合成句子向量再使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Wiggles

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值