前言
在NLP的很多字任務中,有絕大部分場景可以歸結為文本分類任務,比如:
情感分析(細粒度情感分析),
領域識別(Domain Detection),
意圖識別(Intent Detection),
等等.......最近在對話系統任務中接觸到部分文本分類任務,在閱讀了部分paper和知乎大牛的文章後,決定結合學習筆記以及工程代碼,整理出文本分類的系列文章,一來備忘,二來通過寫文章的方式來加深自己的理解。
定義
- 在給定的分類體系中,將文本分到指定的某個或某幾個類別當中
- 分類對象:短文本(句子/標題/商品評論)、長文本(文章)
- 分類體系一般由人工構造
- 新聞分類:政治、體育、軍事、社會
- 情感分類:正能量、負能量
- 微博評論分類:好評、中性、差評
- 分類模式
- binary:2類問題,屬於或不屬於,positive,negative
- multi-class:多類問題
- multi-label:多標籤問題,一個文本可以屬於多類。多標籤分類是文本分類的一大難點,以前面試的時候被問到這個問題,扒拉扒拉了一堆~
方法
- 人工方法
- 基於規則的特徵匹配,容易理解(足球、聯賽->體育)
- 依賴專家系統,不同人物需要專門構建特徵規則。費時費力
- 準確率不高
- 機器學習方法
- 特徵工程+演算法(Naive Bayes/SVM/LR/KNN……)
- 深度學習方法
- 詞向量+模型(FastText/TextCNN/TextRNN/TextRCNN/DPCNN/BERT/VDCNN)
此處著重關注深度學習方法。
深度學習方法介紹
傳統機器學習演算法主要問題的文本表示是高緯度高稀疏的,特徵表達能力很弱,而且神經網路很不擅長對此類數據的處理;此外需要人工進行特徵工程,成本很高。而深度學習最初在之所以圖像和語音取得巨大成功,一個很重要的原因是圖像和語音原始數據是連續和稠密的,有局部相關性。應用深度學習解決大規模文本分類問題最重要的是解決文本表示,再利用CNN/RNN等網路結構自動獲取特徵表達能力,去掉繁雜的人工特徵工程,端到端的解決問題。接下來會分別介紹:
1,FastText
- 論文:Bag of Tricks for Efficient Text Classification