失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 微博舆情 之 热点话题分析

微博舆情 之 热点话题分析

时间:2024-02-21 09:18:47

相关推荐

微博舆情 之 热点话题分析

主要流程

在热点话题发现中,主要的流程如下:

在微博流中加入一个时间窗,从时间窗开始处累计微博,直到时间窗的结尾,然后对这个时间窗内的微博进行特征抽取,得到能表示微博的词语,并转化为特征空间中的特征向量;然后利用凝聚式层次聚类算法对文档集合聚类,得到候选话题簇,然后利用 SinglePass 算法判断每个候选话题和历史话题的相似度,如果最大相似度小于阈值,则认为候选话题是一个新话题并把这个候选话题转换成新话题,然后把该话题加入到历史话题中以便后续跟踪;否则选取和候选话题相似度最高的前 K个历史话题,并把和这些历史话题相关的微博放到一个文档集合中,然后对该候选话题中的每一篇文档,利用 KNN 算法,得到每篇文档应该归入的历史话题ID,并把这些话题 ID 放入到话题集合中,然后统计每个历史话题 ID 所占的比率,并把该候选话题归入到所占比例最高的话题 ID 所对应的话题中,然后循环处理其他候选话题。

相关算法

层次聚类

层次聚类(Hierarchical Clustering)又叫树聚类算法,它通过某种文档相关性度量方法,将所有文档以树形结构的形式组织起来。树中叶子节点代表微博文档,非叶子节点为一个类簇,该类簇包含其下面的所有叶子节点所代表的微博文档。根据层次所形成的方式,层次聚类可以分为自底向上方法的凝聚法和自顶向下的分裂法。凝聚算法在进行聚类时,把每一篇微博文档初始化为一系列的单独类簇,然后对这些单独类簇进行两两合并,直至其中相似度最大的两个类簇之间的相似度阈值小于预设的阈值,算法终止。分裂法则是进行相反的聚类过程,首先把所有的微博文档初始化为一个大类簇,然后进行类簇的分裂,把大类簇分裂成小类簇,直至其中一个类簇的阈值满足预设的阈值,则算法终止。图 2-3 给出了层次聚类两种方式的示意图。

凝聚式层次聚类算法(Hierarchical Agglomerative Clustering,简称 HAC)HAC 算法应用适用范围广。HAC算法如下:

Step1:令微博集中的每条微博为一个类簇。Step2:计算微博集合中两个微博之间的距离。Step3:找到相似度最大的两个类簇i_C ,j_C,并合并这两个类簇生成一个新的类簇C 。Step4:对类簇中心进行更新,并重新计算类簇 C 和其他类簇之间的相似度值。Step5:判断相似度最大阈值是否大于预设的阈值,若是,则结束退出;否则,继续执行 Step2。常用的终止条件是类簇之间的最大相似度小于预设的阈值。

在 HAC 聚类算法中,在迭代过程中,不断有文档加入到类簇,为了让聚类中心能够真实准确代表类簇的成员,需要使用聚类中心更新算法重新计算类簇的聚类中心。算法的大致流程是每次有新的文档或者新的类簇加入到类簇或者话题中时,就对类簇或者话题的聚类中心进行更新。

在进行类簇合并时,不仅需要考虑两个类簇共有的特征项,还要把两个类簇独有的特征项加入到聚类中心时,相应地就需要重新计算这些新加入的词和聚类中心中已有的词语的特征权重,这些新加入的词语能够丰富话题的表现能力,并能很好地适应话题的漂移,提高话题的自适应性。

SinglePass + KNN

通过对时间窗TW1内的微博文档进行凝聚层次聚类,生成候选话题簇。先对新文档集合进行聚类,可以解决微博流的“边缘效应”问题,即是在微博流中,相对于那些时间上间隔很远的微博,时间间隔很近的微博讨论同一个话题的可能性更大。

话题是有生命周期的,一般包括事件发生的开始阶段、发展过程、高潮迭起阶段以及结束。因此在进行候选话题和历史话题进行相似度计算时,没必要和所有的历史话题进行计算,这样会带来大量的无意义计算,影响算法的性能。

为了解决这个问题,引入了第二个时间窗TW2,这个时间窗代表话题的生命周期(即一个话题从首次被到话题结束之间所相隔的天数),目的是为了限制需要比较的历史话题数量。由于历史话题是经过长时间积累下来的,数量会非常庞大,针对这个特点,在对候选话题和历史话题进行相似度计算时,选择了单边聚类(Single-Pass)算法,主要是因为 Single-Pass 算法是一个迭代的聚类算法,效率比较高,特别是针对海量数据,优势很明显。在用 Single-Pass 算法进行话题跟踪时,计算的对象是候选话题的聚类中心和历史话题的聚类中心,由于聚类中心是多个文档特征向量的综合,并且在进行特征选择时,为了降低计算复杂度,对特征向量的数量进行了限制,只选择 Top N 个特征词,这会造成聚类中心并不能完全代表话题的文档簇所表达的意思,这会影响相似度的计算结果,进而影响话题跟踪的准确性。

为了解决这个问题,我们对传统的 Single-Pass 算法进行了改进,在进行话题跟踪时,不是只选择相似度最高的历史话题并把候选话题并入该历史话题,而是选择Top K (k由人为给出)个相似度最高(相似度大于阈值)的历史话题,并获得这些历史话题的相关文档,然后利用 KNN算法对候选话题的相关文档进行分类,计算候选话题的每篇相关文档应并入的历史话题,并根据每篇文档对应的历史话题所占有的比率决定候选话题应并入的历史话题。

算法的主要思想是:

如果当前没有历史话题存在,则把最新到达系统的第一个候选话题Cc作为第一个历史话题1C 如果存在历史话题集合 C(TW2 内的历史话题集合),则把Cc和C 中所有的历史话题进行相似度计算,并取最大的相似度值maxsim。

如果maxsim 小于预定的阈值,则用 Cc生成一个新的话题否则,maxsim大于预定的阈值 ,则获得相似度最高的 Top K 个历史话题的相关文档,然后对候选话题的每篇文档进行 KNN 分类,得到每篇文档要并入的历史话题Ci,并统计所得历史话题的分布情况,以此判断候选话题Cc要并入历史话题库中的某个历史话题。直至把所有候选话题处理完,算法才结束。

话题热度计算

如果觉得《微博舆情 之 热点话题分析》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。