Essayez l'IDE en ligne !
Chatito vous aide à générer des ensembles de données pour former et valider des modèles de chatbot à l'aide d'un simple DSL.
Si vous créez des chatbots à l'aide de modèles commerciaux, de frameworks open source ou si vous écrivez votre propre modèle de traitement du langage naturel, vous avez besoin d'exemples de formation et de test. Chatito est là pour vous aider.
Ce projet contient les :
IDE chatito en ligne
Spécification Chatito DSL
Analyseur DSL AST au format pegjs
Générateur implémenté dans le package TypeScript + NPM
Pour les spécifications linguistiques complètes et la documentation, veuillez vous référer au document de spécifications DSL.
Le surapprentissage est un problème qui peut être évité si nous utilisons correctement Chatito. L'idée derrière cet outil est d'avoir une intersection entre l'augmentation des données et une description des combinaisons de phrases possibles. Il n'est pas destiné à générer des ensembles de données déterministes susceptibles de surajuster un modèle de phrase unique. Dans ces cas, vous pouvez avoir un certain contrôle sur les chemins de génération et extraire uniquement les échantillons selon les besoins.
Plugin de coloration syntaxique Visual Studio Code Merci à Yuri Golobokov pour son travail à ce sujet.
AI Blueprints : Comment créer et déployer des projets commerciaux d'IA implémente des exemples pratiques de chatbot complets à l'aide de chatito au chapitre 7.
3 étapes pour convertir les données de formation du chatbot entre différents fournisseurs NLP détaillent un moyen simple de convertir le format de données en adaptateurs non implémentés. Vous pouvez utiliser un ensemble de données généré avec des fournisseurs comme DialogFlow, Wit.ai et Watson.
Aida-nlp est une petite bibliothèque expérimentale d'apprentissage profond PNL pour la classification de textes et le NER. Construit avec Tensorflow.js, Keras et Chatito. Implémenté en JS et Python.
Le langage est indépendant du format de sortie généré et comme chaque modèle peut recevoir différents paramètres et réglages, ce sont les formats de données actuellement implémentés. Si votre fournisseur n'est pas répertorié, dans la section Outils et ressources, vous trouverez plus d'informations sur la façon de prendre en charge davantage. formats.
REMARQUE : Les échantillons ne sont pas mélangés entre les intentions pour faciliter la révision et parce que certains adaptateurs diffusent les échantillons directement dans le fichier. Il est recommandé de diviser les intentions dans différents fichiers pour faciliter la révision et la maintenance.
Rasa est un framework d'apprentissage automatique open source pour les conversations automatisées par texte et par voix. Comprenez les messages, tenez des conversations et connectez-vous aux canaux de messagerie et aux API. Chatito peut vous aider à créer un ensemble de données pour le composant Rasa NLU.
Un comportement particulier de l'adaptateur Rasa est que lorsqu'une phrase de définition d'emplacement ne contient qu'un seul alias et que cet alias définit l'argument « synonyme » avec « vrai », l'ensemble de données Rasa généré mappera l'alias en tant que synonyme. par exemple :
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
Dans cet exemple, l'ensemble de données Rasa généré contiendra les entity_synonyms
du synonym 1
et synonym 2
mappés à some slot synonyms
.
Flair Un cadre très simple pour la PNL de pointe. Développé par Zalando Research. Il fournit des intégrations pré-entraînées de pointe (GPT, BERT, RoBERTa, XLNet, ELMo, etc...) pour de nombreux langages qui fonctionnent immédiatement. Cet adaptateur prend en charge l'ensemble de données text classification
au format FastText et l'ensemble de données named entity recognition
dans des mots annotés BIO à deux colonnes, comme documenté dans la documentation du corpus Flair. Ces deux formats de données sont très courants et chez de nombreux autres fournisseurs ou modèles.
L'ensemble de données NER nécessite un traitement de tokenisation de mots qui est actuellement effectué à l'aide d'un simple tokenizer.
REMARQUE : l'adaptateur Flair est uniquement disponible pour le package CLI NodeJS NPM, pas pour l'EDI.
LUIS fait partie des services cognitifs de Microsoft. Chatito prend en charge la formation d'un modèle LUIS NLU via son point de terminaison d'ajout d'énoncés étiquetés par lots et son API de test par lots.
Pour entraîner un modèle LUIS, vous devrez publier l'énoncé par lots sur l'API appropriée à des fins de formation ou de test.
Numéro de référence : #61
Snips NLU est un autre excellent framework open source pour NLU. Un comportement particulier de l'adaptateur Snips est que vous pouvez définir des types d'entités pour les emplacements. par exemple :
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
Dans l'exemple précédent, toutes les valeurs @[date]
seront étiquetées avec la balise d'entité snips/datetime
.
Utilisez le format par défaut si vous envisagez d'entraîner un modèle personnalisé ou si vous écrivez un adaptateur personnalisé. Il s'agit du format le plus flexible car vous pouvez annoter Slots
et Intents
avec des arguments d'entité personnalisés, et ils seront tous présents dans la sortie générée. Ainsi, par exemple, vous pouvez également inclure une logique de génération de dialogue/réponse avec le DSL. Par exemple :
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
Des entités personnalisées telles que « contexte », « requis » et « type » seront disponibles en sortie afin que vous puissiez gérer ces arguments personnalisés comme vous le souhaitez.
Chatito prend en charge Node.js >= v8.11
.
Installez-le avec du fil ou npm :
npm i chatito --save
Créez ensuite un fichier de définition (ex : trainClimateBot.chatito
) avec votre code.
Exécutez le générateur npm :
npx chatito trainClimateBot.chatito
L'ensemble de données généré devrait être disponible à côté de votre fichier de définition.
Voici les options complètes du générateur npm :
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
<pathToFileOrDirectory>
chemin d'accès à un fichier .chatito
ou à un répertoire contenant des fichiers chatito. S'il s'agit d'un répertoire, recherchera de manière récursive tous les fichiers *.chatito
qu'il contient et les utilisera pour générer l'ensemble de données. par exemple : lightsChange.chatito
ou ./chatitoFilesFolder
<format>
Facultatif. default
, rasa
, luis
, flair
ou snips
.
<formatOptions>
Facultatif. Chemin d'accès à un fichier .json que chaque adaptateur peut éventuellement utiliser
<outputPath>
Facultatif. Le répertoire où enregistrer les ensembles de données générés. Utilise le répertoire courant par défaut.
<trainingFileName>
Facultatif. Le nom du fichier de l'ensemble de données d'entraînement généré. N'oubliez pas d'ajouter une extension .json à la fin. Utilise <format>
_dataset_training.json comme nom de fichier par défaut.
<testingFileName>
Facultatif. Le nom du fichier de jeu de données de test généré. N'oubliez pas d'ajouter une extension .json à la fin. Utilise <format>
_dataset_testing.json comme nom de fichier par défaut.
<defaultDistribution>
Facultatif. La distribution de fréquence par défaut si elle n'est pas définie au niveau de l'entité. La valeur par défaut est regular
et peut être définie sur even
.
<autoAliases>
Facultatif. Le comportement du générateur lors de la recherche d'un alias non défini. Les options valides sont allow
, warn
, restrict
. La valeur par défaut est « autoriser ».
Rodrigo Pimentel
sr.rodrigopv[at]gmail