オンライン IDE を試してください。
Chatito は、シンプルな DSL を使用してチャットボット モデルをトレーニングおよび検証するためのデータセットを生成するのに役立ちます。
商用モデル、オープンソース フレームワークを使用してチャットボットを構築する場合、または独自の自然言語処理モデルを作成する場合は、トレーニングとテストのサンプルが必要です。 Chatito がお手伝いします。
このプロジェクトには次のものが含まれています。
オンラインチャットIDE
Chatito DSL仕様
pegjs 形式の DSL AST パーサー
typescript + npm パッケージで実装されたジェネレーター
完全な言語仕様とドキュメントについては、DSL 仕様ドキュメントを参照してください。
過剰適合は、Chatito を正しく使用すれば防ぐことができる問題です。このツールの背後にある考え方は、データ拡張と考えられる文の組み合わせの説明を結び付けることです。単一の文モデルをオーバーフィットする可能性のある決定論的なデータセットを生成することは意図されていません。そのような場合は、必要に応じてサンプルをプルするだけの生成パスをある程度制御できます。
Visual Studio Code 構文強調表示プラグイン これについては、Yuri Golobokov 氏の尽力に感謝します。
AI ブループリント: AI ビジネス プロジェクトの構築と展開方法では、第 7 章で chatito を使用した実践的な完全なチャットボットの例が実装されています。
異なる NLP プロバイダー間でチャットボット トレーニング データを変換する 3 つのステップでは、データ形式を実装されていないアダプターに変換する簡単な方法について詳しく説明します。生成されたデータセットは、DialogFlow、Wit.ai、Watson などのプロバイダーで使用できます。
Aida-nlp は、テキスト分類と NER 用の小さな実験的な NLP 深層学習ライブラリです。 Tensorflow.js、Keras、Chatito で構築されています。 JSとPythonで実装されています。
言語は生成された出力形式から独立しており、各モデルは異なるパラメーターと設定を受け取ることができるため、これが現在実装されているデータ形式です。プロバイダーがリストされていない場合は、「ツールとリソース」セクションに、より多くのサポート方法に関する詳細情報があります。フォーマット。
注: レビューを容易にするためにサンプルはインテント間でシャッフルされません。一部のアダプターはサンプルをファイルに直接ストリーミングするため、レビューとメンテナンスを容易にするためにインテントを異なるファイルに分割することが推奨されます。
Rasa は、自動化されたテキストおよび音声ベースの会話のためのオープンソースの機械学習フレームワークです。メッセージを理解し、会話を行い、メッセージング チャネルと API に接続します。 Chatito は、Rasa NLU コンポーネントのデータセットの構築を支援します。
Rasa アダプターの特定の動作の 1 つは、スロット定義文にエイリアスが 1 つだけ含まれており、そのエイリアスが 'synonym' 引数を 'true' で定義している場合、生成された Rasa データセットはエイリアスをシノニムとしてマップします。例えば:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
この例では、生成された Rasa データセットには、 some slot synonyms
にマッピングされるsynonym 1
とsynonym 2
のentity_synonyms
含まれます。
Flair 最先端の NLP のための非常にシンプルなフレームワーク。ザランドリサーチによって開発されました。これは、すぐに機能する多くの言語用の最先端 (GPT、BERT、RoBERTa、XLNet、ELMo など) の事前トレーニング済み埋め込みを提供します。このアダプターは、フレア コーパスのドキュメントに記載されているように、FastText 形式のtext classification
データセットと 2 列の BIO 注釈付き単語のnamed entity recognition
データセットをサポートします。この 2 つのデータ形式は非常に一般的であり、他の多くのプロバイダーやモデルでも使用されます。
NER データセットには単語のトークン化処理が必要ですが、現在は単純なトークナイザーを使用して行われています。
注: Flair アダプターは、NodeJS NPM CLI パッケージでのみ使用でき、IDE では使用できません。
LUIS は Microsoft の Cognitive サービスの一部です。 Chatito は、ラベル付き発話エンドポイントのバッチ追加とバッチ テスト API を通じて、LUIS NLU モデルのトレーニングをサポートします。
LUIS モデルをトレーニングするには、トレーニングまたはテストのために関連する API に発話をバッチで投稿する必要があります。
参考号:#61
Snips NLU は、NLU 用のもう 1 つの優れたオープンソース フレームワークです。 Snips アダプターの特定の動作の 1 つは、スロットのエンティティ タイプを定義できることです。例えば:
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
前の例では、すべての@[date]
値にsnips/datetime
エンティティ タグが付けられます。
カスタム モデルをトレーニングする予定がある場合、またはカスタム アダプターを作成している場合は、デフォルトの形式を使用します。これは、カスタム エンティティ引数を使用してSlots
とIntents
に注釈を付けることができ、それらはすべて生成された出力に存在するため、最も柔軟な形式です。そのため、たとえば、DSL にダイアログ/応答生成ロジックを含めることもできます。例えば:
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
「context」、「required」、「type」などのカスタム エンティティは出力で使用できるため、このカスタム引数を必要に応じて処理できます。
Chatito は Node.js >= v8.11
をサポートします。
Yarn または npm を使用してインストールします。
npm i chatito --save
次に、コードを含む定義ファイル (例: trainClimateBot.chatito
) を作成します。
npm ジェネレーターを実行します。
npx chatito trainClimateBot.chatito
生成されたデータセットは、定義ファイルの隣に表示されます。
npm ジェネレーターの完全なオプションは次のとおりです。
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
<pathToFileOrDirectory>
.chatito
ファイル、または chatito ファイルを含むディレクトリへのパス。ディレクトリの場合、内部のすべての*.chatito
ファイルを再帰的に検索し、それらを使用してデータセットを生成します。例: lightsChange.chatito
または./chatitoFilesFolder
<format>
オプション。 default
、 rasa
、 luis
、 flair
、またはsnips
。
<formatOptions>
オプション。各アダプターがオプションで使用できる .json ファイルへのパス
<outputPath>
オプション。生成されたデータセットを保存するディレクトリ。現在のディレクトリをデフォルトとして使用します。
<trainingFileName>
オプション。生成されたトレーニング データセット ファイルの名前。最後に .json 拡張子を追加することを忘れないでください。 <format>
_dataset_training.json をデフォルトのファイル名として使用します。
<testingFileName>
オプション。生成されたテスト データセット ファイルの名前。最後に .json 拡張子を追加することを忘れないでください。 <format>
_dataset_testing.json をデフォルトのファイル名として使用します。
<defaultDistribution>
オプション。エンティティ レベルで定義されていない場合のデフォルトの度数分布。デフォルトはregular
ですが、 even
に設定できます。
<autoAliases>
オプション。未定義のエイリアスを見つけたときの一般的な動作。有効なオプションは、 allow
、 warn
、 restrict
です。デフォルトは「許可」です。
ロドリゴ・ピメンテル
sr.rodrigopv[at]gmail