[0021] 本发明所提供的支持OLAP应用的基于微博数据的兴趣维层次提取方法的具体实施方式包含以下五步(实施流程图如图1所示):
[0022] 步骤(1).微博数据获取、转换及清洗。
[0023] 1-1.获取海量微博信息和用户个人信息,并存储至Oracle数据库中,其中微博信息包括原创微博信息和转发微博信息,用户个人信息包括用户关注者信息和个人描述信息。微博信息中的原创微博信息包括微博文本信息、微博提及(@)到的用户信息,微博信息中的转发微博信息包括被转发微博文本信息和被转发微博的原作者信息。
[0024] 1-2.用户的微博文本信息和被转发微博文本信息中包含很多噪音数据,如短链接,停用词,这些噪音数据会对主题挖掘造成干扰,因此通过使用正则表达式匹配和停用词字典匹配的方法将噪音数据去除。
[0025] 步骤(2).对用户的个人描述信息和微博文本信息采用多分层的LDA方法提取主题;传统的LDA方法只能提取出单层主题,维层次依靠领域专家根据领域知识人工构建,成本高且动态适应性差,虽然有些方法实现了动态构建维层次,但是这些方法主要依赖文本集的关键词和高频词的相似度,抽取的语义准确性有待于进一步提高。本方法利用分层LDA挖掘潜在语义提取出多级主题。
[0026] 2-1.从Oracle数据库中获取每个用户的所有微博文本信息和个人描述信息,然后将每个用户的所有微博文本信息组成微博数据文档(第i个用户的微博数据文档表示为doci(blog),文档中第j个单词表示为wordi,j);每个用户的个人描述信息组成描述数据文档(第i个用户的描述数据文档表示为doci(desc),文档中第j个单词表示为wordi,j);将每个用户的微博数据文档和描述数据文档合并成用户信息文档,表示为doci。
[0027] 2-2.将所有用户的微博数据文档合并成微博数据语料库,再将所有用户的描述数据文档合并成描述数据语料库,最后将所有用户的用户信息文档合并成用户信息语料库。
[0028] 2-3.对步骤2-2得到的用户信息语料库进行多分层LDA主题建模(多分层LDA模型的贝叶斯网络图如图2所示)。假设有T个一级主题,记为topict,t=0,1,…,(T-1),其中每个一级主题下有L个二级主题,记为subTopicl,l=0,1,…,(L-1);假设微博数据语料库中的微博数据文档doci(blog)满足以α′为先验参数的狄利克雷分布,那么微博数据语料库中p的微博数据文档doci(blog)满足θ多项分布;假设描述数据语料库中的描述数据文档doci(desc)满足以α为先验参数的狄利克雷分布,那么描述数据语料库中的每篇描述数据文档doci(desc)满足θu多项分布。基于上述假设,计算用户信息文档doci的分布:如果用户的个人描述为空,则用户信息文档doci的多项分布为θp多项分布;如果用户的个人描述不为空,则用户信息文档doci的多项分布为θu多项分布和θp多项分布的融合分布。最终得到文档和一级主题的分布,用doc-topic概率矩阵表示,记为Mdoc-topic。
[0029] 2-4.假设所有二级主题组成的二级主题集合满足以η为先验参数的狄利克雷分布,那么二级主题集合中的每个二级主题满足多项分布θv,可以得到一级主题-二级主题的分布,表示为topic-subTopic概率矩阵,记为Mtopic-subTopic。
[0030] 2-5.假设用户信息文档语料库满足以β为先验参数的狄利克雷分布,那么语料库中的每个单词满足多项分布 可以得到二级主题-单词的分布,表示为subTopic-word概率矩阵,记为MsubTopic-word。
[0031] 2-6.利用Gibbs Sampling算法,对Mtopic-subTopic的二级主题和MsubTopic-word中的每一个单词进行随机采样直至收敛,具体步骤如下:
[0032] 1).一个用户信息文档中,所有单词与其所属二级主题和一级主题的联合概率分布如下式:
[0033] P(w,z,z′|α,α′,η,β)=P(z|α,α′)P(z′|η,z)P(w|z′,β)[0034] 使用欧拉公式对上式展开得到:
[0035]
[0036]
[0037]
[0038] 其中β(z|α,α′)为一级主题的概率,P(z′|η,z)为二级主题的概率,P(w|z′,β)[0039] 为单词的概率。
[0040] 2).然后对下式的后验分布使用Gibbs Sampling抽样:
[0041]
[0042] 对上式反复迭代,并对所有一级主题和二级主题进行抽样,最终达到抽样结果稳u p v定。θ,θ,θ, 的结果分别如下:
[0043]
[0044]
[0045]
[0046]
[0047] 基于上述步骤,多分层LDA模型通过Gibbs Sampling求解出一级主题在微博数据语料库中的微博数据文档上的概率分布θu、一级主题在描述数据语料库中描述数据文档上的概率分布θp、二级主题在一级主题上的概率分布θv以及单词在二级主题上的概率分布根据nd,j,nj,k,nk,v计算得到Mdoc-topic,Mtopic-subTopic和MsubTopic-word。
[0048] 2-7.将微博用户的个人描述信息和微博文本信息输入到上述的多分层LDA模型中进行训练,可以得到基于微博文本信息和个人描述信息的用户主题概率分布P1。
[0049] 步骤(3).提取基于用户社交关系的用户主题概率分布(流程图如图3所示)。
[0050] 3-1.首先将用户的关注者、被转发评论的原作者和微博提及(@)到的用户构造成社交关系列表L;
[0051] 3-2.然后筛选社交关系列表L,获取所有粉丝数超过阈值N的用户(根据经验阈值N一般设定为100万),这些用户一般是微博中某一领域具有影响力的信息传播者,我们称之为关键人物Keyman;
[0052] 3-3.通过人工识别的方式将所有得到的关键人物归类到某一特定主题,即得到映射对“关键人物-主题”,再合并所有的映射对得到关键人物主题库;
[0053] 3-4.最后遍历用户的社交关系列表L,得到与用户有关的所有关键人物集合U(Keyman)={K1,K2,K3,…,Ki,…,Kn},其中Ki表示某一关键人物;再将关键人物集合U(Keyman)中的关键人物与主题库中的关键人物匹配,得到用户主题分布U(Topic)={T1,T2,T3,…,Ti,…,Tn},其中Ti为属于主题i的关键人物数量,最后对用户主题分布U(Topic)进行归一化处理,得到基于用户社交关系的用户主题概率分布P2。
[0054] 步骤(4).对步骤(2)和步骤(3)获取到的基于微博信息和个人描述信息的用户主题概率分布P1和基于用户社交关系的用户主题概率分布P2加权融合,得到每个用户的主题概率分布P。
[0055] 本发明通过在一批已经标注的测试数据集上使用模拟退火算法来得到加权融合参数α的最优解,具体描述过程如下:
[0056] 1).读入最高熔化温度Tmax和最低熔化温度Tmin。设Tmax为系统初始温度、Tmin为温度的下限、ks为每个熔化温度下的抽样次数,置T=Tmax。
[0057] 2).随机生成α的初值,其中α∈[0,1],设S=α,计算F(S)=m/n,其中m为测试集中兴趣符合实际的用户数,n为测试集用户总数。
[0058] 3).给定抽样次数k=1。
[0059] 4).产生随机扰动ΔS,计算F(S+ΔS)和ΔE=F(S+ΔS)-F(S)。
[0060] 5).如果ΔE>0,则S用S+ΔS取代。如果ΔE≤0,则产生[0,1]间均匀分布的一个伪随机数ρ,若exp(-ΔE/T)≤ρ,则S用S+ΔS来取代。否则,不更新S。
[0061] 6).置k=k+1。如果k<ks,转回5)。
[0062] 7).置T=Tmax/(1+t),降低T的值,如果T<Tmin则输出结果后停止,否则转回4)。这里t为参数,随退火过程的进行而逐步增大,可凭经验给定。
[0063] 根据以上步骤可以得到最优权值α,最后通过以下公式确定用户主题概率分布(其中P表示每个用户相对于每个一级主题和二级主题的概率分布):
[0064] P=αP1+(1-α)P2
[0065] 步骤(5).OLAP维层次映射。
[0066] 利用步骤(4)获得的每个用户主题概率分布得到与用户最相关的一级主题和二级主题,其中一级主题对应用户的兴趣,二级主题对用户的子兴趣。上述兴趣和子兴趣构成兴趣维层次(如图4所示),可用于OLAP应用。
[0067] 本发明可用于基于微博数据的兴趣维层次提取,提取后的兴趣维层次可进一步用于实现OLAP操作。