Instalação • Desinstalação • Como usar o Chatette ? • Chatette x Chatito ? • Desenvolvimento • Créditos
Chatette é um programa Python que gera conjuntos de dados de treinamento para arquivos de modelo fornecidos pelo Rasa NLU . Se você deseja criar grandes conjuntos de dados de exemplo para tarefas de compreensão de linguagem natural sem muita dor de cabeça, Chatette é um projeto para você.
Especificamente, Chatette implementa uma linguagem específica de domínio ( DSL ) que permite definir modelos para gerar um grande número de frases, que são então salvas no(s) formato(s) de entrada do Rasa NLU .
O DSL utilizado é quase um superconjunto do excelente projeto Chatito criado por Rodrigo Pimentel. ( Nota: o DSL é na verdade um superconjunto do Chatito v2.1.x para Rasa NLU, não para todos os adaptadores possíveis. )
Um modo interativo também está disponível:
Para executar o Chatette , você precisará ter o Python instalado. Chatette funciona com Python 2.7 e 3.x (>= 3.4).
Chatette está disponível no PyPI e, portanto, pode ser instalado usando pip
:
pip install chatette
Alternativamente , você pode clonar o repositório GitHub e instalar os requisitos:
pip install -r requirements/common.txt
Você pode então instalar o projeto (como um pacote editável) usando pip, executando o seguinte comando no diretório Chatette/chatette/
:
pip install -e .
Você pode então executar o módulo usando os comandos abaixo no diretório clonado.
Você pode simplesmente usar o pip para desinstalar o Chatette :
pip uninstall chatette
Os dados que o Chatette usa e gera são carregados e salvos em arquivos. Você terá assim:
Um ou vários arquivos de entrada contendo os modelos. Não há necessidade de uma extensão de arquivo específica. A sintaxe da DSL para criar esses modelos está descrita no wiki.
Um ou vários arquivos de saída , que serão gerados pelo Chatette e conterão os exemplos gerados. Esses arquivos podem ser formatados em JSON (por padrão) ou em Markdown e podem ser alimentados diretamente no Rasa NLU . Também é possível usar um formato JSONL .
Depois que o Chatette estiver instalado e você tiver criado os arquivos de modelo, execute o seguinte comando:
python -m chatette < path_to_template >
onde python
é o seu interpretador Python (alguns sistemas operacionais usam python3
como alias para o interpretador Python 3.x).
Você pode especificar o nome do arquivo de saída da seguinte maneira:
python -m chatette < path_to_template > -o < output_directory_path >
é especificado relativamente ao diretório a partir do qual o script está sendo executado. Os arquivos de saída serão salvos em arquivos .json
numerados em
e
. Se você não especificou um caminho para o diretório de saída, o padrão será output
.
Outros argumentos do programa estão descritos no wiki.
DR: principal ponto de venda : é mais fácil lidar com grandes projetos usando Chatette, e você pode transformar a maioria dos projetos Chatito em Chatette sem qualquer modificação.
Uma pergunta perfeitamente legítima é:
Por que o Chatette existe quando o Chatito já cumpre os mesmos propósitos?
Na verdade, os dois projetos têm objetivos diferentes:
Chatito pretende ser uma DSL genérica, mas poderosa, que deve permanecer muito legível. Embora seja perfeitamente adequado para projetos pequenos, quando os projetos ficam maiores, a simplicidade de sua DSL pode se tornar um fardo: seu arquivo de modelo se torna extremamente grande, a ponto de você se perder dentro dele.
Chatette define uma DSL mais complexa para poder gerenciar projetos maiores e tenta permanecer o mais interoperável possível com Chatito . Aqui está uma lista não exaustiva de recursos que Chatette possui e que Chatito não possui:
Como o DSL do Chatette é um superconjunto do do Chatito , os arquivos de entrada usados para o Chatito são na maioria das vezes completamente utilizáveis com o Chatette (e não o contrário). Portanto, é fácil começar a usar o Chatette se você já usou o Chatito antes.
Por exemplo, estes dados do 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
poderia ser fornecido diretamente como entrada para Chatette , mas este modelo Chatette produziria os mesmos 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
A versão Chatito é indiscutivelmente mais fácil de ler, mas a versão Chatette é mais curta, o que pode ser muito útil ao lidar com muitos modelos e possíveis repetições.
Esteja ciente de que, como sempre acontece com o aprendizado de máquina, ter muitos dados pode fazer com que seus modelos tenham um desempenho pior devido ao overfitting. Embora esse script possa ser usado para gerar milhares e milhares de exemplos, ele não é recomendado para tarefas de aprendizado de máquina.
Chatette tem o nome de Chatito : -ette em francês pode ser traduzido para -ita ou -ito em espanhol. Observe que o último e em Chatette não é pronunciado (como é o caso em "nota").
Para desenvolvedores, você pode clonar o repositório e instalar os requisitos de desenvolvimento: pip install -r requirements/develop.txt
Em seguida, instale o módulo como editável: pip install -e
Execute o pylint: tox -e pylint
Execute pycodestyle: tox -e pycodestyle
Execute pytest: tox -e pytest
Isenção de responsabilidade: este é um projeto paralelo pelo qual não sou pago, não espere que eu trabalhe nele 24 horas por dia, 7 dias por semana.
Muito obrigado a eles!