Probieren Sie die Online-IDE aus!
Chatito hilft Ihnen bei der Generierung von Datensätzen für das Training und die Validierung von Chatbot-Modellen mithilfe einer einfachen DSL.
Wenn Sie Chatbots mithilfe kommerzieller Modelle oder Open-Source-Frameworks erstellen oder Ihr eigenes Modell zur Verarbeitung natürlicher Sprache schreiben, benötigen Sie Trainings- und Testbeispiele. Chatito ist hier, um Ihnen zu helfen.
Dieses Projekt enthält Folgendes:
Online-Chatito-IDE
Chatito DSL-Spezifikation
DSL-AST-Parser im PegJS-Format
Generator im Typescript + NPM-Paket implementiert
Die vollständige Sprachspezifikation und Dokumentation finden Sie im DSL-Spezifikationsdokument.
Überanpassung ist ein Problem, das verhindert werden kann, wenn wir Chatito richtig verwenden. Die Idee hinter diesem Tool besteht darin, eine Schnittstelle zwischen Datenerweiterung und einer Beschreibung möglicher Satzkombinationen zu schaffen. Es ist nicht beabsichtigt, deterministische Datensätze zu generieren, die möglicherweise zu sehr zu einem einzelnen Satzmodell passen. In diesen Fällen können Sie eine gewisse Kontrolle über die Generierungspfade haben und nur bei Bedarf Stichproben ziehen.
Visual Studio Code-Syntaxhervorhebungs-Plugin. Vielen Dank an Yuri Golobokov für seine Arbeit daran.
KI-Blaupausen: Wie man KI-Geschäftsprojekte erstellt und bereitstellt, implementiert praktische, vollständige Chatbot-Beispiele mit Chatito in Kapitel 7.
3 Schritte zum Konvertieren von Chatbot-Trainingsdaten zwischen verschiedenen NLP-Anbietern beschreibt eine einfache Möglichkeit, das Datenformat in nicht implementierte Adapter zu konvertieren. Sie können einen generierten Datensatz mit Anbietern wie DialogFlow, Wit.ai und Watson verwenden.
Aida-nlp ist eine kleine experimentelle NLP-Deep-Learning-Bibliothek für Textklassifizierung und NER. Gebaut mit Tensorflow.js, Keras und Chatito. Implementiert in JS und Python.
Die Sprache ist unabhängig vom generierten Ausgabeformat und da jedes Modell unterschiedliche Parameter und Einstellungen empfangen kann, sind dies die aktuell implementierten Datenformate. Wenn Ihr Anbieter nicht aufgeführt ist, finden Sie im Abschnitt „Tools und Ressourcen“ weitere Informationen darüber, wie Sie mehr unterstützen können Formate.
HINWEIS: Beispiele werden zur einfacheren Überprüfung nicht zwischen Absichten gemischt. Da einige Adapter Beispiele direkt in die Datei streamen, wird empfohlen, Absichten zur einfacheren Überprüfung und Wartung in verschiedene Dateien aufzuteilen.
Rasa ist ein Open-Source-Framework für maschinelles Lernen für automatisierte text- und sprachbasierte Konversationen. Verstehen Sie Nachrichten, führen Sie Gespräche und stellen Sie eine Verbindung zu Messaging-Kanälen und APIs her. Chatito kann Ihnen beim Erstellen eines Datensatzes für die Rasa NLU-Komponente helfen.
Ein besonderes Verhalten des Rasa-Adapters besteht darin, dass, wenn ein Slot-Definitionssatz nur einen Alias enthält und dieser Alias das Argument „Synonym“ mit „true“ definiert, der generierte Rasa-Datensatz den Alias als Synonym zuordnet. z.B:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
In diesem Beispiel enthält der generierte Rasa-Datensatz die entity_synonyms
von synonym 1
und synonym 2
die some slot synonyms
zugeordnet sind.
Flair Ein sehr einfaches Framework für hochmodernes NLP. Entwickelt von Zalando Research. Es bietet hochmoderne (GPT, BERT, RoBERTa, XLNet, ELMo usw.) vorab trainierte Einbettungen für viele Sprachen, die sofort funktionieren. Dieser Adapter unterstützt den text classification
im FastText-Format und den named entity recognition
in zweispaltigen BIO-annotierten Wörtern, wie in der Flair-Corpus-Dokumentation dokumentiert. Diese beiden Datenformate sind sehr verbreitet und auch bei vielen anderen Anbietern bzw. Modellen zu finden.
Der NER-Datensatz erfordert eine Wort-Tokenisierungsverarbeitung, die derzeit mit einem einfachen Tokenizer durchgeführt wird.
HINWEIS: Der Flair-Adapter ist nur für das NodeJS NPM CLI-Paket verfügbar, nicht für die IDE.
LUIS ist Teil der kognitiven Dienste von Microsoft. Chatito unterstützt das Training eines LUIS-NLU-Modells über seinen Endpunkt zum Hinzufügen markierter Äußerungen im Batch und seine Batch-Test-API.
Um ein LUIS-Modell zu trainieren, müssen Sie die Äußerung stapelweise zum Trainieren oder Testen an die entsprechende API senden.
Referenzproblem: Nr. 61
Snips NLU ist ein weiteres großartiges Open-Source-Framework für NLU. Ein besonderes Verhalten des Snips-Adapters besteht darin, dass Sie Entitätstypen für die Slots definieren können. z.B:
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
Im vorherigen Beispiel werden alle @[date]
-Werte mit dem Entity-Tag snips/datetime
versehen.
Verwenden Sie das Standardformat, wenn Sie ein benutzerdefiniertes Modell trainieren oder einen benutzerdefinierten Adapter schreiben möchten. Dies ist das flexibelste Format, da Sie Slots
und Intents
mit benutzerdefinierten Entitätsargumenten annotieren können und sie alle in der generierten Ausgabe vorhanden sind. Sie könnten also beispielsweise auch Dialog-/Antwortgenerierungslogik in die DSL einbinden. Z.B:
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
Benutzerdefinierte Entitäten wie „Kontext“, „erforderlich“ und „Typ“ stehen in der Ausgabe zur Verfügung, sodass Sie diese benutzerdefinierten Argumente nach Ihren Wünschen verarbeiten können.
Chatito unterstützt Node.js >= v8.11
.
Installieren Sie es mit Garn oder NPM:
npm i chatito --save
Erstellen Sie dann eine Definitionsdatei (z. B. trainClimateBot.chatito
) mit Ihrem Code.
Führen Sie den npm-Generator aus:
npx chatito trainClimateBot.chatito
Der generierte Datensatz sollte neben Ihrer Definitionsdatei verfügbar sein.
Hier sind die vollständigen NPM-Generatoroptionen:
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
<pathToFileOrDirectory>
Pfad zu einer .chatito
Datei oder einem Verzeichnis, das Chatito-Dateien enthält. Wenn es sich um ein Verzeichnis handelt, wird rekursiv nach allen darin enthaltenen *.chatito
Dateien gesucht und diese zum Generieren des Datensatzes verwendet. zB: lightsChange.chatito
oder ./chatitoFilesFolder
<format>
Optional. default
, rasa
, luis
, flair
oder snips
.
<formatOptions>
Optional. Pfad zu einer JSON-Datei, die jeder Adapter optional verwenden kann
<outputPath>
Optional. Das Verzeichnis, in dem die generierten Datensätze gespeichert werden sollen. Verwendet standardmäßig das aktuelle Verzeichnis.
<trainingFileName>
Optional. Der Name der generierten Trainingsdatensatzdatei. Vergessen Sie nicht, am Ende eine .json-Erweiterung hinzuzufügen. Verwendet <format>
_dataset_training.json als Standarddateinamen.
<testingFileName>
Optional. Der Name der generierten Testdatensatzdatei. Vergessen Sie nicht, am Ende eine .json-Erweiterung hinzuzufügen. Verwendet <format>
_dataset_testing.json als Standarddateinamen.
<defaultDistribution>
Optional. Die Standardhäufigkeitsverteilung, wenn sie nicht auf Entitätsebene definiert ist. Der Standardwert ist regular
und kann auf even
eingestellt werden.
<autoAliases>
Optional. Das allgemeine Verhalten beim Finden eines undefinierten Alias. Gültige Optionen sind allow
, warn
restrict
. Standardmäßig ist „erlauben“.
Rodrigo Pimentel
sr.rodrigopv[at]gmail