Fountain 是一種自然語言資料增強工具,可協助開發人員建立和擴展機器學習演算法的特定領域聊天機器人訓練資料集。
為了建立更好的人工智慧助手,我們需要更多的數據,僅僅更好的模型是不夠的。
大多數 NLU 系統需要輸入未來使用者最有可能使用的數千個可能的查詢,並對每個可以識別使用者意圖的句子片段進行註釋。這通常是一個忙碌而乏味的手動過程。 Fountain 旨在幫助開發人員順利完成此過程,並產生大量訓練範例,以便更輕鬆地訓練和建立強大的聊天機器人系統。
該工具旨在使為不同意圖引擎(亞馬遜的 Alexa、Google的 API.ai、Facebook 的 Wit、微軟的 Luis)建立相同的資料集變得容易。目前,該工具會產生與 RasaNLU 格式相容的訓練資料集。
您可以透過以下方式安裝該軟體包:
$ pip install git+git://github.com/tzano/fountain.git
安裝依賴項:
$ pip install -r requirements.txt
Fountain使用結構化的YAML
模板,開發人員可以透過template
和語法定義來確定意圖範圍。每個意圖都應至少包含一個觸發操作的sample utterances
。查詢包括識別使用者意圖的屬性。這些關鍵資訊稱為slots
。我們包含不同的樣本以便能夠產生資料集。
我們使用三個操作:
{slot_name:slot_type}
):用於宣告槽模式。( first_word | second_word )
):用於提供一組關鍵字,這些單字可以是同義詞(例如:happy、joyful)或具有不同拼字的相同名稱(例如:colors|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 許可證獲得許可。