文本表征:SoW、BoW、TF-IDF、Hash Trick、doc2vec、DBoW、DM


原文地址:https://www.jianshu.com/p/2f2d5d5e03f8

一、文本特征

(一)基本文本特征提取

  • 詞語數量
    常,負面情緒評論含有的詞語數量比正面情緒評論更多。
  • 字符數量
    常,負面情緒評論含有的字符數量比正面情緒評論更多。
  • 平均詞匯長度
    平均詞匯長度=所有單詞長度/單詞個數。
  • 停用詞數量
    有時,計算停用詞的數量可以提供去除停用詞后失去的額外信息。
  • 特殊字符數量
    如"#"、"@"等的數量。
  • 數字的數量
    並不常用,但在相似任務中常比較有用。
  • 大寫單詞的數量
    ......

(二)文本的預處理

小寫轉換、去除標點符號、停用詞去除、常見詞去除、稀缺詞去除、拼寫校對、分詞、詞干提取、詞性還原 ......
詞形還原(lemmatization),是把一個任何形式的語言詞匯還原為一般形式;而詞干提取(stemming)是抽取詞的詞干或者詞根形式,不一定能夠表達完整語義。

(三)高級文本處理

  • N-grams
    若太短,則無法捕獲重要信息;若太長,則捕獲的信息基本是一樣的,沒有差異性。
  • 詞頻TF
  • 反轉文檔頻率IDF
  • 詞頻-反轉文檔頻率TF-IDF
  • 詞集模型SoW、詞袋模型BoW
  • 評測情感
    例如使用NLTK自帶方法。
  • 詞向量
  • 文本向量
    ......

二、SoW & BoW

當將文本表示為詞相關的向量時,向量的維度值為總詞匯數。
詞集模型(Set of Words, SoW)中,如果向量維度位置對應的詞出現在文本中,則該處值為1,否則為0。
除了考慮詞是否出現外,詞袋模型(Bag of Words, BoW)還考慮其出現次數,即每個文本向量在其對應詞處取值為該詞在文本中出現次數,未出現則為0。
但是,用詞頻來衡量該詞的重要性是存在問題的。比如"the",它的詞頻很高,但其實它沒有那么重要。所以可以使用TF-IDF特征來統計修正詞頻。
修正后的向量依舊存在數據稀疏的問題,大部分值為0,常使用Hash Trick進行降維。

(一) TF-IDF

TF-IDF是一種統計方法,用以評估一字詞對於一個文件集或一個語料庫中的其中一份文件的重要程度。
字詞的重要性隨着它在文件中出現的次數成正比增加,但同時會隨着它在語料庫中出現的頻率成反比下降。
TF(term frequency):詞在當前文本中的詞頻;
IDF(inverse document frequency):包含該詞的文本在語料庫中出現頻率的倒數的對數,即:

\[IDF(x)=log{N \over N(x)} \]

其中,\(N\)是語料庫中文本的總數,\(N(x)\)是語料庫中包含詞\(x\)的文本的總數。
常見的IDF平滑公式之一:

\[IDF(x)=log{N+1 \over N(x)+1}+1 \]

最終,詞\(x\)的TF-IDF值:

\[TF{-}IDF(x)=TF(x)*IDF(x) \]

(二)Hash Trick

哈希函數\(h\)將第\(i\)個特征哈希到位置\(j\),即\(h(i)=j\)。那么,第\(i\)個原始特征的詞頻數值\(c(i)\)將會累積到哈希后的第\(j\)個特征的詞頻數值\(c'(j)\)上,即:$$c'(j)=\sum_{i\in J;h(i)=j}c(i)$$
其中\(J\)是原始特征的維度。
但這樣做存在一個問題,有可能兩個原始特征哈希后位置相同,導致詞頻累加后特征值突然變大。
為了解決這個問題,出現了hash trick的變種signed hash trick,多了一個哈希函數\({\xi}:N{\rightarrow}{\pm}1\),此時,我們有:

\[c'(j)=\sum_{i\in J;h(i)=j}{\xi}(i)c(i) \]

這樣做的好處是,哈希后的特征值仍然是一個無偏的估計,不會導致某些哈希位置的值過大。從實際應用中來說,由於文本特征的高稀疏性,這么做是可行的。
注意hash trick降維后的特征已經不知道其代表的特征和意義,所以其解釋性不強。
一般來說,只要詞匯表的特征不至於太大,大到內存不夠用,肯定是使用一般意義的向量化比較好。因為向量化的方法解釋性很強,我們知道每一維特征對應哪一個詞,進而我們還可以使用TF-IDF對各個詞特征的權重進行修改,進一步完善特征的表示。
而Hash Trick一般使用在大規模機器學習上。此時我們的詞匯量極大,使用向量化方法內存可能不夠用,而使用Hash Trick降維速度很快,降維后的特征仍然可以幫我們完成后續的分類和聚類工作。當然由於分布式計算框架的存在,其實一般我們不會出現內存不夠的情況。因此,實際工作中常常使用的都是特征向量化。

三、doc2vec

(一)DBoW

Distributed Bag of Words(DBoW)在給定文檔向量的情況下預測文檔中一組隨機單詞的概率。和Skip-Gram很像。
DBoW模型的輸入是文檔向量,預測的是該文檔中隨機抽樣的單詞。在SGD的每一次迭代中采樣一個文本窗口,再從該文本窗口中隨機采樣一個詞,從而形成一個給定段落向量進行詞預測的多分類的任務。

(二)DM

Distributed Memory(DM)在給定文檔向量和上下文的情況下預測單詞的概率。和CBoW很像。
DM模型在訓練時,首先將每個文檔id和語料庫中的所有詞初始化為一個\(k\)維的向量,然后將文檔向量和上下文的向量輸入模型,隱藏層將這些向量進行累加或取均值或拼接得到中間向量,作為輸出層softmax的輸入。

(三)小結

不同的文檔具有不同的文檔向量,但是不同文檔中的相同詞具有相同的詞向量。在一個文檔的訓練過程中,文檔id保持不變,共享着同一個文檔向量,相當於在預測單詞的概率時,都利用了整個文檔的語義。
其主要優點是文檔向量的獲取過程中,可以對沒有標記的數據集進行訓練。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM