¡Pruebe el IDE en línea!
Chatito te ayuda a generar conjuntos de datos para entrenar y validar modelos de chatbot utilizando un DSL simple.
Si está creando chatbots utilizando modelos comerciales, marcos de código abierto o escribiendo su propio modelo de procesamiento de lenguaje natural, necesita ejemplos de capacitación y prueba. Chatito está aquí para ayudarte.
Este proyecto contiene:
Chatito en línea IDE
Especificación de Chatito DSL
Analizador DSL AST en formato pegjs
Generador implementado en paquete mecanografiado + npm
Para obtener la documentación y las especificaciones de idioma completas, consulte el documento de especificaciones de DSL.
El sobreajuste es un problema que se puede prevenir si utilizamos Chatito correctamente. La idea detrás de esta herramienta es tener una intersección entre el aumento de datos y una descripción de posibles combinaciones de oraciones. No está destinado a generar conjuntos de datos deterministas que puedan sobreajustarse a un modelo de oración única; en esos casos, puede tener cierto control sobre las rutas de generación y solo extraer muestras según sea necesario.
Complemento de resaltado de sintaxis de Visual Studio Code Gracias a Yuri Golobokov por su trabajo en esto.
Planos de IA: cómo crear e implementar proyectos empresariales de IA implementa ejemplos prácticos de chatbot completos utilizando chatito en el capítulo 7.
3 pasos para convertir datos de entrenamiento de chatbot entre diferentes proveedores de PNL detallan una forma sencilla de convertir el formato de datos a adaptadores no implementados. Puede utilizar un conjunto de datos generado con proveedores como DialogFlow, Wit.ai y Watson.
Aida-nlp es una pequeña biblioteca experimental de aprendizaje profundo de PNL para clasificación de textos y NER. Construido con Tensorflow.js, Keras y Chatito. Implementado en JS y Python.
El idioma es independiente del formato de salida generado y debido a que cada modelo puede recibir diferentes parámetros y configuraciones, estos son los formatos de datos implementados actualmente, si su proveedor no está en la lista, en la sección Herramientas y recursos hay más información sobre cómo soportar más formatos.
NOTA: Las muestras no se mezclan entre intenciones para facilitar la revisión y porque algunos adaptadores transmiten muestras directamente al archivo y se recomienda dividir las intenciones en diferentes archivos para facilitar la revisión y el mantenimiento.
Rasa es un marco de aprendizaje automático de código abierto para conversaciones automatizadas basadas en texto y voz. Comprenda mensajes, mantenga conversaciones y conéctese a canales de mensajería y API. Chatito puede ayudarle a crear un conjunto de datos para el componente Rasa NLU.
Un comportamiento particular del adaptador Rasa es que cuando una oración de definición de ranura solo contiene un alias, y ese alias define el argumento 'sinónimo' con 'verdadero', el conjunto de datos Rasa generado asignará el alias como sinónimo. p.ej:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
En este ejemplo, el conjunto de datos Rasa generado contendrá los entity_synonyms
del synonym 1
y synonym 2
asignados a some slot synonyms
.
Flair Un marco muy simple para PNL de última generación. Desarrollado por Zalando Research. Proporciona incorporaciones previamente entrenadas de última generación (GPT, BERT, RoBERTa, XLNet, ELMo, etc.) para muchos idiomas que funcionan de inmediato. Este adaptador admite el conjunto de datos text classification
en formato FastText y el conjunto de datos named entity recognition
en palabras anotadas BIO de dos columnas, como se documenta en la documentación de flair corpus. Estos dos formatos de datos son muy comunes y con muchos otros proveedores o modelos.
El conjunto de datos NER requiere un procesamiento de tokenización de palabras que actualmente se realiza mediante un tokenizador simple.
NOTA: El adaptador Flair solo está disponible para el paquete CLI NodeJS NPM, no para el IDE.
LUIS es parte de los servicios cognitivos de Microsoft. Chatito admite el entrenamiento de un modelo LUIS NLU a través de su extremo de enunciados etiquetados de adición por lotes y su API de prueba por lotes.
Para entrenar un modelo LUIS, deberá publicar la expresión en lotes en la API correspondiente para su entrenamiento o prueba.
Número de referencia: #61
Snips NLU es otro excelente marco de código abierto para NLU. Un comportamiento particular del adaptador Snips es que puede definir tipos de entidad para las ranuras. p.ej:
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
En el ejemplo anterior, todos los valores @[date]
se etiquetarán con la etiqueta de entidad snips/datetime
.
Utilice el formato predeterminado si planea entrenar un modelo personalizado o si está escribiendo un adaptador personalizado. Este es el formato más flexible porque puede anotar Slots
e Intents
con argumentos de entidad personalizados, y todos estarán presentes en la salida generada, por lo que, por ejemplo, también podría incluir lógica de generación de diálogo/respuesta con el DSL. P.ej:
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
Entidades personalizadas como 'contexto', 'requerido' y 'tipo' estarán disponibles en la salida para que pueda manejar estos argumentos personalizados como desee.
Chatito es compatible con Node.js >= v8.11
.
Instálalo con hilo o npm:
npm i chatito --save
Luego cree un archivo de definición (por ejemplo: trainClimateBot.chatito
) con su código.
Ejecute el generador npm:
npx chatito trainClimateBot.chatito
El conjunto de datos generado debería estar disponible junto a su archivo de definición.
Aquí están las opciones completas del generador npm:
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
<pathToFileOrDirectory>
ruta a un archivo .chatito
o un directorio que contiene archivos chatito. Si es un directorio, buscará recursivamente todos los archivos *.chatito
que contiene y los utilizará para generar el conjunto de datos. por ejemplo: lightsChange.chatito
o ./chatitoFilesFolder
<format>
Opcional. default
, rasa
, luis
, flair
o snips
.
<formatOptions>
Opcional. Ruta a un archivo .json que cada adaptador puede usar opcionalmente
<outputPath>
Opcional. El directorio donde guardar los conjuntos de datos generados. Utiliza el directorio actual como predeterminado.
<trainingFileName>
Opcional. El nombre del archivo del conjunto de datos de entrenamiento generado. No olvides agregar una extensión .json al final. Utiliza <format>
_dataset_training.json como nombre de archivo predeterminado.
<testingFileName>
Opcional. El nombre del archivo del conjunto de datos de prueba generado. No olvides agregar una extensión .json al final. Utiliza <format>
_dataset_testing.json como nombre de archivo predeterminado.
<defaultDistribution>
Opcional. La distribución de frecuencia predeterminada si no se define a nivel de entidad. El valor predeterminado es regular
y se puede configurar en even
.
<autoAliases>
Opcional. El comportamiento del generaor al encontrar un alias indefinido. Las opciones válidas son allow
, warn
, restrict
. El valor predeterminado es "permitir".
Rodrigo Pimentel
sr.rodrigopv[arroba]gmail