Instalación • Desinstalación • ¿Cómo utilizar Chatette ? • ¿ Chatette vs Chatito ? • Desarrollo • Créditos
Chatette es un programa Python que genera conjuntos de datos de entrenamiento para archivos de plantilla dados por Rasa NLU . Si desea crear grandes conjuntos de datos de ejemplo para tareas de comprensión del lenguaje natural sin demasiado dolor de cabeza, Chatette es un proyecto para usted.
Específicamente, Chatette implementa un lenguaje específico de dominio ( DSL ) que le permite definir plantillas para generar una gran cantidad de oraciones, que luego se guardan en los formatos de entrada de Rasa NLU .
El DSL utilizado es casi un superconjunto del excelente proyecto Chatito creado por Rodrigo Pimentel. ( Nota: DSL es en realidad un superconjunto de Chatito v2.1.x para Rasa NLU, no para todos los adaptadores posibles).
También está disponible un modo interactivo:
Para ejecutar Chatette , necesitará tener Python instalado. Chatette funciona con Python 2.7 y 3.x (>= 3.4).
Chatette está disponible en PyPI y, por lo tanto, se puede instalar usando pip
:
pip install chatette
Alternativamente , puedes clonar el repositorio de GitHub e instalar los requisitos:
pip install -r requirements/common.txt
Luego puede instalar el proyecto (como un paquete editable) usando pip, ejecutando el siguiente comando desde el directorio Chatette/chatette/
:
pip install -e .
Luego puede ejecutar el módulo utilizando los siguientes comandos en el directorio clonado.
Puedes usar pip para desinstalar Chatette :
pip uninstall chatette
Los datos que Chatette utiliza y genera se cargan y guardan en archivos. Tendrás así:
Uno o varios archivos de entrada que contienen las plantillas. No es necesaria una extensión de archivo específica. La sintaxis del DSL para crear esas plantillas se describe en la wiki.
Uno o varios archivos de salida , que serán generados por Chatette y contendrán los ejemplos generados. Esos archivos se pueden formatear en JSON (de forma predeterminada) o en Markdown y se pueden enviar directamente a Rasa NLU . También es posible utilizar un formato JSONL .
Una vez que Chatette esté instalado y haya creado los archivos de plantilla, ejecute el siguiente comando:
python -m chatette < path_to_template >
donde python
es su intérprete de Python (algunos sistemas operativos usan python3
como alias del intérprete de Python 3.x).
Puede especificar el nombre del archivo de salida de la siguiente manera:
python -m chatette < path_to_template > -o < output_directory_path >
se especifica en relación con el directorio desde el que se ejecuta el script. Los archivos de salida se guardarán en archivos .json
numerados en
y
. Si no especificó una ruta para el directorio de salida, la predeterminada es output
.
Otros argumentos del programa y se describen en la wiki.
TL;DR: principal punto de venta : es más fácil lidiar con proyectos grandes usando Chatette, y puedes transformar la mayoría de los proyectos de Chatito en uno de Chatette sin ninguna modificación.
Una pregunta perfectamente legítima es:
¿Por qué existe Chatette cuando Chatito ya cumple los mismos propósitos?
En realidad, los dos proyectos tienen objetivos diferentes:
Chatito pretende ser un DSL genérico pero potente, que debería ser muy legible. Si bien está perfectamente bien para proyectos pequeños, cuando los proyectos crecen, la simplicidad de su DSL puede convertirse en una carga: su archivo de plantilla se vuelve abrumadoramente grande, hasta el punto de perderse en él.
Chatette define un DSL más complejo para poder gestionar proyectos más grandes e intenta mantenerse lo más interoperable posible con Chatito . Aquí hay una lista no exhaustiva de características que Chatette tiene y Chatito no tiene:
Como el DSL de Chatette es un superconjunto del de Chatito , los archivos de entrada utilizados para Chatito son la mayoría de las veces completamente utilizables con Chatette (no al revés). Por lo tanto, es fácil comenzar a usar Chatette si usó Chatito antes.
Como ejemplo, estos datos de 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
podría entregarse directamente como entrada a Chatette , pero esta plantilla de Chatette produciría los mismos resultados:
// 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
Podría decirse que la versión Chatito es más fácil de leer, pero la versión Chatette es más corta, lo que puede resultar muy útil cuando se trata de muchas plantillas y posibles repeticiones.
Tenga en cuenta que, como siempre ocurre con el aprendizaje automático, tener demasiados datos puede hacer que sus modelos funcionen peor debido al sobreajuste. Si bien este script se puede utilizar para generar miles y miles de ejemplos, no se recomienda para tareas de aprendizaje automático.
Chatette lleva el nombre de Chatito : -ette en francés podría traducirse a -ita o -ito en español. Tenga en cuenta que la última e en Chatette no se pronuncia (como es el caso en "nota").
Para los desarrolladores, pueden clonar el repositorio e instalar los requisitos de desarrollo: pip install -r requirements/develop.txt
Luego, instale el módulo como editable: pip install -e
módulo-chatette>
Ejecute pylint: tox -e pylint
Ejecute pycodestyle: tox -e pycodestyle
Ejecute pytest: tox -e pytest
Descargo de responsabilidad: este es un proyecto paralelo por el que no me pagan, no espere que trabaje en él las 24 horas del día, los 7 días de la semana.
¡Muchas gracias a ellos!