Fountain é uma ferramenta de aumento de dados em linguagem natural que ajuda os desenvolvedores a criar e expandir conjuntos de dados de treinamento de chatbot específicos de domínio para algoritmos de aprendizado de máquina.
Para construir melhores assistentes de IA, precisamos de mais dados, modelos melhores não são suficientes.
A maior parte do sistema NLU requer a inserção de milhares de consultas possíveis que os usuários futuros usariam - muito possivelmente - e anotar cada segmento de frase que possa identificar as intenções do usuário. Geralmente é um processo manual agitado e tedioso. O Fountain tem como objetivo ajudar os desenvolvedores a suavizar esse processo e gerar um volume de exemplos de treinamento para facilitar o treinamento e a construção de sistemas de chatbot robustos.
A ferramenta pretende facilitar a construção do mesmo conjunto de dados para diferentes mecanismos de intenção (Alexa da Amazon, API.ai do Google, Wit do Facebook, Luis da Microsoft). No momento, a ferramenta gera conjuntos de dados de treinamento compatíveis com o formato RasaNLU.
Você pode instalar o pacote via:
$ pip install git+git://github.com/tzano/fountain.git
Instale as dependências:
$ pip install -r requirements.txt
Fountain usa um modelo YAML
estruturado, os desenvolvedores podem determinar o escopo das intenções por meio do template
com as definições gramaticais. Cada intenção deve incluir pelo menos um sample utterances
que acione uma ação. A consulta inclui atributos que identificam a intenção do usuário. Essas informações importantes são chamadas slots
. Incluímos diferentes amostras para poder gerar conjuntos de dados.
Usamos três operações:
{slot_name:slot_type}
): usado para declarar o padrão de slot.( first_word | second_word )
): usado para fornecer um conjunto de palavras-chave, essas palavras podem ser sinônimos (ex.: feliz, alegre) ou o mesmo nome com grafias diferentes (ex.: cores|cores)Um exemplo simples de intenção seria o seguinte
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
Isso irá gerar o seguinte json file
de intenção usando to_json
.
[
{
"entities": [
{
"end": 21,
"entity": "location",
"start": 14,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a cab to airport"
},
{
"entities": [
{
"end": 25,
"entity": "location",
"start": 14,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a cab to city center"
},
{
"entities": [
{
"end": 22,
"entity": "location",
"start": 15,
"value": "airport"
}
],
"intent": "book_cab",
"text": "book a taxi to airport"
},
{
"entities": [
{
"end": 26,
"entity": "location",
"start": 15,
"value": "city center"
}
],
"intent": "book_cab",
"text": "book a taxi to city center"
}
]
O mesmo arquivo geraria o seguinte csv file
usando to_csv
.
intent utterance
book_cab book a cab to airport
book_cab book a cab to city center
book_cab book a taxi to airport
book_cab book a taxi to city center
A biblioteca oferece suporte a vários tipos de slots (entidades) predefinidos para simplificar e padronizar como os dados no slot são reconhecidos.
Estas entidades foram coletadas de diferentes fontes de dados de código aberto.
Datas e horários
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
Localização
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
Pessoas
FOUNTAIN:FAMOUSPEOPLE
Para construir os tipos de dados integrados Fountain's
, processamos dados das seguintes fontes de dados:
Você pode facilmente carregar e analisar o modelo DSL e exportar o conjunto de dados gerado (formato Rasa).
Você pode encontrar este exemplo no diretório labs
# DataGenerator
data_generator = DataGenerator()
# load template
template_fname = '<file>.yaml'
# parse the DSL template
results = data_generator.parse(template_fname)
# export to csv file
data_generator.to_csv('results.csv')
# export to csv file
data_generator.to_json('results.json')
pytest
Você pode encontrar exemplos de como usar a biblioteca na pasta labs
. Você pode enriquecer os conjuntos de dados integrados adicionando mais arquivos em data/<language>/*files*.csv
. Certifique-se de indexar os arquivos inseridos em resources/builtin.py
.
Para obter mais informações sobre Chatbots e compreensão de linguagem natural, visite um dos seguintes links:
Fountain
para gerar mais de 20.000 amostras. O arquivo Yaml está disponível aqui. Se você estiver tendo problemas, informe-nos ou envie uma solicitação pull.
O projeto está licenciado sob a licença MIT.