TextClassification-Keras
該代碼存儲庫實現了使用KERAS框架進行文本分類的各種深度學習模型,其中包括: FastText , Textcnn , Textrnn , Textbirnn , TextAttBirnn , Han , Rcnn , Rcnnvariant等。除了還包括模型實現,還包括一個簡化的應用程序。
指導
- 環境
- 用法
- 模型
- fastText
- textcnn
- Textrnn
- Textbirnn
- Textattbirnn
- 漢
- rcnn
- rcnnvariant
- 待續...
- 參考
環境
- Python 3.7
- Numpy 1.17.2
- TensorFlow 2.0.1
用法
所有代碼都位於目錄/model中,每種模型都有一個相應的目錄,其中放置了模型和應用程序。
例如,fastText的模型和應用位於/model/FastText下,模型零件為fast_text.py ,應用程序部件為main.py
模型
1個fastText
FastText是在紙袋中提出的,以進行有效的文本分類。
1.1紙上的描述

- 使用查找表, ngram秘密的袋子向單詞表示。
- 單詞表示形式平均為文本表示,這是一個隱藏的變量。
- 文本表示依次饋送到線性分類器。
- 使用SoftMax函數來計算預定義類上的概率分佈。
1.2在這裡實施
FastText的網絡結構:

2 textcnn
在論文卷積神經網絡中提出了textcnn,以進行句子分類。
2.1紙上的描述

- 用靜態和非靜態通道表示句子。
- 在多個濾波器寬度和特徵地圖上進行卷積。
- 使用最大超時池。
- 將完全連接的層與輟學和SoftMax Ouput一起使用。
2.2在這裡實施
TextCNN的網絡結構:

3 Textrnn
Textrnn已在紙質循環神經網絡中提到,用於通過多任務學習進行文本分類。
3.1紙上的描述

3.2在這裡實施
Textrnn的網絡結構:

4 Textbirnn
TextBirnn是基於Textrnn的改進模型。它將網絡結構中的RNN層改進到雙向RNN層中。希望不僅可以考慮前向編碼信息,還可以考慮反向編碼信息。尚未發現相關論文。
Textbirnn的網絡結構:

5 textattbirnn
TextattBirnn是一個改進的模型,它基於Textbirnn介紹了注意機制。對於通過雙向RNN編碼獲得的表示向量,該模型可以專注於通過注意機制與決策最相關的信息。注意機制首先是在紙神經機器翻譯中提出的,通過共同學習對齊和翻譯,此處的注意機制的實現是指帶有註意力的紙質饋送網絡可以解決一些長期的記憶問題。
5.1紙上的描述

在紙質進料前網絡中,注意力可以解決一些長期記憶問題,從而簡化了饋電注意,如下所示,

功能a (可學習的功能)被認為是供稿前向網絡。在此公式中,可以將注意力視為通過計算狀態序列h的自適應加權平均值來產生輸入序列的固定長度嵌入c
5.2在這裡實施
此處未介紹注意力的實現,請直接參考源代碼。
TextattBirnn的網絡結構:

6漢
漢是在紙質分層注意網絡中提出的,用於文檔分類。
6.1紙上的描述

- 單詞編碼器。通過雙向gru編碼,給定單詞的註釋是通過連接前向隱藏狀態和向後隱藏狀態來獲得的,該狀態總結了當前時間步驟中圍繞單詞的整個句子的信息。
- 單詞關注。通過單層MLP和SoftMax功能,可以計算出與先前單詞註釋相比的歸一化重要性權重。然後,將句子向量計算為基於權重註釋單詞的加權總和。
- 句子編碼器。以與單詞編碼器相似的方式,使用雙向gru來編碼句子以獲取句子的註釋。
- 句子注意。與單詞的注意相似,請使用單層MLP和SoftMax功能來獲得句子註釋的權重。然後,根據權重計算句子註釋的加權總和,以獲取文檔向量。
- 文檔分類。使用SoftMax函數來計算所有類的概率。
6.2在這裡實施
這裡的注意力是基於餵食的,這與TextattBirnn中的關注相同。
Han的網絡結構:

由於嵌入,雙向RNN的參數,並且注意層有望在時間步長維度上共享,因此在此處使用定時式包裝器。
7 rcnn
RCNN是在紙質卷積神經網絡中提出的,用於文本分類。
7.1紙上的描述

- 單詞表示學習。 RCNN使用複發結構,即雙向復發性神經網絡來捕獲上下文。然後,將單詞及其上下文結合起來以呈現單詞。並將線性轉化與
tanh激活Fucntion一起應用於表示。 - 文本表示學習。當計算單詞的所有表示形式時,它將應用一個元素的最大通用層,以捕獲整個文本中最重要的信息。最後,進行線性轉換並應用SoftMax函數。
7.2在這裡實施
RCNN的網絡結構:

8 rcnnvariant
RCNNVARIANT是基於RCNN的改進模型,具有以下改進。尚未發現相關論文。
- 這三個輸入更改為單個輸入。刪除了左和右上下文的輸入。
- 使用雙向LSTM/GRU代替傳統RNN來編碼上下文。
- 使用多通道CNN代表語義向量。
- 用Relu激活層代替Tanh激活層。
- 同時使用平均泵和MaxPooling 。
rcnnvariant的網絡結構:

待續...
參考
- 有效文本分類的技巧袋
- keras示例imdb fastText
- 句子分類的捲積神經網絡
- KERAS示例IMDB CNN
- 多任務學習的複發性神經網絡用於文本分類
- 神經機器翻譯通過共同學習對齊和翻譯
- 引起注意的前進網絡可以解決一些長期記憶問題
- cbaziotis的注意
- 文檔分類的分層注意力網絡
- 理查德的漢
- 用於文本分類的經常性卷積神經網絡
- AiralCorn2的RCNN