Fountain ist ein Tool zur Datenerweiterung natürlicher Sprache, das Entwicklern hilft, domänenspezifische Chatbot-Trainingsdatensätze für Algorithmen des maschinellen Lernens zu erstellen und zu erweitern.
Um bessere KI-Assistenten zu bauen, brauchen wir mehr Daten, bessere Modelle reichen nicht aus.
Die meisten NLU-Systeme erfordern die Eingabe Tausender möglicher Abfragen, die zukünftige Benutzer – höchstwahrscheinlich – verwenden würden, und kommentieren jedes Satzsegment, das die Absichten des Benutzers identifizieren kann. Im Allgemeinen handelt es sich um einen hektischen und langwierigen manuellen Prozess. Fountain möchte Entwicklern dabei helfen, diesen Prozess zu vereinfachen und eine Reihe von Trainingsbeispielen zu generieren, um das Training und den Aufbau robuster Chatbot-Systeme zu erleichtern.
Das Tool soll es einfach machen, denselben Datensatz für verschiedene Intent-Engines zu erstellen (Amazon’s Alexa, Google’s API.ai, Facebook’s Wit, Microsoft’s Luis). Derzeit generiert das Tool Trainingsdatensätze, die mit dem RasaNLU-Format kompatibel sind.
Sie können das Paket installieren über:
$ pip install git+git://github.com/tzano/fountain.git
Installieren Sie die Abhängigkeiten:
$ pip install -r requirements.txt
Fountain verwendet eine strukturierte YAML
Vorlage. Entwickler können den Umfang der Absichten anhand der template
mit den Grammatikdefinitionen bestimmen. Jede Absicht sollte mindestens eine sample utterances
enthalten, die eine Aktion auslöst. Die Abfrage umfasst Attribute, die die Absicht des Benutzers identifizieren. Diese Schlüsselinformationen werden als slots
bezeichnet. Wir beziehen verschiedene Stichproben ein, um Datensätze generieren zu können.
Wir verwenden drei Operationen:
{slot_name:slot_type}
): wird zum Deklarieren des Slot-Musters verwendet.( first_word | second_word )
): wird zur Bereitstellung einer Reihe von Schlüsselwörtern verwendet. Diese Wörter können Synonyme sein (z. B. glücklich, fröhlich) oder derselbe Name mit unterschiedlichen Schreibweisen (z. B. Farben|Farben).Ein einfaches Beispiel für eine Absicht wäre wie folgt
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
Dadurch wird die folgende Intent- json file
mit to_json
generiert.
[
{
"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"
}
]
Dieselbe Datei würde mit to_csv
die folgende csv file
generieren.
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
Die Bibliothek unterstützt mehrere vordefinierte Slot-Typen (Entitäten), um die Erkennung von Daten im Slot zu vereinfachen und zu standardisieren.
Diese Entitäten wurden aus verschiedenen Open-Source-Datenquellen gesammelt.
Daten und Zeiten
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
Standort
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
Menschen
FOUNTAIN:FAMOUSPEOPLE
Um die integrierten Datentypen Fountain's
zu erstellen, haben wir Daten aus den folgenden Datenquellen verarbeitet:
Sie können die DSL-Vorlage einfach laden und analysieren und den generierten Datensatz (Rasa-Format) exportieren.
Sie finden dieses Beispiel im Verzeichnis 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
Beispiele zur Verwendung der Bibliothek finden Sie im labs
Ordner. Sie können die integrierten Datensätze bereichern, indem Sie weitere Dateien unter data/<language>/*files*.csv
hinzufügen. Stellen Sie sicher, dass Sie die Dateien indizieren, die Sie in resources/builtin.py
einfügen.
Weitere Informationen zu Chatbots und Natural Language Understanding finden Sie unter einem der folgenden Links:
Fountain
verwendet, um mehr als 20.000 Samples zu generieren. Die Yaml-Datei ist hier verfügbar. Wenn Sie Probleme haben, teilen Sie uns dies bitte mit oder senden Sie eine Pull-Anfrage.
Das Projekt ist unter der MIT-Lizenz lizenziert.