1. 程式人生 > >文本分類的預處理

文本分類的預處理

其它 而是 最好 維度 就是 bsp 準確率 數據 其中

文本數據預處理,包括文檔切分、文本分詞、去停用詞(包括標點、數字、單字和其它一些無意義的詞)、文本特征提取、詞頻統計、文本向量化等操作。

  1.文檔切分

文檔切分這個操作是可選的,取決於你獲取到的文檔集合的形式。如果你得到的文檔集合本身就是一篇一篇文章分開的,那麽這一步就可以省略了。反之,如果文檔集合是一個單一的文件,所有的文章都存儲在這個文件中,那麽你就要將其中的文章提取出來單獨存放在一個文件中,從而便於以後的操作。

一般來說,單一文件的文檔集合中文章與文章之間都會使用一些標記來區分,比如用空行、特定符號等等。我做的課程作業中有一個人民日報語料庫,語料庫中文章與文章之間就是用空行來分隔的。

  2.文本分詞

文本分詞是預處理過程中必不可少的一個操作,因為後續的分類操作需要使用文本中的單詞來表征文本。目前文本分詞已經有很多比較成熟的算法和工具,在網上搜索一下就會發現很多。

文本分詞包括兩個主要步驟,第一個是詞典的構造,第二個是分詞算法的操作。

詞典的構造目前比較流行的有字典樹即標準trie樹,字典樹的構造有很多方法,本人博客中也有一篇用java實現字典樹的博文,但是空間利用率和效率可能不是很高。目前比較不錯(節約空間和效率)的構造方法有雙數組trie樹等。

分詞算法有簡單的有復雜的,常見的主要有正向最大匹配、反向最大匹配、雙向最大匹配、語言模型方法、最短路徑算法等等,這些算法在網上都可以找到詳細的資料。

  3.去停用詞

去停用詞也是預處理過程中不可缺少的一部分,因為並不是文本中每一個單詞或字符都能夠表征這個文本,比如說“這個”、“的”、“一二三四”、“我 你 他”、“0 1 2 ……9”等等,那麽這些詞就應當從文本中清除掉。可以在網上下載一份中文的停用詞表來作為去停用詞的參考。

  4.文本特征提取

這個是文本分類過程中很重要的一部分,但是並不是必要的,當然最好有這一部分。我們不能肯定的說文本中的某一個單詞就能100%表征這篇文檔,只能說這個單詞能以某種程度來表征這篇文檔,這個程度具體衡量的標準就是概率。概率越大,說明這個單詞越能表征這篇文檔;反之則越不能表征這篇文檔,當概率小到一個閥值(人為設定)的時候,這個單詞就可以舍棄了(不能表征,要你何用呢)。

表征的概率目前有兩種使用比較廣泛的方法,一種是差方統計(這個概率越小越好),另一種是信息增益(這個概率越大越好)。兩種方法都比較晦澀難懂,但是網上資料很多,多看看相關資料就會明白了。如果嫌這一步麻煩,大不了不做這一步了(擺平不了,咱撤還不行嗎),當然這就要犧牲一點分類的準確率了,有時候可不是一點點哦。

  5.詞頻統計

這一步是必不可少的一個步驟。去停用詞和文本特征提取之後,剩下的詞是文本的精華所在了,這時就要涉及到另一個表征標準了—詞頻。顯然,如果一個單詞在文本中出現的頻率很高,那麽這個單詞就越有可能(記住,只是可能而已,並不能肯定,這其中還涉及到一個反文檔頻率)表征這個文本。同時詞頻也是構造文本空間向量模型的必要元素,因此這一步至關重要。

詞頻統計方法也有很多成熟的方法,比如hash、改造的trie樹等方法,搜搜更明白!

  6.文本向量化

進行如上操作以後,還差一步就會達到勝利的彼岸了,這個彼岸可不是分類完成,而是可以運用分類算法了。大都數分類算法都只適用於離散的數值類型,因此到目前為止預處理還差的最後一步就是將文本進行空間向量化,也就是用數學上的多維特征向量來表示一個文本。比如有如下兩個文檔:

d1 (A, B, C, D, E, F, G)

d2(C, E, F, G, A, B)

就已經表示成向量模型了,只不過括號內的每一維的值暫時用文檔的特征詞來表示了。那麽我們應該將特征詞轉換成數值表示,這個數值就可以用概率來表示了。

概率的計算涉及兩個方面,前面也說過,即特征單詞在文檔中出現的頻率p(通常由該詞在所屬文檔中出現的詞頻除以全部文檔的特征詞數),還有該詞的反文檔頻率q(表示該詞出現在多少個文本中的頻率,如果一個單詞在很多文檔中出現的頻率都很高,那麽這個單詞就太普遍了,不足以用來表征一篇文檔)。那麽某一維的表征概率值就是p和q的一個因式乘積,當然根據需要還有可能乘上另外一些影響因子。下面都簡單介紹一下這兩個概率是如何計算的:

特征詞集合/文檔 d1 d2 單詞出現總數
A 2 1 3
B 2 2 4
C 2 1 3
D 1 0 1
E 4 3 7
F 2 1 3
G 2 2 4
文檔單詞總數 15 10 25
其中表格內面的數字表示特征單詞在對應文檔中出現的次數,下一步計算p並標準化(將數值映射到-1到1之間,以防止大值特征詞對文本特征的控制,當然也可以便於後續的計算):

計算p值 d1 d2
A 0.08(2 / 25) 0.04
B 0.08 0.08
C 0.08 0.04
D 0.04 0.00
E 0.16 0.12
F 0.08 0.04
G 0.08 0.08
q的計算需要利用公式log((1+|D|)/|Dt|)(這是前人總結出來的,咱只是站在了他們的肩膀上),其中其中|D|表示文檔總數,|Dt|表示包含特征詞t的文檔數量。例子的q值計算結果如下:

計算q值 ln
A 0.4
B 0.4
C 0.4
D 1.1
E 0.4
F 0.4
G 0.4
最後將p、q相乘得到每個文檔的最終向量表示:

計算p值 d1 d2
A 0.032 0.016
B 0.032 0.032
C 0.032 0.016
D 0.044 0.000
E 0.064 0.048
F 0.032 0.016
G 0.032 0.032
那麽最終就可以將d1和d2表示成如下的空間向量:

d1 = (0.032, 0.032, 0.032, 0.044, 0.064, 0.032, 0.032)

d2 = (0.016, 0.032, 0.016, 0.000, 0.048, 0.016, 0.032)

其中向量對應的維度特征變量為A,B,C,D,E,F,G

文本分類的預處理