當前位置:成語大全網 - 成語詞典 - 文本分類特征工程概述

文本分類特征工程概述

首先,如何構建壹個完整的機器學習項目呢?

主要有以下幾個步驟:

個人認為這裏最重要的是第5步,特征工程。

何為特征工程呢?顧名思義,就是對原始數據進行壹系列工程處理,將其提煉為特征,作為輸入供算法和模型使用。

本質上講,特征工程是壹個表示和展現數據的過程;實際工作中,特征工程的目的是去除原始數據中的雜質和冗余,設計更高效的特征以刻畫求解的問題與預測模型之間的關系。

好的特征工程可以 ①降低模型復雜度,減小過擬合;②提升模型泛化性能;③加快模型訓練和預測速度。

為什麽必須要進行特征工程呢?在實際任務中,我們接收到的數據往往是高維,非線性,高噪聲的,比如壹張256*256像素*3(RGB通道數)的圖片,如果我們不*特征提取,那麽就需要把這196608個特征都使用上,對於分類器來講,這是必然會造成過擬合的。事實上對於壹張圖片來說,它關鍵的信息也就那麽幾個部位,同時妳完全可以采用壹種壓縮的方法把它們用更小的圖像展示出來,輸入到訓練網絡中。本質上來講,圖像壓縮也就是壹種特征工程。

對於文本這樣的非結構化數據來講呢(圖片、音頻、文本、視頻都是非結構化數據)?

文本分類的核心都是如何從文本中抽取出能夠體現文本特點的關鍵特征,抓取特征到類別之間的映射。所以特征工程很重要,可以由四部分組成:

文本表示是自然語言處理中的基礎工作,文本表示的好壞直接影響到整個自然語言處理系統的性能。文本向量化是文本表示的壹種重要方式。文本向量化就是講文本表示成壹系列能夠表達文本語義的向量。

詞袋模型是最早的以詞語為基本處理單元的文本向量化方法。

詞袋法(Bag Of Words,BOW) 基於這樣壹個樸素的思想:對訓練集詞庫中的每壹個詞構建唯壹的 獨熱向量(One-hot) 表示,每個單詞用 00000...0100..00000 表示,向量的長度為詞庫的長度,對於每個詞表示出的one-hot向量,只有壹個特定位置是1,其余都是0。

對於壹篇文本而言,同樣用壹個1*dim(dim表示詞數量)向量來表示,其中每個元素表示詞典中相關元素在文檔中出現的次數。(也有的詞袋模型中只要出現該詞就置1,否則置0,除了0和1沒有其他數字)

例如有如下兩個文檔:

①引入詞頻: 顧名思義,這是文本的詞袋表示向量不再是普通的 00102100...了,相應位置上的詞權重不再是該文本中某個詞的數量,而是該詞語在整個 語料庫 上的詞頻。改進後的文本詞袋表示如 0 0 67 0 187 43 0 0...

②引入tf-idf: 這是較常見的做法: Tf-Idf ,即 詞頻-逆文檔頻率。

TF-IDF有兩層意思,壹層是"詞頻"(Term Frequency,縮寫為TF),另壹層是"逆文檔頻率"(Inverse Document Frequency,縮寫為IDF)。 是壹種用於信息檢索(information retrieval)與文本挖掘(text mining)的常用加權技術。

TF-IDF基於這樣壹個樸素的思想: 某個詞的重要性與它在文件中出現的次數呈正比,與它在語料庫中出現的次數呈反比。

IDF的常用計算公式如下圖

這裏D為語料庫中總文檔數,D(i)為語料庫中出現詞i的文檔數量,註意這裏 分母+1 ,這是采用了 拉普拉斯平滑 ,避免有部分新的詞沒有在語料庫中出現過從而導致分母為0的情況出現。 此外,註意這裏用到了log函數 ,即對idf的值取了對數。

至於為什麽tf和idf是相乘而不是相加,idf為什麽要取對數,拉普拉斯平滑方法的選擇,這些都是經過大量理論推導和實驗研究的,具體細節此處不表。

最後,需要註意的是,同壹個詞,在同壹語料庫下的不同文檔中,它的tf-idf值是不同的:準確的來講,是idf值相同,但tf值不同,因為詞頻的計算是依據特定文檔的。

③引入N-gram

針對詞袋模型無法表達語序這樣的缺陷,有人提出了N-gram模型。本質上來講,N-gram是壹種語言模型,我們這裏只是借用了它的思想,即為了解決詞袋模型不考慮語序關系的問題,我們構建了壹個大小為N的詞滑動窗口進行新的表征。其實詞袋模型就是壹個 1-Gram模型 舉例來說,對於壹句話

其對應的詞袋模型為:

對應的2-gram模型為:

其他的話本質上還是和詞袋模型相同:N-gram模型的缺點是會造成更高的時空開銷,維度也更加稀疏了。

關於N-gram在語言模型上的知識以後再表。

其他方法亦可另見《python自然語言處理實戰:核心技術與算法》P85:tf-idf算法、TextRank算法、LSA/LSI/LDA算法

文本表示是自然語言處理中的基礎工作,文本表示的好壞直接影響到整個自然語言處理系統的性能。文本向量化是文本表示的壹種重要方式。文本向量化就是講文本表示成壹系列能夠表達文本語義的向量。

當前階段,對文本向量化的大部分研究都是通過詞向量化來實現的。與此同時,也有相當壹部分研究者將文章或者句子作為文本基本處理單元,提出了doc2vec和ste2vec技術。

基於embedding的詞表示,其核心思想是: 上下文相似的詞,其語義也相似。 這就是著名的 詞空間模型(word space model) ,詞向量通常使用神經網絡模型訓練得到,神經網絡模型就是根據上下文與目標詞之間的關系進行建模。

word2vec glove fasttext

word2vec改進→doc2vec:word2vec丟失了文本的語序信息,而文本的語序包含了重要信息。 doc2vec 主要有兩個模型: DM和DBOW 模型,DM和CBOW模型相對應,可以根據上下文詞向量和段向量預測目標詞的概率分布;DBOW與Skip-gram相對應,只輸入段向量,預測從段落中隨機抽取的詞組概率分布。總體而言,doc2vec是word2vec的升級,不僅提取了文本的語義信息,而且提取了文本的語序信息。

關於word2vec篇幅有點大,我們不在這裏講了,移步 此處

cnn rnn

NN的好處在於能end2end實現模型的訓練和測試,利用模型的非線性和眾多參數來學習特征,而不需要手工提取特征。CNN善於捕捉文本中關鍵的局部信息,而RNN則善於捕捉文本的上下文信息(考慮語序信息),並且有壹定的記憶能力。