话题发现和跟踪是指新闻专线和广播新闻等来源的新闻数据流中自动地发现话题并把话题相关的内容组织到一起的技术。通过增量的文档聚类的方法,信息流被聚集到有限的话题类簇中,类内高度相似,不同的类间相似度较低,以此进行海量数据的融合。热点舆情话题是话题舆情中受关注度最大,影响也较为突出的舆情,旨在从半结构化海量Web数据中获取相应的主题并进行整合,以新的热点事件分析并了解热点话题事件的发展。热点话题分析对舆情分析具有较大的实际意义,可以及时向网络监控部门提供网民关注焦点,辅助网络舆情分析。
算法原理
话题发现算法通过将网络上的文章评论等数据进行数据进行分词、计算特征词权重、提取特征词、生成特征向量、相似度聚类,得到热点话题。通过聚类,大量文档数据可以由此得到几类话题。通过此算法得到的不同类话题的文章差异大,相同类话题的文章相似度大。
流程图
详细步骤:
1.数据预处理
利用jieba(结巴)分词对文章进行分词处理,并进行词频统计,将其所归属的文章ID一并存到一个数据字典里。
这里包括一个重要的过滤步骤即剔除停用词。停用词出现次数最多的词是-----"的"、"是"、"在"----这一类最常用的词。它们叫做"停用词"(stop words),表示对找到结果毫无帮助、必须过滤掉的词。假设我们把它们都过滤掉了,只考虑剩下的有实际意义的词。我们在实际处理的时候是去下载一个Stopwords.txt的文档进行筛滤。
2.文本特征词
本特征词是指该能够代表该文章观点的一类词。但是我们用什么来衡量重要这个概念。一个容易想到的思路,就是找到出现次数最多的词。如果某个词很重要,它应该在这篇文章中多次出现。于是,我们进行"词频"(Term Frequency,缩写为TF)统计。但是这样计算的误差性十分大,如果那些不属于停用词但是出现的次数也非常多,会冲淡了那些真正的关键词。所以,我们需要一个重要性调整系数,衡量一个词是不是常见词。如果某个词比较少见,但是它在这篇文章中多次出现,那么它很可能就反映了这篇文章的特性,正是我们所需要的关键词。此时我们引入IDF,巧妙地解决了这个问题。具体见 “3.特征权重”
3.特征权重
词频(TF)= 某词在文章中出现的次数/文章的总次数
逆文章频率(IDF)=log(文章总数/(包含该词包含的文章数目加一))
特征权重(TF-IDF )= 词频(TF)X 逆文章频率(IDF)
可以看到,TF-IDF与一个词在文档中的出现次数成正比,与该词在整个语言中的出现次数成反比。
4.特征向量
为了能够比较两篇文章的相似性,我们引入向量的概念,将特征词进行向量化,然后利用余弦相似性进行相似度的计算。其中构成特征项的各个维度是特征词确定的。比如每篇文章选取20个特征词。特征词列表是由语料库中每篇文章中TF-IDF值最大的20个词组成的。然后每篇文章的特征向量则通过与特证词列表比对,有则添加,没有添加0,构成每篇文章的各自的特征向量。
5.余弦相似度
我们可以把它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合;如果夹角为90度,意味着形成直角,方向完全不相似;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
可见余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。
6.话题聚类
signal-pass算法是简单的文本聚类算法,将文本特征向量做相似度比较度相似度值大于阈值的文本归为一类文本。从而使主题更容易被发现,使计算更精准。
它的主要思想是,依次输入一个文本,判断当前文本与已有簇的匹配程度,如果当前文本与已有的某个簇相匹配,则把当前文本归入到该簇,反之则创建新的簇。
讲到这里算法的所有思想已经讲述完毕,希望本人拙见能够帮助到各位!
最后,十分感谢阮一峰老师的文章,对我启发很大,本篇文章也有所借鉴,特此声明。
文章最后还是依旧送大家一句话:
别总喜欢把不在乎三个字挂在嘴边,因为我们大多时候没有资格说,强者才配这句话!