Fountain は、開発者が機械学習アルゴリズム用にドメイン固有のチャットボット トレーニング データセットを作成および拡張できるようにする自然言語データ拡張ツールです。
より優れた AI アシスタントを構築するには、より多くのデータが必要ですが、より優れたモデルだけでは十分ではありません。
NLU システムのほとんどでは、将来のユーザーが使用する可能性が最も高い数千のクエリを入力し、ユーザーの意図を特定できるすべての文セグメントに注釈を付ける必要があります。これは通常、多忙で退屈な手作業のプロセスです。 Fountain は、開発者がこのプロセスをスムーズにし、大量のトレーニング サンプルを生成して、堅牢なチャットボット システムのトレーニングと構築を容易にすることを目的としています。
このツールは、異なるインテント エンジン (Amazon の Alexa、Google の API.ai、Facebook の Wit、Microsoft の Luis) 用に同じデータセットを簡単に構築できるようにすることを目的としています。現時点では、このツールは RasaNLU 形式と互換性のあるトレーニング データセットを生成します。
パッケージは次の方法でインストールできます。
$ pip install git+git://github.com/tzano/fountain.git
依存関係をインストールします。
$ pip install -r requirements.txt
Fountain は構造化されたYAML
テンプレートを使用し、開発者は文法定義を含むtemplate
を通じて意図の範囲を決定できます。すべてのインテントには、アクションをトリガーするsample utterances
少なくとも 1 つ含まれている必要があります。クエリには、ユーザーの意図を特定する属性が含まれます。これらの重要な情報はslots
と呼ばれます。データセットを生成できるように、さまざまなサンプルが含まれています。
次の 3 つの操作を使用します。
{slot_name:slot_type}
): スロット パターンを宣言するために使用されます。( first_word | second_word )
): 一連のキーワードを指定するために使用されます。これらの単語は同義語 (例: happy、joyful) またはスペルが異なる同じ名前 (例: color|colours) にすることができます。インテントの簡単な例は次のようになります。
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
これにより、 to_json
を使用して次のインテントjson file
生成されます。
[
{
"entities": [
{
"end": 21,
"entity": "location",
"start": 14,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a cab to airport"
},
{
"entities": [
{
"end": 25,
"entity": "location",
"start": 14,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a cab to city center"
},
{
"entities": [
{
"end": 22,
"entity": "location",
"start": 15,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a taxi to airport"
},
{
"entities": [
{
"end": 26,
"entity": "location",
"start": 15,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a taxi to city center"
}
]
同じファイルは、 to_csv
を使用して次のcsv file
生成します。
intent utterance
book_cab book a cab to airport
book_cab book a cab to city center
book_cab book a taxi to airport
book_cab book a taxi to city center
このライブラリは、スロット内のデータの認識方法を簡素化および標準化するために、いくつかの事前定義されたスロット タイプ (エンティティ) をサポートしています。
これらのエンティティは、さまざまなオープンソース データ ソースから収集されています。
日付と時刻
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
位置
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
人々
FOUNTAIN:FAMOUSPEOPLE
Fountain's
組み込みデータ型を構築するために、次のデータ ソースからのデータを処理しました。
DSL テンプレートを簡単にロードして解析し、生成されたデータセット (Rasa 形式) をエクスポートできます。
このサンプルはlabs
ディレクトリにあります。
# DataGenerator
data_generator = DataGenerator()
# load template
template_fname = '<file>.yaml'
# parse the DSL template
results = data_generator.parse(template_fname)
# export to csv file
data_generator.to_csv('results.csv')
# export to csv file
data_generator.to_json('results.json')
pytest
ライブラリの使用方法の例はlabs
フォルダーにあります。 data/<language>/*files*.csv
の下にさらにファイルを追加することで、組み込みデータセットを強化できます。 resources/builtin.py
に挿入するファイルには必ずインデックスを付けてください。
チャットボットと自然言語理解の詳細については、次のリンクのいずれかにアクセスしてください。
Fountain
使用して 20,000 を超えるサンプルを生成しました。 Yaml ファイルはここから入手できます。 問題が発生した場合は、お知らせいただくか、プル リクエストを送信してください。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。