文本数据下的用户画像

一、概述

1、用户标签的获取:喜好关键词表:一个key-value 键值对。

用户喜好的关键词-喜好程度”这样的Key-Value对。而这个map最开始当然是空的,而从任意时刻开始,我们可以开始跟踪某用户的浏览行为,每当该用户新浏览了一条新闻,我们就把该新闻的“关键词-TFIDF值”“插入”到该用户的喜好关键词表中。当然这个“插入”要考虑关键词表里已经预先有了某预插入的关键词的情况,那么在这个基础上,我们可以将预插入的关键词的TFIDF值直接和词表里的值加起来。

当然,考虑到存储问题,我们可以为用户的喜好关键词表设定一个容量上限,比如最多1000个词,当然具体数值还是需要在实际运行过程根据效果做调整。
2、文本标签的获取:文本的关键词、主题、嵌入向量等。

3、通过隐语义模型, 为用户推荐感兴趣的内容。

基于内容的推荐系统,最简单的当属计算用户与物品之间的相似度了。具体来说,物品画像有对应的稀疏向量,用户画像也有对应的稀疏向量,两者之间计算余弦相似度,之后按照相似度结果对物品进行排序。

使用上面的简单算法有一个天然优势就是可解释性很强,但是并不属于机器学习方法,因为没有考虑推荐系统的目标,在 推荐系统中重要却又容易被忽视的问题有哪些 中介绍了目标思维的重要性,如果要考虑目标的话,我们可以构建一个监督学习模型。

具体以实际应用场景来说,首先要确定我们推荐系统的目标,可以是点击率、购买率、阅读时间长短等等,目标需要根据不同的业务和场景来确定。确定了目标之后,我们开始收集跟目标相关数据来作为训练数据。

每一个训练数据样本都包含两部分,一部分是特征,包含用户画像,物品画像以及一些上下文信息,比如时间、地理位置、网络环境、设备等等,另一部分是目标,目标的数据是由用户交互行为得到的,比如标注用户是否点击,是否购买,阅读时间等。

接下来根据训练样本来训练分类器或者回归器,取决于推荐系统目标(目标为点击率,购买率时属于分类问题,阅读时间长短属于回归问题),按照以上这种方式构建的推荐系统,可以一直去迭代优化。

总结

总结一下,基于内容的推荐有一些天生的优势,也是非常重要的,基于内容推荐时,需要两类数据:物品画像,用户画像。基于内容来构建推荐系统可以采用的算法有简单地相似度计算,也有使用机器学习构建监督学习模型。

二、定义

用户画像是一个向量,是推荐系统构筑过程中的一个环节。有两个关键:维度和量化。

在文本领域,用户画像就是对文章喜好的标签。

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

前面把用户的文本、物品的文本进行结构化后得到了诸如标签(关键词、分类)、主题、嵌入向量,接下来就是如何把物品的这些标签传递给用户。

三、步骤

1、非结构化文本之结构化,主要有如下6个方法:

成熟的文本挖掘、NLP算法有以下几类:
1. 关键词提取:是最基础的物品画像的标签来源,也为其他文本分析提供数据基础,如TF-IDF,TextRank;
2. 实体识别:人、位置、地点、著作、影视剧、历史事件和热点事件等,最长基于词典的方法结合CRF模型;类比分词和词性标注,实体识别是指对每一个分好的次,识别为定义好的命名实体类集合之一。
3. 内容分类:将文本按照分类体系分类,用分类来表达较粗粒度的结构化信息;SVM, FastText。
4. 文本聚类:在无人制定分类体系的前提下,无监督地将文本划分成多个类簇也很常见,别看不是标签,类簇编号也是用户画像的常见构成;
5. 主题模型:从大量已有文本中学习主题向量,然后再预测新的文本在各个主题上的概率分布情况,也很实用,其实这也是一种聚类思想,主题向量也不是标签形式,也是用户画像的常用构成;LDA主题模型,给出文章的topic。
6. 嵌入:也就是Embedding,从词到篇章,无不可以学习这种嵌入表达。嵌入表达是为了挖掘出字面意思之下的语义信息,并且用有限的维度表达出来。得到稠密的词向量。
---------------------

2、下面是几种常用的文本结构化算法:

2.1.1 TF-IDF

TF-Term Frequency是词频,IDF-Inverse Document Frequency是逆文档频率。TF-IDF提取关键词的思想是来自于信息检索领域,其思想很朴素:1)在一篇文章中反复出现的词更重要;2)在所有文档中都出现的词更不重要。而这两个点分别用TF和IDF两个指标表示。
- TF,词频,在要提取关键词的文档中出现的次数;
- IDF,在现有所有文档中,统计没歌词出现在了多少个文档中,记为n

 IDF的特点 所有词的N 一样,所以出现文档数越少的词,IDF值越大。若某次的文档频率为0,为防止计算出无穷大的IDF,所以上式的分母中+1进行平滑

计算出TF和IDF后,将两项相乘,就得到每个词的权重。
2.1.2 TextRank

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

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

内容分类即短文本分类,较常见的经典算法有SVM,NaiveBayes,在工具上最常用的是Facebook开源的FastText。文本分类在现在信息流充斥的各APP或Web平台随处可见,知乎、今日头条、微信、微博……,文本分类的结果,可以被用来作为用户冷启动时的兴趣探索手段。
2.1.4 实体识别

这应该算得上是一个NLP技术,命名实体识别(也常常被简称为 NER,Named-Entity Recognition)在 NLP 技术中常常被认为是序列标注问题,和分词、词性标注属于同一类问题。而所谓序列标注,就是给一个字符序列,从左往右遍历每个字符,一边遍历一边对每个字符分类,分类的体系因序列标注问题不同而不同,分词问题、词性问题、实体识别。

对于序列标注问题,通常的算法就是隐马尔科夫模型(HMM)或者条件随机场(CRF),我们在推荐系统中主要是挖掘出想要的结构化结果,对其中原理有兴趣再去深入了解。实体识别还有比较实用化的非模型做法:词典法。提前准备好各种实体的词典,使用trie-tree数据结构存储,拿着分好的词去词典里找,找到了某个词就认为是提前定义好的实体了。
2.1.5 聚类

传统聚类方法在文本中的应用,今天逐渐被主题模型(Topic Model)取代,同样是无监督模型,以 LDA 为代表的主题模型能够更准确地抓住主题,并且能够得到软聚类的效果,也就是说可以让一条文本属于多个类簇。

LDA 模型需要设定主题个数,如果你有时间,那么这个 K 可以通过一些实验来对比挑选,方法是:每次计算 K 个主题两两之间的平均相似度,选择一个较低的 K 值;如果你赶时间,在推荐系统领域,只要计算资源够用,主题数可以尽量多一些。

另外,需要注意的是,得到文本在各个主题上的分布,可以保留概率最大的前几个主题作为文本的主题。LDA 工程上较难的是并行化,如果文本数量没到海量程度,提高单机配置也是可以的,开源的 LDA 训练工具有 Gensim,PLDA 等可供选择。

著名的《LDA数学八卦》是靳志辉大牛所作,大牛原来在腾讯广点通任高级研究员,2018年开始走上了创业这条不归路,《正态分布的前世今生》也是大牛的杰作,有兴趣的感觉找资源拜读~
2.1.6 Embedding

Embedding其实是一个数学概念,以此前如为例:词嵌入,也叫word embedding,前面的结构化方案,除了 LDA,其他都是得到一些标签,而这些标签无一例外都是稀疏的,而词嵌入则能够为每一个词学习得到一个稠密的向量。
拿着这些向量可以做以下的事情:
1. 计算词和词之间的相似度,扩充结构化标签;
2. 累加得到一个文本的稠密向量;
3. 用于聚类,会得到比使用词向量聚类更好的语义聚类效果。

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

3、文本内容特征化

内容特征化即给内容打标签。

内容标签来源:已有的标签、网络抓取的流行标签、对内容的特征词提取。

给内容打标签方式:人工打标签、机器学习的方法打标签。针对机器自动打标签,需要采取机器学习的相关算法来实现,即针对一系列给定的标签,给内容选取其中匹配度最高的几个标签。这不同于通常的分类和聚类算法。可以采取使用分词 + Word2Vec来实现,过程如下:

  • 将文本语料进行分词,以空格,tab隔开都可以,使用结巴分词。
  • 使用word2vec训练词的相似度模型。
  • 使用tfidf提取内容的关键词A,B,C。
  • 遍历每一个标签,计算关键词与此标签的相似度之和。
  • 取出TopN相似度最高的标签即为此内容的标签。

此外,可以使用文本主题挖掘相关技术,对内容进行特征化。这也分为两种情况:

  1. 通用情况下,只是为了效果优化的特征提取,那么可以使用非监督学习的主题模型算法。如LSA、PLSI和GaP模型或者LDA模型。
  2. 在和业务强相关时,需要在业务特定的标签体系下给内容打上适合的标签。这时候需要使用的是监督学习的主题模型。如sLDA、HSLDA等。

4、用户特征化

用户特征化即为用户打标签。通过用户的行为日志和一定的模型算法得到用户的每个标签的权重。

  • 用户对内容的行为:点赞、不感兴趣、点击、浏览。对用户的反馈行为如点赞赋予权值1,不感兴趣赋予-1;对于用户的浏览行为,则可使用点击/浏览作为权值。
  • 对内容发生的行为可以认为对此内容所带的标签的行为。
  • 用户的兴趣是时间衰减的,即离当前时间越远的兴趣比重越低。时间衰减函数使用1/[log(t)+1], t为事件发生的时间距离当前时间的大小。
  • 要考虑到热门内容会干预用户的标签,需要对热门内容进行降权。使用click/pv作为用户浏览行为权值即可达到此目的。
  • 此外,还需要考虑噪声的干扰,如标题党等。

5、隐语义模型

有了内容特征和用户特征,可以使用隐语义模型进行推荐。这里可以使用其简化形式,以达到实时计算的目的。

四、群用户画像

通过计算相似度,聚类得到用户群体画像,反应了一个群体的典型特征,通常用聚类完成之后各个类的簇中心点表示这个簇。

猜你喜欢

转载自blog.csdn.net/qq_34333481/article/details/84030270