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 Covertの袋を単語表現に使用します。
- 単語表現は、隠された変数であるテキスト表現に平均化されます。
- テキスト表現は、線形分類器に順番に供給されます。
- 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ハン
HANは、ドキュメント分類のために紙の階層的注意ネットワークで提案されました。
6.1紙の説明

- 単語エンコーダー。双方向Gruによるエンコード、特定の単語の注釈は、現在の時間ステップで単語を中心とした文の情報を要約する前方の隠れた状態と後方の隠れた状態を連結することによって得られます。
- 注意の注意。 1層MLPおよびSoftMax関数により、以前の単語アノテーションで正規化された重要な重みを計算することができます。次に、重みに基づいた単語注釈の加重合計として文ベクトルを計算します。
- 文エンコーダー。 Word Encoderと同様の方法で、双方向のGRUを使用して文をエンコードして、文の注釈を取得します。
- 文の注意。単語の注意と同様に、1層MLPとSoftMax関数を使用して、文の注釈よりも重みを取得します。次に、文書ベクトルを取得するために、重みに基づいて文の注釈の加重合計を計算します。
- ドキュメント分類。 SoftMax関数を使用して、すべてのクラスの確率を計算します。
6.2実装はこちら
ここでの注意の実装は、feedforwardattentionに基づいています。これは、textattbirnnの注意と同じです。
HANのネットワーク構造:

埋め込み、双方向RNN、および注意層のパラメーターがタイムステップディメンションで共有されると予想されるため、TimeDistributedラッパーはここで使用されます。
7 rcnn
RCNNは、テキスト分類のために、紙の再発性畳み込みニューラルネットワークで提案されました。
7.1紙の説明

- 単語表現学習。 RCNNは、双方向の再発性ニューラルネットワークである再発構造を使用して、コンテキストをキャプチャします。次に、単語とその文脈を組み合わせて、単語を提示します。また、
tanh活性化のfucntionとともに線形変換を表現に適用します。 - テキスト表現学習。単語の表現がすべて計算されると、テキスト全体で最も重要な情報をキャプチャするために、要素ごとの最大プーリングレイヤーを適用します。最後に、線形変換を行い、 SoftMax関数を適用します。
7.2実装はこちら
RCNNのネットワーク構造:

8 rcnnvariant
RCNNVARIANTは、RCNNに基づいた改善されたモデルであり、次の改善があります。関連する論文はまだ見つかりませんでした。
- 3つの入力は単一の入力に変更されます。左右のコンテキストの入力が削除されます。
- エンコードコンテキストには、従来のRNNの代わりに双方向LSTM/GRUを使用します。
- マルチチャネルCNNを使用して、セマンティックベクターを表します。
- TANHアクティベーション層をRelu Activation Layerに置き換えます。
- 平均的なプーリングと最大プーリングの両方を使用します。
rcnnvariantのネットワーク構造:

つづく...
参照
- 効率的なテキスト分類のためのトリックのバッグ
- Kerasの例IMDB FastText
- 文の分類のための畳み込みニューラルネットワーク
- ケラスの例IMDB CNN
- マルチタスク学習によるテキスト分類のための再発ニューラルネットワーク
- 共同で調整して翻訳することを学ぶことによるニューラル機械翻訳
- 注意を払ったフィードフォワードネットワークは、いくつかの長期的なメモリの問題を解決できます
- Cbaziotisの注意
- ドキュメント分類のための階層的な注意ネットワーク
- リチャードの漢
- テキスト分類のための再発畳み込みニューラルネットワーク
- AiralCorn2のRCNN