話題發現和跟蹤是指新聞專線和廣播新聞等來源的新聞數據流中自動地發現話題并把話題相關的內容組織到一起的技術。通過增量的文檔聚類的方法,信息流被聚集到有限的話題類簇中,類內高度相似,不同的類間相似度較低,以此進行海量數據的融合。熱點輿情話題是話題輿情中受關注度最大,影響也較為突出的輿情,旨在從半結構化海量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算法是簡單的文本聚類算法,將文本特征向量做相似度比較度相似度值大于閾值的文本歸為一類文本。從而使主題更容易被發現,使計算更精準。
它的主要思想是,依次輸入一個文本,判斷當前文本與已有簇的匹配程度,如果當前文本與已有的某個簇相匹配,則把當前文本歸入到該簇,反之則創建新的簇。
講到這里算法的所有思想已經講述完畢,希望本人拙見能夠幫助到各位!
最后,十分感謝阮一峰老師的文章,對我啟發很大,本篇文章也有所借鑒,特此聲明。
文章最后還是依舊送大家一句話:
別總喜歡把不在乎三個字掛在嘴邊,因為我們大多時候沒有資格說,強者才配這句話!