基本文本聚类方法
| 轉自:http://hi.baidu.com/yaomohan/blog/item/e7b1c2c2516638110ef477cc.html 經過N天的努力,我的第一個文本聚類小程序終于火熱出爐了.真不容易啊,在網上看了很多程序才明白其中的核心原理。其實原理很簡單,但這個程序最麻煩的是 一些細節,比如字符串的處理還有用什么樣的數據結構來存儲數據等等,這些才是最麻煩的。下面我會詳細介紹我所總結的東西,由于是我自己總結的所以難免會有 一些錯誤,望廣大網友,牛人指出錯誤,謝謝合作!!! 首先我來介紹一下什么是文本聚類,最簡單的來說文本聚類就是從很多文檔中把一些 內容相似的文檔聚為一類。文本聚類主要是依據著名的聚類假設:同類的文本相似度較大,而不同類的文本相似度較小。作為一種無監督的機器學習方法,聚 類由于不需要訓練過程,以及不需要預先對文本手工標注類別,因此具有一定的靈活性和較高的自動化處理能力,已經成為對文本信息進行有效地組織、摘要和導航 的重要手段,為越來越多的研究人員所關注。一個文本表現為一個由文字和標點符號組成的字符串,由字或字符組成詞,由詞組成短語,進而形成句、段、節、章、 篇的結構。要使計算機能夠高效地處理真是文本,就必須找到一種理想的形式化表示方法,這種表示一方面要能夠真實地反應文檔的內容(主題、領域或結構等), 另一方面,要有對不同文檔的區分能力。目前文本表示通常采用向量空間模型(vector space model,VSM)。 VSM法即向量空間模型(Vector Space Model)法,由Salton等人于60年代末提出。這是最早也是最出名的信息檢索方面的數學模型。其基本思想是將文檔表示為加權的特征向 量:D=D(T1,W1;T2,W2;…;Tn,Wn),然后通過計算文本相似度的方法來確定待分樣本的類別。當文本被表示為空間向量模型的時候,文本的 相似度就可以借助特征向量之間的內積來表示。最簡單來說一個文檔可以看成是由若干個單詞組成的,每個單詞轉化成權值以后, 每個權值可以看成向量中的一個分量,那么一個文檔可以看成是n維空間中的一個向量,這就是向量空間模型的由來。單詞對應的權值可以通過TF-IDF加權技 術計算出來。 TF-IDF(term frequency–inverse document frequency)是一種用于資訊檢索與文本挖掘的常用加權技術。TF-IDF是一種統計方法,用以評估一字詞對于一個文件集或一個語料庫中的 其中一份文件的重要程 度。字詞的重要性隨著它在文件中出現的次數成正比增加,但同時會隨著它在語料庫中出現的頻率成反比下降。TF-IDF加權的各種形式 常被搜索引擎應用,作為文件與用戶查詢之間相關程度 的度量或評級。除了TF-IDF以外,互聯網上的搜尋引擎還會使用基于連結分析的評級方法,以確定文件在搜尋結果中出現的順序。 原理: 以上式子中?ni,j?是該詞在文件dj中的出現次 數,而分母則是在文件dj中所 有字詞的出現次數之和。 逆向文件頻率(inverse document frequency,IDF)是一個詞語普遍重要性的度量。某一特定詞語的IDF,可以由總文件數目除以包含該詞語之文件的數目,再將得到的商取對數得到: 其中
然后 某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生出高權重的TF-IDF。因此,TF-IDF傾向于過濾掉常見的詞 語,保留重要的詞語。 例子有很多不同的數學公式可以用來計 算TF-IDF。這邊的例子以上述的數學公式來計算。詞頻 (TF) 是一詞語出現的次數除以該文件的總詞語數。假如一篇文件的總詞語數是100個,而詞語“母牛”出現了3次,那么“母牛”一詞在該文件中的詞頻就是 0.03 (3/100)。一個計算文件頻率 (DF) 的方法是測定有多少份文件出現過“母牛”一詞,然后除以文件集里包含的文件總數。所以,如果“母牛”一詞在1,000份文件出現過,而文件總數是 10,000,000份的話,其逆向文件頻率就是 9.21 ( ln(10,000,000 / 1,000) )。最后的TF-IDF的分數為0.28( 0.03 * 9.21)。TF-IDF權重計算方法經常會和余 弦相似度(cosine similarity)一同使用于向 量空間模型中,用以判斷兩份文件之間的相 似性。學過向量代數的人都知道,向量實際上是多維空間中有方向的線段。如果兩個向量的方向一致,即夾角接近零,那么這兩個向量就相近。而要確定兩 個向量方向是否一致,這就要用到余弦定理計算向量的夾角了。 最后我們在對文本進行聚類時要用到數據挖掘中的Kmeans算法,聚類算法有很多種,這篇文章主要介紹Kmeans算法。K-MEANS算法: k-means 算法接受輸入量 k ;然后將n個數據對象劃分為 k個聚類以便使得所獲得的聚類滿足:同一聚類中的對象相似度較高;而不同聚類中的對象相似度較小。聚類相似度是利用各聚類中對象的均值所獲得一個“中心對 象”(引力中心)來進行計算的。 處理流程: (?1?)?從?c?個 數據對象任意選擇?k?個 對象作為初始聚類中心;? 到這里這個文本聚類的小程序的核心思想就講完了,總的來說大致步驟如 下:??????????????????????????????????????????? (1)對各個文本分詞,去除停用詞 (2)通過TF-IDF方法獲得文本向量的權值(每個文本向量的維數是 相同的,是所有文本單詞的數目,這些單詞如果有重復那只算一次,所以如果文本越多,向量的維數將會越大) (3)通過K-means算法對文本進行分類 本人的文本小程序的結 果還算令人滿意,對下面的實驗用例的聚類結果還算是理想,但是每次執行的結果都不一樣。其實聚類的結果受好多種因素制約,提取特征的算法,隨機初始化函 數,kmeans算法的實現等,都有優化的地方,不信你把輸入的數據的順序改改,聚類結果就不一樣了,或者把隨機數的種子變一下,結果也不一樣,k- means算法加入一些變異系數的調整,結果也不一樣,提取特征的地方不用TF/IDF權重算法用別的,結果肯定也不一樣。 實驗用例: 奧運拳擊入場券基本分罄鄒市明奪冠對手浮出水面 以下是我在網上參考的資料: http://www.cnblogs.com/onlytiancai/archive/2008/05/10/1191557.html http://hi.baidu.com/zhumzhu/blog/item/fc49ef3d19b0a4c09f3d62a3.html |
總結
- 上一篇: 理解HashMap
- 下一篇: Simple Introduction