1.基于词汇链特征扩展和LDA模型的微博分类方法,包括如下步骤:
1)获取包含多个不同微博类别的微博文本数据;
2)对获取的微博文本进行预处理,包括文本清理、中文分词和去停用词等;首先采用正则表达式来去除微博中的空文本、表情符号、账户名称、网络链接和图片的无关的噪声数据,然后利用分词工具对微博文本进行中文分词和词性标注,并去除那些没有意义且频繁出现的词语;
3)输出微博语料库;
4)将微博语料库分为训练集和测试集;
5)针对训练集,进行基础词汇链的生成;
6)开始循环,依次处理训练集中的各个微博类别;
7)计算和统计某个微博类别下所有微博词语的出现频率;
8)对于该微博类别的微博词语,如果某个词语未被《同义词词林》收录且出现频率大于或等于指定阈值ε,则把该词语归为词汇链L0;如果某个词语未被《同义词词林》收录且出现频率小于阈值ε,则该词语不归入任何词汇链,保留其出现频率,用于下次累计;
9)建立该微博类别的候选词汇集,把该微博类别下所有被《同义词词林》收录的词语w1,w2,…,wn划入候选词汇集;
10)开始循环,依次处理该微博类别的候选词汇集的词语wi(i=1,2,…,n);
11)如果该微博类别除L0外没有其它词汇链,则生成初始词汇链L1,并把词语w1加入词汇链L1,并返回第10步,继续处理下一个词语;否则,继续下一步;
12)分别计算词wi与m条词汇链Lj(j=1,…,m)的语义相似度S(wi,Lj),计算公式为:其中,nj为词汇链Lj包含的词语个数,wjk为词汇链Lj的第k个词语,Sim(wi,wjk)为两个词语的语义相似度,采用了基于《同义词词林》的相似度计算方法;
13)计算 可以得知在所有词汇链Lj(j=1,…,m)中,词语wi与
词汇链Lr(1≤r≤m)的相似度S(wi,Lr)最大;
14)比较S(wi,Lr)和预设的相似度阈值σ,如果S(wi,Lr)≥σ,就把词语wi加入到对应的词汇链Lr中;如果S(wi,Lr)<σ,就生成一个新词汇链,并把词语wi加入到新生成的词汇链中;
15)判断候选词汇集中的词是否处理完毕,如果没有,则返回第10步,继续处理下一个词语;否则,继续下一步;
16)判断训练集中的所有微博类别是否处理完毕,如果没有,则返回第6步;否则,继续下一步;
17)汇总训练集中所有微博类别的词汇链,形成基础词汇链,用于扩展微博文本,基础词汇链生成完毕;
18)词汇链特征扩展:根据基础词汇链分别对训练集和测试集的微博词语进行特征扩展;
19)针对训练集的所有微博词语,如果词语被《同义词词林》收录,则在基础词汇链中找到对应微博类别的包含该词语的词汇链,并检查该词汇链的词语数量;如果词语数量大于或等于设定值,则直接使用该词汇链去扩展原词语;否则,保持原词语,不进行扩展处理;如果词语未被《同义词词林》收录,则检查该词语是否在对应微博类别的词汇链L0中,如果在,则使用词汇链L0去扩展原词语;否则,保持原词语,不进行扩展处理;最后,输出扩展后的训练集;
20)针对测试集语料库的所有微博词语,如果词语被《同义词词林》收录,则在基础词汇链中搜索所有微博类别的词汇链,如果存在某个微博类别的某条词汇链包含该词语,则直接使用该词汇链去扩展原词语;否则,计算该词语和每个微博类别的所有词汇链的相似度,并从中选取最大的相似度;如果这个最大的相似度大于或等于相似度阈值σ,则直接采用该词汇链来扩展原词语,同时将该词语加入到该词汇链中,扩充原词汇链;否则,保持原词语,不进行扩展处理;如果词语未被《同义词词林》收录,则在基础词汇链中搜索所有微博类别的L0词汇链;如果存在某个微博类别的L0词汇链包含该词语,则直接使用该L0词汇链扩展原词语;否则,累计该词语的出现频率,包括训练集中的出现次数,判断该词的出现频率是否大于或等于指定阈值ε,如果是,则把该词归入对应微博类别的L0词汇链;最后,输出扩展后的测试集和扩展后的基础词汇链;扩展后的基础词汇链可以用于下次训练或微博分类;
21)使用LDA主题模型分别对扩展后的训练集和测试集进行建模,提取每条微博的主题概率分布,输出训练集微博和测试集微博的主题概率分布;
22)依次计算训练集中每个微博类别的主题概率分布;计算方法采用求平均值的方法,即对某个微博类别下的所有微博,计算这些微博的主题概率分布的平均值;
23)依次计算测试集中每条微博与各个微博类别主题概率分布的相似度,相似度值最大的为微博所属类别,相似度计算公式如下:Sim(W,C)=2/[DKL(W||C)+DKL(C||W)]
其中,W为某条微博的主题概率分布,C为某个微博类别的主题概率分布,Sim(W,C)表示微博与微博类别的相似度,它的值越大,则表示两者越相近;DKL(W||C)表示W与C的KL距离,而DKL(C||W)表示C与W的KL距离;
24)输出分类结果。