摘抄:https://zhuanlan.zhihu.com/p/25928551(原文地址)
一.傳統文本分類

1)文本預處理
文本預處理過程是在文本中提取關鍵詞表示文本的過程,中文文本處理中主要包括文本分詞和去停用詞兩個階段。
2)文本表示和特征提取
文本表示:
傳統做法常用詞袋模型(BOW, Bag Of Words)或向量空間模型(Vector Space Model),最大的不足是忽略文本上下文關系,每個詞之間彼此獨立,並且無法表征語義信息。
特征提取:
向量空間模型的文本表示方法的特征提取對應特征項的選擇和特征權重計算兩部分。
特征選擇的基本思路是根據某個評價指標獨立的對原始特征項(詞項)進行評分排序,從中選擇得分最高的一些特征項,過濾掉其余的特征項。
1>文檔頻率
2>互信息
3>信息增益
4>X^2統計(卡方統計)
特征權重主要是經典的TF-IDF方法及其擴展方法,主要思路是一個詞的重要度與在類別內的詞頻成正比,與所有類別出現的次數成反比。
基於語義的文本表示
1>LDA主題模型
2>LSI/PLSI概率潛在語義索引
3)分類:
1>朴素貝葉斯
2>KNN
3>SVM
二.深度學習方法
傳統做法主要問題的文本表示是高緯度高稀疏的,特征表達能力很弱,而且神經網絡很不擅長對此類數據的處理;此外需要人工進行特征工程,成本很高。
文本的分布式表示:
1)神經網絡語言模型(NNLM)

2)CBOW 和 Skip-Gram

文本分類模型:
1)fastText
《Bag of Tricks for Efficient Text Classification》

2)TextCNN
核心點在於可以捕捉局部相關性,具體到文本分類任務中可以利用CNN來提取句子中類似 n-gram 的關鍵信息。


特征:這里的特征就是詞向量,有靜態(static)和非靜態(non-static)方式。static方式采用比如word2vec預訓練的詞向量,訓練過程不更新詞向量,實質上屬於遷移學習了,特別是數據量比較小的情況下,采用靜態的詞向量往往效果不錯。non-static則是在訓練過程中更新詞向量。推薦的方式是 non-static 中的 fine-tunning方式,它是以預訓練(pre-train)的word2vec向量初始化詞向量,訓練過程中調整詞向量,能加速收斂,當然如果有充足的訓練數據和資源,直接隨機初始化詞向量效果也是可以的。
3)TextRNN

4)Hierarchical Attention Networks

5)TextRCNN

利用前向和后向RNN得到每個詞的前向和后向上下文的表示:
![]()
這樣詞的表示就變成詞向量和前向后向上下文向量concat起來的形式了,即:
![]()
