Installation • Deinstallation • Wie verwende ich Chatette ? • Chatette gegen Chatito ? • Entwicklung • Credits
Chatette ist ein Python-Programm, das anhand von Vorlagendateien Trainingsdatensätze für Rasa NLU generiert. Wenn Sie ohne großen Aufwand große Datensätze mit Beispieldaten für Aufgaben zum Verständnis natürlicher Sprache erstellen möchten, ist Chatette das richtige Projekt für Sie.
Konkret implementiert Chatette eine Domain Specific Language ( DSL ), die es Ihnen ermöglicht, Vorlagen zu definieren, um eine große Anzahl von Sätzen zu generieren, die dann in den Eingabeformaten von Rasa NLU gespeichert werden.
Das verwendete DSL ist nahezu eine Obermenge des hervorragenden Projekts Chatito von Rodrigo Pimentel. ( Hinweis: DSL ist eigentlich eine Obermenge von Chatito v2.1.x für Rasa NLU, nicht für alle möglichen Adapter. )
Ein interaktiver Modus ist ebenfalls verfügbar:
Um Chatette auszuführen, muss Python installiert sein. Chatette funktioniert sowohl mit Python 2.7 als auch mit 3.x (>= 3.4).
Chatette ist auf PyPI verfügbar und kann daher mit pip
installiert werden:
pip install chatette
Alternativ können Sie das GitHub-Repository klonen und die Anforderungen installieren:
pip install -r requirements/common.txt
Anschließend können Sie das Projekt (als bearbeitbares Paket) mit pip installieren, indem Sie den folgenden Befehl aus dem Verzeichnis Chatette/chatette/
ausführen:
pip install -e .
Anschließend können Sie das Modul mit den folgenden Befehlen im geklonten Verzeichnis ausführen.
Sie können Chatette einfach mit pip deinstallieren:
pip uninstall chatette
Die von Chatette verwendeten und generierten Daten werden aus Dateien geladen und in diesen gespeichert. Sie erhalten also:
Eine oder mehrere Eingabedateien, die die Vorlagen enthalten. Es ist keine bestimmte Dateierweiterung erforderlich. Die Syntax des DSL zum Erstellen dieser Vorlagen ist im Wiki beschrieben.
Eine oder mehrere Ausgabedateien , die von Chatette generiert werden und die generierten Beispiele enthalten. Diese Dateien können in JSON (standardmäßig) oder in Markdown formatiert werden und direkt an Rasa NLU weitergeleitet werden. Es ist auch möglich, ein JSONL -Format zu verwenden.
Sobald Chatette installiert ist und Sie die Vorlagendateien erstellt haben, führen Sie den folgenden Befehl aus:
python -m chatette < path_to_template >
wobei python
Ihr Python-Interpreter ist (einige Betriebssysteme verwenden python3
als Alias für den Python 3.x-Interpreter).
Den Namen der Ausgabedatei können Sie wie folgt angeben:
python -m chatette < path_to_template > -o < output_directory_path >
wird relativ zum Verzeichnis angegeben, aus dem das Skript ausgeführt wird. Die Ausgabedatei(en) werden dann in nummerierten .json
Dateien in
und
gespeichert. Wenn Sie keinen Pfad für das Ausgabeverzeichnis angegeben haben, ist der Standardpfad output
.
Weitere Programmargumente und sind im Wiki beschrieben.
TL;DR: Hauptverkaufsargument : Es ist einfacher, große Projekte mit Chatette abzuwickeln , und Sie können die meisten Chatito-Projekte ohne Änderungen in ein Chatette-Projekt umwandeln .
Eine völlig berechtigte Frage ist:
Warum gibt es Chatette , wenn Chatito bereits dieselben Zwecke erfüllt?
Eigentlich verfolgen die beiden Projekte unterschiedliche Ziele:
Chatito soll ein generisches, aber leistungsstarkes DSL sein, das gut lesbar bleiben sollte. Während es für kleine Projekte völlig in Ordnung ist, kann die Einfachheit von DSL bei größeren Projekten zur Belastung werden: Ihre Vorlagendatei wird überwältigend groß, sodass Sie sich darin verlieren.
Chatette definiert ein komplexeres DSL, um größere Projekte verwalten zu können und versucht, mit Chatito so interoperabel wie möglich zu bleiben. Hier ist eine nicht erschöpfende Liste der Funktionen, die Chatette hat und die Chatito nicht hat:
Da das DSL von Chatette eine Obermenge des DSL von Chatito ist, sind die für Chatito verwendeten Eingabedateien meistens vollständig mit Chatette verwendbar (nicht umgekehrt). Daher ist es einfach, mit Chatette zu beginnen, wenn Sie Chatito zuvor verwendet haben.
Als Beispiel diese Chatito- Daten:
// 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
könnte direkt als Eingabe an Chatette übergeben werden, aber diese Chatette- Vorlage würde die gleichen Ergebnisse liefern:
// 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
Die Chatito -Version ist wohl einfacher zu lesen, die Chatette -Version ist jedoch kürzer, was bei vielen Vorlagen und möglichen Wiederholungen sehr nützlich sein kann.
Beachten Sie, dass, wie immer beim maschinellen Lernen, zu viele Daten dazu führen können, dass Ihre Modelle aufgrund einer Überanpassung weniger gut funktionieren. Obwohl mit diesem Skript Tausende und Abertausende Beispiele generiert werden können, ist es für maschinelle Lernaufgaben nicht zu empfehlen.
Chatette ist nach Chatito benannt: -ette auf Französisch könnte auf Spanisch mit -ita oder -ito übersetzt werden. Beachten Sie, dass das letzte e in Chatette nicht ausgesprochen wird (wie es in „note“ der Fall ist).
Für Entwickler können Sie das Repo klonen und die Entwicklungsanforderungen installieren: pip install -r requirements/develop.txt
Installieren Sie dann das Modul als bearbeitbar: pip install -e
Führen Sie pylint aus: tox -e pylint
Führen Sie pycodestyle aus: tox -e pycodestyle
Führen Sie pytest aus: tox -e pytest
Haftungsausschluss: Dies ist ein Nebenprojekt, für das ich nicht bezahlt werde. Erwarten Sie nicht, dass ich rund um die Uhr daran arbeite.
Vielen Dank an sie!