Fountain est un outil d'augmentation des données en langage naturel qui aide les développeurs à créer et à étendre des ensembles de données de formation de chatbot spécifiques à un domaine pour les algorithmes d'apprentissage automatique.
Afin de créer de meilleurs assistants IA, nous avons besoin de plus de données, de meilleurs modèles ne suffisent pas.
La plupart des systèmes NLU nécessitent de saisir des milliers de requêtes possibles que les futurs utilisateurs utiliseraient - très probablement - et d'annoter chaque segment de phrase permettant d'identifier les intentions de l'utilisateur. Il s’agit généralement d’un processus manuel fastidieux et fastidieux. Fountain vise à aider les développeurs à faciliter ce processus et à générer un volume d'exemples de formation pour faciliter la formation et la création de systèmes de chatbot robustes.
L'outil vise à faciliter la création du même ensemble de données pour différents moteurs d'intention (Alexa d'Amazon, API.ai de Google, Wit de Facebook, Luis de Microsoft). Pour le moment, l'outil génère des ensembles de données de formation compatibles avec le format RasaNLU.
Vous pouvez installer le package via :
$ pip install git+git://github.com/tzano/fountain.git
Installez les dépendances :
$ pip install -r requirements.txt
Fountain utilise un modèle YAML
structuré, les développeurs peuvent déterminer la portée des intentions via le template
avec les définitions grammaticales. Chaque intention doit inclure au moins un sample utterances
qui déclenche une action. La requête inclut des attributs qui identifient l'intention de l'utilisateur. Ces informations clés sont appelées slots
. Nous incluons différents échantillons pour pouvoir générer des ensembles de données.
Nous utilisons trois opérations :
{slot_name:slot_type}
) : utilisé pour déclarer le modèle de slot.( first_word | second_word )
) : utilisé pour fournir un ensemble de mots-clés, ces mots peuvent être des synonymes (ex : heureux, joyeux) ou le même nom avec des orthographes différentes (ex : couleurs|couleurs)Un exemple simple d'intention ressemblerait à ce qui suit
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
Cela générera le json file
d'intention suivant en utilisant to_json
.
[
{
"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"
}
]
Le même fichier générerait le csv file
suivant en utilisant to_csv
.
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
La bibliothèque prend en charge plusieurs types d'emplacements (entités) prédéfinis pour simplifier et standardiser la façon dont les données de l'emplacement sont reconnues.
Ces entités ont été collectées à partir de différentes sources de données open source.
Dates et heures
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
Emplacement
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
Personnes
FOUNTAIN:FAMOUSPEOPLE
Afin de créer les types de données intégrés Fountain's
, nous avons traité les données provenant des sources de données suivantes :
Vous pouvez facilement charger et analyser le modèle DSL et exporter l'ensemble de données généré (format Rasa).
Vous pouvez trouver cet exemple dans le répertoire 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
Vous pouvez trouver des exemples sur la façon d'utiliser la bibliothèque dans le dossier labs
. Vous pouvez enrichir les ensembles de données intégrés en ajoutant plus de fichiers sous data/<language>/*files*.csv
. Assurez-vous d'indexer les fichiers que vous insérez dans resources/builtin.py
.
Pour plus d’informations sur les chatbots et la compréhension du langage naturel, visitez l’un des liens suivants :
Fountain
pour générer plus de 20 000 échantillons. Le fichier Yaml est disponible ici. Si vous rencontrez des problèmes, veuillez nous en informer ou soumettre une pull request.
Le projet est sous licence MIT.