インストール・アンインストール・Chatetteの使い方は? •シャテットvsチャティト? • 開発 • クレジット
Chatette は、テンプレート ファイルを指定してRasa NLUのトレーニング データセットを生成する Python プログラムです。あまり頭を悩ませることなく、自然言語理解タスク用のサンプル データの大規模なデータセットを作成したい場合は、 Chatetteが最適なプロジェクトです。
具体的には、 Chatette はドメイン固有言語 ( DSL ) を実装しています。これにより、テンプレートを定義して大量の文を生成し、それらの文をRasa NLUの入力形式で保存できます。
使用されるDSLは、Rodrigo Pimentel が作成した優れたプロジェクトChatitoのスーパーセットに近いものです。 (注: DSL は実際には、Rasa NLU 用の Chatito v2.1.x のスーパーセットであり、すべての可能なアダプター用ではありません。 )
インタラクティブ モードも利用できます。
Chatette を実行するには、Python をインストールする必要があります。 Chatette はPython 2.7 と 3.x (>= 3.4) の両方で動作します。
Chatette はPyPI で利用できるため、 pip
を使用してインストールできます。
pip install chatette
あるいは、GitHub リポジトリのクローンを作成して、要件をインストールすることもできます。
pip install -r requirements/common.txt
その後、ディレクトリChatette/chatette/
から次のコマンドを実行することで、pip を使用してプロジェクトを (編集可能なパッケージとして) インストールできます。
pip install -e .
その後、複製されたディレクトリで以下のコマンドを使用してモジュールを実行できます。
pip を使用するだけでChatette をアンインストールできます。
pip uninstall chatette
Chatette が使用および生成するデータは、ファイルからロードされ、ファイルに保存されます。したがって、次のようになります。
テンプレートを含む 1 つまたは複数の入力ファイル。特定のファイル拡張子は必要ありません。これらのテンプレートを作成するためのDSLの構文は wiki で説明されています。
1 つまたは複数の出力ファイル。Chatetteによって生成され、生成されたサンプルが含まれます。これらのファイルはJSON (デフォルト) またはMarkdownでフォーマットでき、 Rasa NLUに直接フィードできます。 JSONL形式を使用することも可能です。
Chatetteがインストールされ、テンプレート ファイルが作成されたら、次のコマンドを実行します。
python -m chatette < path_to_template >
ここで、 python
は Python インタープリターです (一部のオペレーティング システムでは、Python 3.x インタープリターのエイリアスとしてpython3
使用します)。
出力ファイルの名前は次のように指定できます。
python -m chatette < path_to_template > -o < output_directory_path >
、スクリプトの実行元のディレクトリに相対的に指定されます。出力ファイルは、
および
に番号付き.json
ファイルとして保存されます。出力ディレクトリのパスを指定しなかった場合、デフォルトのパスはoutput
です。
他のプログラム引数については wiki で説明されています。
TL;DR:主なセールス ポイント: Chatette を使用すると大規模なプロジェクトに対処するのが簡単になり、ほとんどの Chatito プロジェクトを変更せずにChatetteプロジェクトに変換できます。
完全に正当な質問は次のとおりです。
Chatito はすでに同じ目的を達成しているのに、なぜChatette が存在するのでしょうか?
実際、2 つのプロジェクトには異なる目標があります。
Chatito は、非常に読みやすい汎用性がありながら強力なDSLを目指しています。小規模なプロジェクトにはまったく問題ありませんが、プロジェクトが大きくなると、 DSLのシンプルさが負担になる可能性があります。テンプレート ファイルが圧倒的に大きくなり、テンプレート ファイルの中で迷子になってしまうほどです。
Chatette は、大規模なプロジェクトを管理できるように、より複雑なDSLを定義し、可能な限りChatitoとの相互運用性を維持しようとしています。以下は、 Chatetteが備えている機能とChatito が備えていない機能の非網羅的なリストです。
Chatetteの DSL はChatitoの DSL のスーパーセットであるため、 Chatitoに使用される入力ファイルはほとんどの場合、 Chatetteで完全に使用できます (その逆はありません)。したがって、以前にChatito を使用したことがある場合は、簡単にChatetteを使い始めることができます。
例として、このChatitoデータは次のとおりです。
// This template defines different ways to ask for the location of toilets (Chatito version)
%[ask_toilet]('training': '3')
~[sorry?] ~[tell me] where the @[toilet#singular] is ~[please?]?
~[sorry?] ~[tell me] where the @[toilet#plural] are ~[please?]?
~[sorry]
sorry
Sorry
excuse me
Excuse me
~[tell me]
~[can you?] tell me
~[can you?] show me
~[can you]
can you
could you
would you
~[please]
please
@[toilet#singular]
toilet
loo
@[toilet#plural]
toilets
Chatetteへの入力として直接与えることもできますが、このChatetteテンプレートは同じ結果を生成します。
// This template defines different ways to ask for the location of toilets (Chatette version)
%[&ask_toilet](3)
~[sorry?] ~[tell me] where the @[toilet#singular] is [please?]?
~[sorry?] ~[tell me] where the @[toilet#plural] are [please?]?
~[sorry]
sorry
excuse me
~[tell me]
~[can you?] [tell|show] me
~[can you]
[can|could|would] you
@[toilet#singular]
toilet
loo
@[toilet#plural]
toilets
Chatitoバージョンの方がおそらく読みやすいですが、 Chatetteバージョンは短いため、多数のテンプレートや潜在的な繰り返しを扱う場合に非常に役立つ可能性があります。
機械学習の場合と同様に、データが多すぎると、過学習によりモデルのパフォーマンスが低下する可能性があることに注意してください。このスクリプトを使用して何千もの例を生成できますが、機械学習タスクにはお勧めできません。
Chatette はChatitoにちなんで名付けられました。フランス語の-ette はスペイン語の-itaまたは-itoに翻訳できます。 Chatetteの最後のe は発音されないことに注意してください (「note」の場合と同様)。
開発者の場合は、リポジトリを複製して開発要件をインストールできます: pip install -r requirements/develop.txt
次に、モジュールを編集可能としてインストールします: pip install -e
pylint を実行します: tox -e pylint
pycodestyle を実行します: tox -e pycodestyle
pytest を実行します: tox -e pytest
免責事項: これは私が報酬を受けていないサイドプロジェクトです。私が年中無休で取り組むことを期待しないでください。
彼らに感謝します!