刘展
摘要:构建文章推荐系统需要把文章向量化,然后组建一个推荐矩阵,矩阵里的元数据(数值)会影响推荐效果,如何使文章推荐矩阵元数据更好地与用户行为关联起来,这里提出了基于TFIDF算法关联到用户行为的表示和更新机制,根据用户行为的特点,给予不同的权重,最终会影响到元数据的取值,进而能量化用户行为标签的兴趣值,另一方面也能产生更好的推荐效果。
关键词:TFIDF算法;余弦相似度;文章推荐系统;推荐矩阵;数据建模
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2019)07-0017-04
Abstract: Static Building the article recommendation system needs to vectorize the article, and then form a recommendation matrix. The metadata (value) in the matrix will affect the recommendation effect. How to make the article recommendation matrix metadata better correlated with user behavior, here is based on TFIDF, The algorithm is associated with the representation and update mechanism of the user's behavior. According to the characteristics of the user's behavior, different weights are given, which ultimately affects the value of the metadata, thereby enlightening the interest value of the user's behavior tag, and on the other hand, it can produce better recommended effect.
Key words: TFIDF algorithm; cosine similarity; article recommendation system; recommendation matrix;data modeling
1 背景與意义
随着移动互联网的发展和智能手机的广泛普及,越来越多的人选择在智能手机端或者平板设备上阅读,网络中的资源数量增长非常迅猛,比如微博、微信公众号、各种自媒体等,在海量资源用户面前,用户很难从中找到自己真正感兴趣的内容,或者要耗费大量的时间和精力才能找到自己所需要的资源。
如何在众多资源中,快速地找到我们真正感兴趣的资源呢? 个性化推荐系统就是在这种背景下诞生的。个性化推荐系统是通过建立用户与信息产品之间的二元关系,利用已有的选择过程或相似性关系,挖掘每个用户潜在感兴趣的对象,进而进行个性化推荐。高效的推荐系统可以挖掘用户潜在的消费倾向,为众多的用户个性化服务[1]。
个性化推荐系统目前已被广泛应用于电子商务、广告推送、电影推荐等包含海量信息并需要提供个性化服务的应用领域。因此,研究个性化推荐技术与系统具有非常重要的意义。
2 推荐系统的概念和分类
推荐系统的定义有不少,但被广泛接受的推荐系统的概念和定义是Resnick 和Varian在1997[2]年给出的:“它是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程”。
推荐算法(或叫推荐策略)是整个推荐系统中最核心和关键的部分,在很大程度上决定了推荐系统类型和性能的优劣[3]。常见的推荐系统可以分为基于内容的推荐系统、基于协同过滤的推荐系统以及混合型推荐系统。
2.1 基于内容的推荐系统(Content-based Recommendation)
基于内容的推荐算法利用信息内容(如文本文档)和用户兴趣的相似性来过滤信息[4]。根据物品或内容的数据,发现物品或内容的相关性,然后基于用户以前的喜好记录推荐给用户相似的物品。如图1所示:
图1是基于内容推荐的一种示例,电影推荐系统。通过比较电影内容的相似度进行推荐,电影的类型很大程度能代表用户关注的兴趣方向。这里简单地描述了一下电影的类型,把类型转换成元数据,通过元数据计算电影间的相似度,因为电影一和电影三的类型都是关于“爱情”,用户看了电影一而没有看电影三,所以我们可以把电影三推荐给用户,这也就是用户在交互界面常见的 “您也可能喜欢...”。
2.2 基于协同过滤的推荐系统(Collaborative Filtering-based Recommendation)
协同过滤是一种基于一组兴趣相同的用户或项目进行的推荐,它根据邻居用户(与目标用户兴趣相似的用户) 的偏好信息产生对目标用户的推荐列表。而基于协同过滤推荐又分为以下三类:
2.2.1 基于用户的协同过滤推荐(User-based Collaborative Filtering Recommendation)
基于用户的协同过滤推荐算法是先寻找与目标用户有相同喜好的邻居,然后根据目标用户的邻居的喜好产生向目标用户的进行推荐。基本原理就是利用用户访问行为的相似性来互相推荐用户可能感兴趣的资源,如图2所示:
图2示意出基于用户的协同过滤推荐机制的基本原理。用户A喜欢物品一、物品三。用户C喜欢物品一、物品三和物品四。用户A 和用户C的偏好是比较类似的,因为都喜欢物品一和物品三。同时用户C还喜欢物品四,那么我们可以推断用户A可能也会喜欢物品四,因此可以将物品四推荐给用户A。在电商网站常常可以看到类似“购买了某产品的用户,还购买了某某产品”的广告语。
2.2.2 基于项目的协同过滤推荐(Item-based Collaborative Filtering Recommendation)
根据所有用户对物品或者信息的评价,发现物品和物品之间的相似度,然后根据用户的历史偏好信息将类似的物品推荐给该用户,如图所示:
图3示意出基于项目的协同过滤推荐机制的基本原理。用户A喜欢了物品一和物品三,可以理解为因为它们两者相似才会同时喜欢,而用户C也喜欢物品一,却没有发现有物品三和它类似,所以把物品三推荐给用户C。
2.2.3 基于模型的协同过滤推荐(Model-based Collaborative Filtering Recommendation)
基模型的协同过滤推荐就是基于样本的用户喜好信息,训练一个推荐模型,然后根据实时的用户喜好的信息进行预测推荐。
2.3 混合型推荐系统
混合型推荐系统就是把多种不同的推荐算法结合起来,利用不同算法的优点而避免相关的缺点,提高推荐系统的性能和质量。
3 相关算法
3.1 TFIDF算法
TF-IDF(term frequency–inverse document frequency)算法是权重计算中经典的算法之一 ,如今其应用领域已从单纯的权重计算拓展到特征选择,领域词典的构造,用户兴趣模板的构建等[5] 。 对该算法最通俗的理解就是:一个词语在一篇文章中出现次数越多, 同时在所有文章中出现次数越少, 越能够代表该文章。
3.2 余弦相似度
余弦相似度是计算相似度的一种方法,该方法首先将个体的指标数据映射到向量空间,然后通过测量两个个体向量之间的内积空间夹角余弦值来度量它们之间的相似性。两个个体向量夹角越接近0°,即夹角余弦值越大,说明两个个体的相似度越高,而两个个体夹角越接近180°,夹角余弦值越小,说明相似度越低。 如图4所示,与向量B相比,向量A与向量C的相似度更高[6]。
4 基于TFIDF算法的建模方法
4.1中文分词和关键词提取
对文章进行分词和关键词提取,这里用到了jieba分词,它能很好支持中文分词、关键词提取、词性标等功能。提取关键词后根据词性标注对关键词进行筛选,一般会剔除不必要的动词。
4.2 对TFIDF算法的理解
对于整个文本库,文本的数量和关键词的数量都是事先确定好的,所以逆向文件频率IDF是确定的,很显然这个文本库越大,越能反映这个词的权重。在github开源项目有现成统计好的数据可以用,这些词都是去掉停用词的,其中jieba分词也集成该部分数据。
所以求取TFIDF值,就是确定词频TF部分,它的值可看似一个概率,取值在[0,1],取值越大越反映该词T在这个文章D出现的次数越多,可能影响越大,关键词的提取也是利用了该特性,它是根据TFIDF的值从大到小排列,取值越大越能体现该词T的关键性。
4.3 文章-关键词矩阵
在文章推荐系统中,往往需要找出内容相似的文章,内容相似可作为推荐的一个很重要的维度。在与用户的交互中表述为:“你可能也喜欢...”。为了做到这一点,可采用“文章-关键词”推荐矩阵,如表1所示,D1、D2、...D3代表了不同的文章,T1、T2、...T5代表了所有文章出现的关键词。如果关键词T1在文章D1中并没那么重要或者没有出现,那它的对应的值就是0,因为我们可以认为词频TF=0,根据公式可知它的TFIDF值也是[v1]。对于一篇文章,所出现的所有关键词加和应该是1。也就是如果求与文章D2最为相似的5篇文章,可通过KNN算法即可得到,也可通过求余弦相似度值来从大到小的top5来确定。
4.4 用户推荐矩阵
4.4.1 用户行为数据源
现在移动端APP可以收集很多有用的用户行为数据,这些数据可以为运营决策,改善用户体验等起重要作用,这些用户数据我们一般称之为“埋点数据”。
4.4.2 用户行为权重
在用户阅读行为数据中,对文章的收藏、评论、阅读时长、转发、点赞、点击等这些行为,对于用户而言可以认为是重要性或者兴趣度不一样,如表2,给出不同的权重得分,得分越高认为重要或者兴趣越高,同理,如同表3,在用户阅读速度方面,结合用户大数据分析,综合给出一个阅读速度的均值然后再定义其权重得分。如果一个用户仅仅只是点击了文章,然后再迅速关闭,前后花费时间不到1秒,我们一般可以认为这个行为的权重是很低的,甚至是0。
4.4.3 行为权重策略
权重得分应该会受时间影响,这点不难理解,用户今天感兴趣的文章可能因为今天已经阅读,到了明天或者将来就不再那么感兴趣,因此对于权重得分要引入时间衰减机制,如同表4,时间越长,曾经较高的权重得分项目,现在因为减去了较高的衰减分值,最终得到一个较低或者是0的权重得分。具体的衰减分值要结合大数据分析以及结合具体业务综合给出。
4.4.4 建模表
通过累积用户行为历史,可计算出某个用户不同关键词(标签)的得分,如同表5,该表是在实际应用中截取的表结构的一个片段,下面对字段简单加以介绍。
l 主键:数据表的唯一索引。
l 设备ID: 是指用户设备的标识,android,ios智能(手机)设备都会有自己唯一的ID,一般都是字符串形式,比如:34D5DEB9-8F84-4BE4-B565-7DC00E0314E0
在軟件开发中,这个字符串也是作用一个用户的唯一标识。特殊的情况是一个用户可能有多个设备(手机),在数据上要做好映射关系即可。
l 标签权重:采用json格式表示数据,key表示标签指文章提取出来的关键词,value表示权重也就是标签后面对应的取值。
l 用户向量:向量的长度是整个文章提取关键词数量,与表1的列数是一样的,同时关键词的排列也是有顺序的,向量里的每个值代表了该标签的TFIDF值。
4.4.5 建模过程
用户向量是根据用户标签权重计算出来的,比如以关键词T1(标签)為例它的具体计算方法:
首先拿到T1标签权重值v1,再拿到该用户下所有标签的权重之和v,然后两者相除v1/v得到的商,该商就是同词频TF等价的数,因为它的意义和词频是等价的。该商与T1所对应的IDF值相乘得到它的TFIDF值,最终根据T1在向量中的排序位置放入TFIDF值。
在用户的阅读历史可能有多篇文章,所以有多个标签,根据上述方法产生和更新多个标签的TFIDF值,进而更新该用户向量所有值,除此之外还可以加上其他影响因素,比如时间衰减机制。
4.4.6 用户推荐矩阵应用
在用户推荐矩阵中,可以通过近邻算法或者聚类算法,也可以通过余弦相似度等方法来选择类似的用户,这就是达到“阅读了该文章的用户还阅读了某某文章”的效果,解决越推荐选择面越窄的问。计算相似用户可从人的特征,环境的特征,文章的特征三个维度去做权重评分。
5 结论
本方法结合了实际生产环境的应用,提出了一种文章推荐系统的数据建模方法,实现起来直接简单,TFIDF算法也易于理解,数据来源容易获取,有比较好的实际应用价值。
参考文献:
[1] 高凤丽,孙连山.个性化推荐系统概述[J].技术与市场,2015, 22(2):78-79.
[2] Resinick P,Varian H R.Recommender systems[J].Communications of the ACM,1997,40(3):56-58.
[3] 王国霞,刘贺平.个性化推荐系统综述[J].计算机工程与应用,201248(7):66-76.
[4] GB/T 7714曹小娜.一种适用于礼品推荐领域的基于内容推荐算法[J].中国科技论文在线,2010.
[5] 施聪莺,徐朝军,杨晓江.TFIDF算法研究综述[J].计算机应用,2009,29(b06):167-170.
[6] 陈大力,沈岩涛,谢槟竹,等.基于余弦相似度模型的最佳教练遴选算法[J].东北大学学报(自然科学版), 2014, 35(12):1697-1700.
【通联编辑:唐一东】