一种混合博文与用户关系的社交媒体好友推荐方法与流程

文档序号:15272186发布日期:2018-08-28 22:34阅读:176来源:国知局

本发明涉及计算机推荐算法技术领域,具体涉及一种混合博文与用户关系的社交媒体好友推荐方法。



背景技术:

个性化信息推荐现阶段已经广泛应用于各个领域。目前,主流方法包括协同过滤推荐以及基于内容推荐两项。基于内容推荐,即通过内容本身的属性,然后计算内容的相似性,找到与某物品属性相似的物品。协同过滤,所谓协同过滤,即不依赖于物品本身的物品属性,而是通过其他相关特征,例如人参与的行为数据,来达到推荐物品的目的。以微博,facebook,twitter等为代表的新型的社会网络,能够把众多的用户集合在一起,使其既实现了信息的传播,同时也满足了用户的社交需求。

在社交媒体的使用中,用户会发布或者转发文本数据(博文),博文可以用来表示用户的兴趣偏好,但是由于博文为短文本特征,存在数据稀疏的问题,如何在海量用户博文中对用户兴趣进行表示,并计算用户博文之间的相似度,是研究人员的一个重要课题。此外,用户还会会形成各种关系,比如,用户之间的关注与粉丝关系、因共同转发或评论某条博文信息或因共同购买某件商品而形成的共有偏好性关系等。充分获取和剖析使用社交媒体过程中产生的复杂关系网可以切实、高效地挖掘用户的兴趣,进而可以有效地进行相关推荐。但是,社交媒体越是被用户认可,则会产生越多的用户量,进而用户间的关系会变得错综复杂。这使得一些事件更加变得不可预测、难以控制,从而给研究人员分析用户间关系以及准确挖掘用户兴趣带来了巨大的困难。如何在错综复杂的用户关系中准确的发现用户兴趣,并对其进行信息推荐,已经成为研究人员一项新的挑战。



技术实现要素:

本发明所要解决的是现有社交媒体中文本信息丰富和用户关系复杂,以致于个性化信息获取困难的问题,提供一种混合博文与用户关系的社交媒体好友推荐方法。

为解决上述问题,本发明是通过以下技术方案实现的:

一种混合博文与用户关系的社交媒体好友推荐方法,具体包括如下步骤:

步骤1、获取社交媒体中用户发布的博文,并采用人工标注的方法对博文所属领域进行分类标记;

步骤2、对所获取的博文进行预处理;

步骤3、对预处理后的博文采用潜在狄利克雷分配主题模型进行主题生成,构建用户主题矩阵,得到用户生成主题的概率分布;

步骤4、对用户生成主题的概率分布采用kl散度计算用户之间的博文相似度;

步骤5、获取社交媒体中用户的社交关系,并构建一个用户与用户社交关系的相似度矩阵;

步骤6、对用户与用户社交关系的相似度矩阵采用余弦相似度计算用户之间的社交关系相似度;

步骤7、对于步骤4所得到的用户之间的博文相似度和步骤6所得到的用户之间的社交关系相似度采用线性加权融合策略进行融合,最终得到目标用户与其他用户之间的综合相似度,最终在该综合相似度排行中取前k项作为最终的推荐列表推荐给目标客户,其中k为设定值。

上述步骤2中,对博文进行预处理的过程为:首先删除博文中的噪声数据,然后对去噪后的博文进行分词,最后滤除分词结果中的停用词。

上述步骤3中,潜在狄利克雷分配主题模型为一个层次贝叶斯模型,其主要包括单词层、主题层和文档层。

上述步骤4中,用户ui和uj之间的博文相似度sij为:

其中,k表示主题个数,表示主题zq在用户ui中的生成概率,表示主题zq在用户uj中的生成概率,x表示主题zq的单词集。

上述步骤5中,所获取用户的社交关系包括关注信息和粉丝信息。

上述步骤6中,用户ui和用户uj的社交关系相似度srij为:

其中,fe(ui)为关注向量,fr(ui)为粉丝向量,上标norm代表归一化表示,分母是两个向量的长度,分子是两个向量的内积。

上述步骤7中,用户之间的综合相似度为:

sim(uij)=αsij+(1-α)srij

其中,α为权重,srij为用户ui和用户uj的社交关系相似度,sij为用户ui和uj之间的博文相似度。

上述步骤7中,还进一步包括通实验学习博文相似度与社交关系相似度之间的权重α的过程。

与现有技术相比,本发明具有如下特点:

(1)对与用户之间内容相似度即文本相似度,采用lda主题模型和kl距离进行计算,与传统的文本挖掘方法tf-idf方法和余弦相似度比较,lda主题模型将用户兴趣用主题表示,而用户的偏好兴趣是隐含的,文本主题也是隐含的,而且由于短文本数据稀疏的原因会导致tf-idf策略存在过拟合问题;

(2)对于用户好友推荐,不仅仅是通过文本来挖掘用户兴趣,还融合了用户之间的社交关系相似度,与单一的基于内容的用户推荐方法,和基于用户的推荐方法比较,混合的推荐策略考虑了多元的相似度信息,在推荐结果上具有更高的准确率;

(3)考虑到用户大部分普通用户博文少可挖掘的信息较少,但其社交关系简单可靠,少部分用户(如大v用户)主页博文多,可挖掘的文本信息充足,但其社交关系复杂,粉丝数原大于关注数,该类用户社交关系包含较多无用的噪声数据,在两种相似度融合的阶段采用加权融合策略最终得到用户间综合相似度,与现有的多源信息相似度融合推荐策略相比,并不是单纯的相似度累加,而是通过实验学习最终得到用户推荐列表,推荐结果更具说服力;

(4)基于内容的推荐方法对于推荐结果具有很好的可解释性,但推荐结果的准确性往往不佳,基于用户的行为关系的协同过滤在推荐结果上有着一定的准确性,但是对于结果没有很好的解释性,即无法解释为什么给用户推荐的结果就跟用户具有相同兴趣爱好的结果,结合两种方法在提升推荐准确性的同时也让推荐结果具有很好的可解释性。

附图说明

图1为一种混合博文与用户关系的社交媒体好友推荐方法的流程图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,下面以微博这一社交媒体为例,对本发明进一步详细说明。

研究表明,微博用户普遍存在的特征是,关注的人数大于粉丝人数,大多数用户的兴趣是浏览自己关注用户发布或者转发的微博,大部分用户很少发布或者转发微博数据,因此,用户发布或者转发的微博往往更能代表用户的兴趣爱好,由于微博文本存在140个字符的限制,微博文本数据短小,微博文本数据稀疏,如何在微博文本数据和复杂的微博社交关系中挖掘出有用的用户偏好信息并得到用户好友推荐排行序列,是一个研究热点。为此,本发明设计一种混合微博好友推荐算法,采用lda主题模型对用户主页博文进行主题提取,构建用户主题矩阵,并采用kl散度计算计算用户主题分布之间的相似度。定义用户社交关系,构建用户社交关系矩阵,并再用余弦相似度计算用户之间的社交关系相似度。最终采用加权融合策略融合两种相似度信息,并通过实验得到用户好友推荐序列。

参见图1,一种混合博文与用户关系的社交媒体好友推荐方法,其具体包括如下步骤:

(1)实验数据获取阶段:

获取社交网络中用户某一时间段微博原文、采用人工标注的方法将博文分为体育,科技,房地产,股票,情感,娱乐,政治,军事,育儿,环保,健康,旅游,医学,商品等17个领域;每个用户被标记为一个或者多个领域的爱好者,最终得到的推荐好友序列与该用户有同样的爱好领域即可表示推荐有效。

在本实施例中,通过新浪微博提供的api,采用爬虫方式来获取本发明所需的微博原文,用户关注信息和用户粉丝信息三种实验数据,微博文本数据人工标注为17个类别,最终推荐结果将以分类是否正确的标准来计算准确度。

(2)数据预处理阶段:

对所有获取的微博文本数据进行预处理,即首先删除数据中的噪声数据,接着对去除噪声数据后的数据进行中文分词,最后滤除分词结果中的停用词。

(2.1)微博文本清洗:

分析微博文本中可能包含的噪声数据,并对其进行清理。url一般是网页、音频、视频的集合,本发明重点在文本数据,所以将超链接删除;日期标签对用户兴趣表示并无作用,故将日期标签过滤掉;微博账户名称并没有实际的意义,故将评论中大量的@微博账户名滤掉掉;去除“转发”“评论”等没有实际意义的标记符号。

本实施例的研究内容旨在关注微原文本类的信息,所以我们通常对url、日期标签、@微博账户名滤掉掉、“转发”“评论”等没有实际意义的标记符号进行清理,只保留微博的纯文本信息。

对清洗后的每个用户的微博文本按照用户编号将其合并成n篇文档,此文档就是lda三层贝叶斯结构中的文档层。

(2.2)中文分词和停用词处理:

对文本进行主题建模之前,把文本表示成计算能够识别的形式是必须要做的工作,第一步就是中文分词,中文分词就是将一串汉字字符串通过分词算法分割成一个个的词语,便于计算机理解计算。经过中文分词以后,通过分析分词结果可以发现,分词结果中有许多出现频繁而且又没有实际含义的停用词,这些词被统称为停用词。停用词包括了助词、副词、介词、冠词、连接词、代词等,通常并没有实际的意义。停用词不仅对文本没有区分作用,而且有会干扰关键词,增加分类时间,降低系统的效率和分类的准确率,如常见的“的”、“在”、“而且”、“吗”、“了”、“或”等等。停用词处理就是在文本预处理过程中通常滤除这些无意义的词语。

本发明所采用的分词及去停用词的工具是python中的结巴分词工具,结巴分词是一个开源的,基于python语言开发的轻量级的中文分词工具包,这里使用的是结巴分词3.0。

(3)用户间博文主题提取及主题分布相似度计算:

对每个用户近期的微博文数据采用lda主题模型进行主题生成,构建用户主题矩阵,得到用户生成主题的概率多项分布,用户的兴趣可以被定义为用户对各个主题的喜好程度;并对用户微博文本主题分布采用kl散度计算用户之间的相似度,kl距离越大表明用户相似度越小,反之则越大。

潜在狄利克雷分配(latentdirichletallocation,lda)在plsa的基础上加入了dirichlet先验分布,是plsa的一个突破性的延伸。plsa在文档对应主题的概率计算上没有使用统一的概率模型,过多的参数会导致过拟合现象,并且很难对训练集以外的文档分配概率,基于这些缺陷,lda引入了超参数。lda模型采用dirichlet分布作为概率主题模型中多项分布的先验分布。其中d为整个文档集;d为文档d的单词集;α和β分别是文档-主题概率分布θ和主题-单词概率分布φ的先验知识。lda模型是一个层次贝叶斯模型,它有如下三层:

单词层:单词集x={w1,w2,...,wl}是从语料库中提取出来的去除停用词后的所有单词集合。

主题层:主题集φ={z1,z2,...,zk}中的每一个主题zq都是一个基于单词集x的概率多项分布,可以被表示成向量φk=<pk,1,pk,2,...,pk,x>,其中pk,l表示单词wl在主题zk中的生成概率。

文档层:对于单词层,采用了词袋方法。每一篇文档被表示成一个词频向量dm=<tfm,1,tfm,2,...,tfm,v>,其中tfm,l表示单词l在文档m中出现的次数;就主题层而言,文档集可以表示成θ=<θ1,θ2,...,θd>,其中每一个向量θd=<pd,1,pd,2,...pd,k>表示了一个文档的主题分布,其中pd,z是主题z在该文档d中的生成概率。

标准的lda模型是一个文档-词语矩阵分解成为文档-主题,主题-词语的过程,使用主题模型构建基于内容的微博用户兴趣模型时,需要将一个用户下的所有微博合并成一个文档进行主题生成,该文档中的文本便是用户的兴趣偏好,从而得到用户生成主题的概率多项分布,即用户的兴趣模型。该兴趣模型的用户层就对应到了lda模型中的文档层,即将文档-主题-词的三层关系变为了用户-主题-词的关系。用户层中,对于用户集合u={u1,u2,...,un},其中的每一个用户ui,都可以由该用户发布的所有微博采取词袋法得到一个词频向量f=<tfi,1,tfi,2,...,tfi,v>。从主题层面而言,用户ui可以被表示成向量其中表示主题z在用户ui中的生成概率,可以用来表示用户ui对主题z的喜好程度从而,用户层代替文档层构成了用户与主题的生成关系,生成主题用户矩阵如下所示:

lda模型的求解过程使用gibbs抽样方法,模型参数值根据文献取经验值:其中,α=50/k(k为主题数,与后文中推荐列表长度k表示不同含义),β=0.01。主题的个数取经验值进行对比实验,由于用户微博被分为17个领域,实验中主题数k设置为8~17,最终实验选取的主题个数是推荐算法效果最好的情况下k的取值。

在基于lda的用户主题模型中,由主题的概率分布来表示用户的兴趣,因此,用户间的相似程度可以由用户主题分布间的kl距离来表示,kl散度经常用来评判主题模型的性能,标准是平均距离远的主题模型,其主题区分度高,模型性能就好,kl距离计算公式如下。

kl散度是不对称的即dkl(p||q)≠dkl(q||p)可以将其转换成对称形式如下式。

d(p,q)=[dkl(p||q)+dkl(q||p)]/2(2)

用户之间博文内容相似度计算如下式

其中,sij为用户ui和uj的微博文本相似度;ui和uj分别是它们的主题概率分布。ui为用户ui的各个主题概率分布,uj为用户uj的各个主题概率分布。k表示主题个数,表示主题zq在用户ui中的生成概率,表示主题zq在用户uj中的生成概率,其中生成概率分布具体用主题zq基于单词集x={w1,w2,...,wl}的概率分布表示。该值越大,则两用户微博文本内容属性越相似。

(4)定义用户社交关系并计算用户社交关系相似度:

获取社交媒体中用户间两种主要的社交关系:关注信息和粉丝信息,对与用户之间的两种主要关系进行定义,将关注信息和粉丝信息表示成两个多维向量;并对于用户之间社交关系,通过对用户间社交关系即关注信息和粉丝信息的研究计算,可构建一个n×n的用户-用户社交关系相似度矩阵,采用余弦相似度计算出用户之间的社交关系相似度。

在微博系统的社交网络中,用户通过关注信息与粉丝信息彼此相连,由于关注信息与粉丝信息是一种非常复杂社交关系结构,如若用户ui对用户uj所发布的微博感兴趣,那么ui会有意地关注uj;又如用户ui与um虽未彼此关注,但都同时关注了用户uj,通过链接用户uj,可以说明ui与um也是具有一定的关系等。简单来讲用户a与用户b是好友关系,而用户c是用户b的好友,那么用户a很有可能对用户c感兴趣,这中关联规则是推荐系统中常用的规则之一。通过挖掘这些关系可以进一步地揭示出用户的兴趣。

对用户社交关系可以作如下定义:

用户ui的社交关系为:sr(ui)={fe(ui),fr(ui)},sr(ui)表示用户ui的社交关系,其中包括两种属性信息,分别是关注信息与粉丝信息,首先可分别将这两种属性信息表示为两个向量:关注向量fe(ui),粉丝向量fr(ui),其次,将文中n个用户编号{1,2,...i,...,j,...,n},如若用户ui关注了用户uj,那么在关注向量fe(ui)中第j个分量为1,否则为0。同理,若用户ui被用户uj所关注,那么在粉丝向量fr(ui)中第j个分量为1,否则为0。

对于两个用户ui和uj,则ui和uj之间的社交关系可分别表示为sr(ui)={fe(ui),fr(ui)},sr(uj)={fe(uj),fr(uj)}。因此用户ui和uj的社交关系相似度计算,可转换为对社交关系的两种属性:关注信息与粉丝信息相似度计算。对于该相似度计算,本发明采用余弦相似度计算方法。

ui和uj的关注信息相似度为:

其中,fe(ui)为关注向量,fr(ui)为粉丝向量,分母是两个向量的长度,分子是两个向量的内积。

ui和uj的粉丝信息相似度为:

其中,fe(ui)为关注向量,fr(ui)为粉丝向量,分母是两个向量的长度,分子是两个向量的内积。

用户ui和用户uj的社交关系相似度为:

sim(sr(ui),sr(uj))=sim(fe(ui),fe(uj))+sim(fr(ui),fr(uj))(6)

为了计算方便,可对公式6进行归一化处理,使其结果规范化到[0,1]之间且(i≠j)。如下:

最终用户之间的社交关系相似度可以表示为:

其中,上标norm代表归一化表示。

(5)融合用户两种相似度信息的微博好友推荐:

对于步骤4和步骤6计算得到的两种用户间相似度,采用线性加权融合策略进行融合,最终得到目标用户与其他用户之间的综合相似度。

最终确定用户之间兴趣爱好的相似性,本发明综合考虑了基于内容的推荐方法和基于用户的协同过滤方法,其中基于内容的方法即从用户主页获取的文本中建立用户主题模型,并计算相关性,基于用户的协同过滤是通过挖掘用户间的交互信息计算用户间相似信息,计算出用户之间的社交关系相似度,而最终的推荐结果序列需要综合考虑两种不同的属性信息所能表现用户兴趣偏好的能力,通过线性融合策略,得到有关于用户的两种相似度之后,需要综合考虑两种相似指标,最终得到用户之间的综合相似度为:

sim(uij)=α(sij)+(1-α)srij(9)

其中α的取值范围为(0,1),设置迭代次数100,α的取值以0.01的间隔迭代100次,通过实验最终确定α的取值。

现有的多源信息相似度融合计算多数是多种属性的相似度累加,但是研究表明由于微博用户的特殊性,微博用户中有的用户主页转发或原创的博文内容较少,该类用户多是普通用户,其关注数量往往远大于粉丝数量,该类用户所关注的用户大都是自己感兴趣的内容,这种情况下依赖其社交关系的推荐结果会更好,而对于微博中的部分大v用户,其发布或转发的微博数量较之一般用户要多,其粉丝数量要远大于其关注数量,用户社交关系包含了太多与用户本身兴趣爱好无关的内容,此时用户关注的部分是自己感兴趣的内容,其粉丝则包含了大量与用户本身无关的信息,这种情况下依赖用户博文内容的推荐结果会更好,因此在计算用户之间的综合相似度时应该根据实际情况出发,减小噪声数据对推荐结果的影响,本发明采用线性融合策略,以权衡微博内容和社交关系对推荐结果的影响。

(6)用户好友推荐阶段:

最终在目标用户与其他用户的综合相似度排行中取前k项作为最终的推荐列表,推荐给目标用户。在此过程中,还可以通实验学习两种相似度之间的权重关系。

推荐列表的长度k的取值根据经验,如取k=10,15或20项相似性排序靠前的候选用户作为推荐结果。

假设同一个领域中的用户为兴趣相近的用户,且他们的微博文本也主要是围绕自己感兴趣的话题来发布,u为用户集合,对用户ui和用户子集ui,其中,ui∈u,且ui=u-ui。按照公式(7),对用户集合ui中的每个用户分别与ui计算相似度,然后对ui中的所有用户按照相似度值进行升序排列,这样排在前面的用户就和用户ui更相似,更有理由推荐给用户ui。

提取前k个用户作为用户ui的推荐列表,对推荐集合中的每个用户uj,分别判断其是否与用户ui具有相同的领域爱好,若属于同一领域,则认为将uj推荐给用户ui是正确的。用户ui的推荐准确率计算公式如下:

其中,k≤ni-1,ni为用户ui所属领域下的用户,k的取值不超过领域下的用户总数减1(除去用户ui自身)。

所有用户的推荐平均准确率计算公式如下:

其中,n为用户总数。

混合微博好友推荐算法:通过整合用户所发微博文本,建立用户模型:将用户的所有微博合并到一起,微博数据已经经过了分词处理,得到代表每个用户的微博单词词频向量fu。对模型进行求解,得到每个用户的主题概率分布。借助于概率分布之间的kl散度计算方法,用户之间的相似度使用式(3)来计算,该值越大则表示用户间的主题概率分布越相似,也即用户间的兴趣越相似,双方可以相互作为被推荐给对方的候选用户。定义用户间社交关系,构建关注向量fe(ui),粉丝向量fr(ui),通过余弦相似度计算方法得到用户之间社交关系相似度,最终融合两种属性信息,计算用户间综合相关性并作出用户推荐:假设同一个领域中的用户为兴趣相近的用户,根据用户相似度获取用户的推荐列表,取前k个用户作为推荐用户,推荐算法流程如下所示:

传统微博好友推荐算法有基于内容的方法和基于用户的协同过滤的方法以及两种策略融合的方法,其中基于内容的推荐方法是研究的基于内容的方法采用传统vsm空间进行文本挖掘,tf-idf策略进行数据降维并通过余弦相似度计算内容相似性,往往存在过拟合问题,而且其推荐结果往往差强人意,本发明利用当前短文本建模中主流建模方法,将用户的微博文本合并为一篇文档,借用lda中的文档-主题-词语三层结构对文本建模,构建用户-主题-词语三层结构,用户的兴趣可以表示为用户对某一主题喜爱程度也就是其概率分布,用户之间的相似度可以用kl距离表示,然后定义用户之间的主要社交关系,计算用户之间社交关系相似度,通过线性融合策略融合两种属性信息,最终对目标用户进行好友推荐

本发明公开一种混合博文与用户关系的社交媒体好友推荐方法,通过lda主题模型在用户微博文本数据中挖掘用户偏好,计算用户博文相似度,同时考虑到微博社交关系的重要性,计算用户之间社交关系的相似度,最终得到用户之间的综合相似度,考虑到微博用户大部分普通用户博文少可挖掘的信息较少,但其社交关系简单可靠,少部分用户(大v用户)主页博文多,可挖掘的文本信息充足,但其社交关系复杂,粉丝数原大于关注数,该类用户社交关系包含较多无用的噪声数据,发明采用线性加权的方法衡量两种不同的属性信息对推荐结果的影响,并通过实验学习权重参数,最终得到用户推荐列表,提升了推荐结果的质量。

需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1