Installation • Désinstallation • Comment utiliser Chatette ? • Chatette contre Chatito ? • Développement • Crédits
Chatette est un programme Python qui génère des ensembles de données de formation pour les fichiers modèles donnés par Rasa NLU . Si vous souhaitez créer de grands ensembles de données d'exemples de données pour des tâches de compréhension du langage naturel sans trop de maux de tête, Chatette est un projet pour vous.
Plus précisément, Chatette implémente un langage spécifique au domaine ( DSL ) qui vous permet de définir des modèles pour générer un grand nombre de phrases, qui sont ensuite enregistrées dans le(s) format(s) d'entrée de Rasa NLU .
Le DSL utilisé est un quasi-superset de l'excellent projet Chatito créé par Rodrigo Pimentel. ( Remarque : le DSL est en fait un surensemble de Chatito v2.1.x pour Rasa NLU, pas pour tous les adaptateurs possibles. )
Un mode interactif est également disponible :
Pour exécuter Chatette , vous devez avoir installé Python. Chatette fonctionne avec Python 2.7 et 3.x (>= 3.4).
Chatette est disponible sur PyPI, et peut donc être installé en utilisant pip
:
pip install chatette
Vous pouvez également cloner le référentiel GitHub et installer la configuration requise :
pip install -r requirements/common.txt
Vous pouvez ensuite installer le projet (sous forme de package éditable) à l'aide de pip, en exécutant la commande suivante depuis le répertoire Chatette/chatette/
:
pip install -e .
Vous pouvez ensuite exécuter le module en utilisant les commandes ci-dessous dans le répertoire cloné.
Vous pouvez simplement utiliser pip pour désinstaller Chatette :
pip uninstall chatette
Les données que Chatette utilise et génère sont chargées et enregistrées dans des fichiers. Vous aurez ainsi :
Un ou plusieurs fichier(s) d'entrée contenant les modèles. Il n'est pas nécessaire d'avoir une extension de fichier spécifique. La syntaxe du DSL pour créer ces modèles est décrite sur le wiki.
Un ou plusieurs fichier(s) de sortie , qui seront générés par Chatette et contiendront les exemples générés. Ces fichiers peuvent être formatés en JSON (par défaut) ou en Markdown et peuvent être directement transmis à Rasa NLU . Il est également possible d'utiliser un format JSONL .
Une fois Chatette installée et vous avez créé les fichiers modèles, exécutez la commande suivante :
python -m chatette < path_to_template >
où python
est votre interpréteur Python (certains systèmes d'exploitation utilisent python3
comme alias de l'interpréteur Python 3.x).
Vous pouvez spécifier le nom du fichier de sortie comme suit :
python -m chatette < path_to_template > -o < output_directory_path >
est spécifié par rapport au répertoire à partir duquel le script est exécuté. Le ou les fichiers de sortie seront ensuite enregistrés dans des fichiers .json
numérotés dans
et
. Si vous n'avez pas spécifié de chemin pour le répertoire de sortie, celui par défaut est output
.
D'autres arguments du programme sont décrits dans le wiki.
TL;DR : principal argument de vente : il est plus facile de gérer de gros projets avec Chatette, et vous pouvez transformer la plupart des projets Chatito en Chatette sans aucune modification.
Une question parfaitement légitime est :
Pourquoi Chatette existe-t-il alors que Chatito remplit déjà les mêmes objectifs ?
Les deux projets ont en réalité des objectifs différents :
Chatito se veut un DSL générique mais puissant, qui doit rester très lisible. Même s'il convient parfaitement aux petits projets, lorsque les projets s'agrandissent, la simplicité de son DSL peut devenir un fardeau : votre fichier modèle devient extrêmement volumineux, au point que vous vous y perdez.
Chatette définit un DSL plus complexe pour pouvoir gérer des projets plus importants et essaie de rester aussi interopérable que possible avec Chatito . Voici une liste non exhaustive des fonctionnalités que Chatette possède et que Chatito ne possède pas :
Comme le DSL de Chatette est un surensemble de celui de Chatito , les fichiers d'entrée utilisés pour Chatito sont la plupart du temps entièrement utilisables avec Chatette (et non l'inverse). Par conséquent, il est facile de commencer à utiliser Chatette si vous avez déjà utilisé Chatito .
A titre d'exemple, ces données Chatito :
// 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
pourrait être directement donné en entrée à Chatette , mais ce modèle Chatette produirait les mêmes résultats :
// 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
La version Chatito est sans doute plus facile à lire, mais la version Chatette est plus courte, ce qui peut être très utile lorsqu'il s'agit de nombreux modèles et de répétitions potentielles.
Attention, comme toujours avec l'apprentissage automatique, avoir trop de données peut entraîner une moins bonne performance de vos modèles en raison d'un surajustement. Bien que ce script puisse être utilisé pour générer des milliers et des milliers d’exemples, il n’est pas conseillé pour les tâches d’apprentissage automatique.
Chatette doit son nom à Chatito : -ette en français pourrait être traduit par -ita ou -ito en espagnol. A noter que le dernier e de Chatette ne se prononce pas (comme c'est le cas dans « note »).
Pour les développeurs, vous pouvez cloner le dépôt et installer les exigences de développement : pip install -r requirements/develop.txt
Ensuite, installez le module de manière modifiable : pip install -e
Exécutez pylint : tox -e pylint
Exécutez pycodestyle : tox -e pycodestyle
Exécutez pytest : tox -e pytest
Avertissement : il s'agit d'un projet parallèle pour lequel je ne suis pas payé, ne vous attendez pas à ce que je travaille dessus 24h/24 et 7j/7.
Un grand merci à eux !