嘗試在線 IDE!
Chatito 可協助您使用簡單的 DSL 產生用於訓練和驗證聊天機器人模型的資料集。
如果您正在使用商業模型、開源框架建立聊天機器人或編寫自己的自然語言處理模型,則需要培訓和測試範例。 Chatito 隨時為您提供協助。
此項目包含:
在線chatoto 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 是一個小型實驗性 NLP 深度學習庫,用於文本分類和 NER。使用 Tensorflow.js、Keras 和 Chatito 建置。用 JS 和 Python 實作。
該語言獨立於生成的輸出格式,並且因為每個模型可以接收不同的參數和設置,這是當前實現的資料格式,如果您的提供者未列出,在工具和資源部分有更多關於如何支持更多的資訊格式。
注意:為了更輕鬆地查看,範例不會在意圖之間打亂,因為某些適配器將範例直接串流到文件,建議將意圖拆分到不同的文件中,以便於查看和維護。
Rasa 是一個開源機器學習框架,用於自動文字和基於語音的對話。了解訊息、進行對話並連接到訊息傳遞管道和 API。 Chatito 可以幫助您為 Rasa NLU 元件建立資料集。
Rasa 適配器的一種特殊行為是,當槽定義語句僅包含一個別名,並且該別名將「同義詞」參數定義為「true」時,產生的 Rasa 資料集會會將別名對應為同義詞。例如:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
在此範例中,產生的Rasa資料集將包含synonym 1
和synonym 2
的entity_synonyms
對應到some slot synonyms
。
Flair 一個非常簡單的最先進的 NLP 框架。由 Zalando Research 開發。它為許多開箱即用的語言提供最先進的(GPT、BERT、RoBERTa、XLNet、ELMo 等)預訓練嵌入。此適配器支援 FastText 格式的text classification
資料集和兩列 BIO 註解詞的named entity recognition
資料集,如 flair 語料庫文件中所述。這兩種資料格式非常常見,並且與許多其他提供者或模型一起使用。
NER 資料集需要進行單字標記化處理,目前使用簡單的標記器來完成。
注意:Flair 轉接器僅適用於 NodeJS NPM CLI 包,不適用於 IDE。
LUIS 是 Microsoft 認知服務的一部分。 Chatito 支援透過其批次添加標記話語端點及其批量測試 API 來訓練 LUIS NLU 模型。
要訓練 LUIS 模型,您需要將話語批量發佈到相關 API 進行訓練或測試。
參考問題:#61
Snips NLU 是另一個很棒的 NLU 開源框架。 Snips 適配器的一項特殊行為是您可以為插槽定義實體類型。例如:
%[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]
輸出中將提供「上下文」、「必要」和「類型」等自訂實體,因此您可以根據需要處理這些自訂參數。
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