基于内容和背景的微博问答问题推荐
2018-06-11欧阳龙彭艳兵
欧阳龙,卢 琪,彭艳兵
(1.武汉邮电科学研究院湖北武汉430000;2.南京烽火星空通信发展有限公司江苏南京210000)
免费一直被国内的互联网界奉为圭臬,但是,内容付费却偏偏在其中独树一帜的发展了起来。2016年底,新浪微博推出微博问答这一新功能,很快就占领了内容付费市场的半壁江山。
微博问答的应用场景是:用户群A付费对用户B提出问题,用户B从问题中选择问题进行作答,作答后,用户A提问所付的费用进入用户B的钱包,问题和答案会以微博问答的形式被用户B自动转发,其他用户可以付费1元进行围观,围观的费用一半进入用户A的钱包,另一半进入用户B的钱包。有一些好问题甚至能以几十元的问题价格吸引数万的围观量,其中的商机不言而喻。本文研究的目的在于针对特定的微博问答用户,提出更容易被回答且收益率更高的问题。
需要解决的关键问题是对用户的关键词挖掘,也可以说是对用户兴趣的挖掘。对微博用户兴趣的挖掘一般分为两类:1)基于背景挖掘用户兴趣;2)基于内容挖掘用户兴趣。
基于背景的用户兴趣挖掘通过微博平台的个人简介、职业、标签、毕业院校、生日、性别等信息对不同的用户进行分类[1],针对某些平台用户背景信息较少的问题,可以使用多平台分析的方法[2],也可以利用朋友的信息[3],但是只有背景相似的朋友的信息才有效[4],甚至可以以朋友的背景为基础推断出用户的背景信息[5],使用其他用户对该用户的分组描述作为用户的背景[6]也是一种不错的方法。
基于背景的用户兴趣挖掘存在的主要问题:用户背景数据不完善,在对新浪微博1.4亿用户的统计中,添加了标签的用户只占21.8%,标签个数大于5的用户只占6.2%[7]。
基于内容的用户兴趣挖掘可以看作文本主题或关键词提取问题。由于微博一般比较短小,可以从每一条微博中提取一个主题[8],或者将一个用户的所有微博合并成一个大文本之后再进行主题提取[9],当用户的微博内容比较少时,可以用该用户多个朋友的共同兴趣推出该用户的兴趣[10],AT模型可以用于发现用户和主题的关系[11],针对微博的特性,MBLDA模型也能进行微博主题挖掘[12]。
基于内容的用户兴趣挖掘存在的主要问题:1)没有考虑到博主与粉丝的交互,2)缺少一种对关键词进行推荐的方法。
本文在针对博主与粉丝的交互提出了基于微博转发、评论、点赞和词频的词语权重计算方法,针对背景数据不全,提出了基于背景和内容的AW-LDA用户关键词挖掘方法,并结合背景和内容分析用户之间相似度,进而达到推荐问题关键词的目的。
1 理论基础
1.1 LDA主题模型
LDA的模型结构如图1所示。
图1 LDA模型图
在LDA模型中,一篇文档的生成方式如下:
1)对于一篇文档di,从狄利克雷分布(即Dirichlet分布)α中取样生成文档di的主题分布θi,即主题分布θi由参数为α的Dirichlet分布生成;
2)从主题的多项式分布θi中取样生成文档di的第j个词的主题zij;
3)从狄利克雷分布ε中取样生成主题zij对应的词语分布βij,即词语分布βij由参数为ε的Dirichlet分布生成;
4)从词语的多项式分布β中采样最终生成词语wij。
即每个词语出现的概率为:
1.2 EM算法
LDA原始论文中采用变分-EM算法估计未知参数[13]。EM算法,即期望最大算法,其基本思想是:首先随机选取一个值去初始化估计值θ(0),然后不断迭代寻找更优的θ(n+1)使得其似然函数比原来的要大。可以用来给LDA模型求解。
EM算法的关键便是要找到L(θ)的一个下界,然后不断最大化这个下界。从而逼近要求解的似然函数算法的一般步骤为:
3)重新估计参数θ,即求,使得
4)如果L(θ)收敛,即Q(Q;Qn)收敛,则算法完成,否则回到步骤2[15]。
这样就能求得LDA模型中的主题分布和词分布。
1.3 Gibbs采样算法
LDA原始论文中采用变分-EM算法估计未知参数,后来发现另一种估计LDA未知参数的方法更好,这种方法就是:Gibbs Sampling,有时叫Gibbs采样或Gibbs抽样[16]。Gibbs抽样是马尔可夫链蒙特卡尔理论(MCMC)中用来获取一系列近似等于指定多维概率分布(比如2个或者多个随机变量的联合概率分布)观察样本的算法[17]。通过求解出主题分布和词分布的后验分布,从而成功解决主题分布和词分布这两参数未知的问题。
Gibbs采样算法的步骤为:
表示对z(t+1)中的第i个参数进行抽样,对于包含隐变量的LDA模型来说,抽样公式为:
2 基于内容和背景的微博问答问题推荐
2.1 数据采集
本文的数据来自于新浪微博的微博问答模块中系统推荐的前5000个用户,都是业内专家或者名人,他们在各自的微博问答主页上都有各自擅长回答的问题等标签,将这些标签作为用户的背景信息;另外采集这5000个用户发布的微博文本信息,包括原创微博内容和转发微博内容以及本条微博转发、评论、点赞的数量,将这些文本信息作为内容分析用户的兴趣;采集这5000个用户的所有微博问答内容,包括问题内容、问题价值、围观数量,将这些文本作为内容分析用户的答题兴趣。
2.2 数据处理
由于采用的数据集是微博原始文本,所以需要对数据进行一定的处理[19]。第一步是对文本进行切词处理。文中采用的是python第三方库jieba分词,其精确模式可以将句子以精确的方式切开,消除歧义。
第二步去除文本中的停用词(代词和语气词)[20],这类词一般在文本中很常见,但是对用户兴趣挖掘没有用处。本文使用的是Github上的中文停用词词表,共1598个词,并且在处理文本的过程中根据文本的内容和语义不断添加停用词,最后将停用词个数扩充到1912个。
第三步是对词频进行统计。针对用户的微博内容,由于微博是用户与用户之间的交流,所以关注者对被关注者的反馈信息比如转发、评论、点赞都会影响到被关注者,比如某个话题的微博受到了大量的转发、评论、点赞,那么被关注者可能会更倾向于喜欢个话题,在微博问答中回答这类问题的可能性也会比较高,关注者的围观人数也可能会很多。所以本文在进行词频统计的时候并不是简单的只统计词出现的次数,而是结合各条微博被转发、评论、点赞的次数对该条微博中出现的词的词频进行加成,微博被转发、评论、点赞的次数越多,词的词频加成也越多,即
其中WTwi表示词wi的词频,Tij表示词wi在微博j中出现的次数,repj表示微博j被转发的次数,comj表示微博j被评论的次数,likj表示微博j被评论的次数。针对用户的微博问答内容,关键词的推荐需要与问题的收益率挂钩才能正确反映基于微博内容的关键词推荐的正确性,所以在对微博问答问题内容进行词频统计时,不仅要统计词出现的次数,还要统计问题的收益率
其中WTwi表示词wi的词频,Tij表示词wi在微博j中出现的次数,REij表示问题的收益率。
2.3 AW-LDA模型
由于本文的目的是对微博问答的问题作出推荐,所以对于微博内容来说,关注的重点不是主题,而是主题中的词,即对问题的关键词作出推荐。传统的LDA模型采用的是“用户-主题-词袋”的模式[21],即用户以一定的概率分布选择主题,主题以一定的概率分布选择词袋中的词,最终构成文档。但是传统的LDA模型对于关键词的推荐并不合适,我们需要的是“用户-词袋”的概率分布,主题层对于问题的关键词推荐来说没有意义。所以本文基于传统的LDA模型提出了AW-LDA模型,重点分析用户(author)与词袋(words)的概率分布关系。AW-LDA模型如图2所示。
对于一个用户的微博内容或者背景文档di,从
图2 AW-LDA模型
其中REij表示问题的收益率,Gij表示问题的围观人数,PAij表示问题价值,i表示用户编号,j表示问题编号。根据问题的收益率对问题中出现的关键词的词频进行加成,收益率越高,词的词频加成也越多。即狄利克雷分布(即Dirichlet分布)ε中取样生成文档di的词分布βi,即词分布βi由参数为ε的Dirichlet分布生成,对于文档di中的第j个词语wij,从词语的多项式分布β中采样最终生成词语wij。
采用Gibbs采样算法对AW-LDA模型进行求解,首先用欧拉公式将P(w|ε)展开:
然后用Gibbs算法对如下后验分布进行抽样:
对上式进行反复迭代,并对所有词进行抽样,抽样结果稳定时,结果为
这样,AW-LDA模型就使用Gibbs抽样解出了微博内容在词语上的概率分布βw。
使用AW-LDA模型分别对用户的微博内容和背景进行分析,得到针对用户微博内容的推荐词集WCi及其概率分布PCi和针对用户微博背景的推荐词集WBi及其概率分布PBi,其中i表示用户编号。
2.4 基于用户微博内容和背景的相似度分析
得到用户的推荐词集及其概率分布后,采用余弦相似度算法计算用户之间的相似度,具体实现为:先将两个用户的推荐词集合并,组成一个新的含有N个词的词集WN,可以通过补零的方式根据用户对推荐词集WCi的概率分布PCi求得用户对词集WN的概率分布PWi,其中i表示用户编号,这样就能得到两个用户对词集WN的概率分布PWi和PWj,可以看作是两个N维向量,然后采用余弦相似度算法
计算两个向量的余弦值,结果可以表示两个用户的内容相似度sim(Cij),其中xi、yi分别表示概率分布PWi和PWj中的元素。用相同的方法可以求出两个用户的背景相似度sim(Bij)。将两个相似度结合起来,令两个用户的相似度
其中a表示微博内容相似度所占的权重。
2.5 基于样本进行关键词推荐
在对训练集中的用户A进行关键词推荐时,根据simij在样本集中找到与用户A相似度最高的用户B,并将用户B的问答关键词中权重最高的10个词推荐为用户A的问答关键词。实验结果表明当a取值为0.79时,推荐的关键词所包含的问题的价值总和占所有问题价值总和的比例最大,为92.56%;当a取值为0.84时,推荐的关键词所包含的问题个数占所有问题总量的比例最大,为83.73%。
3 微博问答问题推荐效果及分析
文中采用perlexity指标对模型的优劣进行衡量。Perlexity指标通常用来衡量一个概率模型的好坏,在主题模型领域也是比较常见的衡量指标,perlexity指数越低表示模型的性能越好。Perlexity定义为:
其中W为测试集,wm为测试集中的单词,Nm为测试集中的单词数。LDA模型与AW-LDA模型的perlexity指数对比如表1所示。
表1 LDA模型与AW-LDA模型对比
由表1可以看出随着迭代次数的增加,LDA模型的Perlexity指数越来越低,模型性能越来越好,且变化率越来越低,表示模型趋于稳定;AW-LDA模型的Perlexity指数不随迭代次数变化是因为指定了每个用户的文本主题数为1,即用户选择词的概率已经确定,迭代不会影响用户选择词的概率;在LDA模型收敛的过程中,AW-LDA模型的Perlexity指数一直比LDA模型低,表明使用AW-LDA模型对微博用户的微博文本和背景进行分析,的确能提升模型的性能。
本文采用文本内容关键词与背景关键词结合的方式计算测试集与样本集中的用户相似度,并推荐问答关键词。推荐效果如图3所示。
图3 问题数量推荐效果
由图3可以看出,当基于微博内容和背景进行关键词推荐时,随着微博内容所占的权重不断增加,推荐的关键词命中的问题个数比例先增加后减少,且当微博内容所占的权重为0.84时,推荐的关键词命中的问题个数比例达到最高,为83.73%;只基于微博内容进行关键词推荐时,关键词命中的问题个数比例为74.58%;只基于背景进行关键词推荐时关键词命中的问题个数比例为16.33%。都低于将微博内容和背景以最优的方式结合后的问题关键词推荐命中率,表明改进后的关键词推荐方法能使问题更容易被回答。
图4 问题价值推荐效果
由图4可以看出,当基于微博内容和背景进行关键词推荐时,随着微博内容所占的权重不断增加,推荐的关键词命中的问题价值比例先增加后减少,且当微博内容所占的权重为0.79时,推荐的关键词命中的问题价值比例达到最高,为92.56%;只基于微博内容进行关键词推荐时,关键词命中的问题价值比例为77.03%;只基于背景进行关键词推荐时关键词命中的问题价值比例为23.95%。都低于将微博内容和背景以最优的方式结合后的问题关键词推荐命中率,表明改进后的关键词推荐方法能在问题的价值方面做出有效的推荐。
4 结束语
文中针对微博的用户关系,改进了词频统计方法;针对微博文本的特殊结构,提出了一个适合提取微博用户关键词的模型AW-LDA,并针对微博文本内容和用户背景共存的特点,提出了将内容和背景结合起来进行关键词推荐的方法,实验表明该方法能从问题个数和问题价值方面做出有效的关键词推荐。
今后的研究工作中将继续优化AW-LDA模型的效率,探索微博文本内容和用户背景结合的更好方法,并在词频统计环节加入对原创微博和转发微博的考虑。