これは、CNN を使用した文分類タスクのための Keras 実装です。
上記のタスクのデータセットは、プロジェクト Natural Language Understanding ベンチマークから取得されました。
トレーニングに使用されるテキストは、AddToPlaylist、BookRestaurant、GetWeather、RateBook、SearchCreativeWork、SearchScreeningEvent の 6 つのカテゴリに分類され、それぞれ約 2000 の文があります。
データセットを準備するには、メイン プロジェクトのディレクトリからターミナルを開いて次のように入力します。
$ python prepare_data.py
モデルの構築とトレーニングの部分については、Intent_Classification_Keras_Glove.ipynb を確認してください。以下にモデルの概要を示します。
LSTM や GRU などの RNN は言語モデリング タスクに広く使用されていますが、CNN はトレーニング中のデータ並列化によりトレーニングが非常に速く、LSTM よりも優れた結果が得られることも証明されています。ここでは、文の分類を解決するためのさまざまな方法を簡単に比較します。TextCNN がすべての中で最高の結果をもたらし、トレーニングも高速であることがわかります。通常の i7 CPU でトレーニングした場合、3 エポック後の 1 分以内にトレーニングおよび検証データセットで 99% の精度を達成することができました。
目的指向のチャットボットを作成する際、意図の分類と固有表現の認識は 2 つの最も重要な部分です。
チャットボットを作成するためのオープンソース Python パッケージは多数あり、Rasa はその 1 つです。 Rasa の優れた点は、スタックのすべての部分が完全にカスタマイズ可能で、簡単に交換できることです。 Rasa には意図分類タスクの優れたサポートが組み込まれていますが、タスクに独自のモデルを指定することもできます。詳細については、「処理パイプライン」を確認してください。
Keras モデルでの事前トレーニング済みの単語埋め込みの使用
文分類のための畳み込みニューラル ネットワーク
文分類のための畳み込みニューラル ネットワークの感度分析 (および実践者向けガイド)
シーケンスモデリングのための汎用畳み込みネットワークとリカレントネットワークの経験的評価