Fountain es una herramienta de aumento de datos en lenguaje natural que ayuda a los desarrolladores a crear y ampliar conjuntos de datos de entrenamiento de chatbot específicos de dominio para algoritmos de aprendizaje automático.
Para crear mejores asistentes de IA, necesitamos más datos; mejores modelos no son suficientes.
La mayor parte del sistema NLU requiere ingresar miles de consultas posibles que los futuros usuarios usarían, muy posiblemente, y anotar cada segmento de oración que pueda identificar las intenciones del usuario. Generalmente es un proceso manual agitado y tedioso. Fountain tiene como objetivo ayudar a los desarrolladores a facilitar este proceso y generar un volumen de ejemplos de capacitación para facilitar la capacitación y la construcción de sistemas de chatbot sólidos.
La herramienta pretende facilitar la creación del mismo conjunto de datos para diferentes motores de intención (Alexa de Amazon, API.ai de Google, Wit de Facebook, Luis de Microsoft). Por el momento, la herramienta genera conjuntos de datos de entrenamiento compatibles con el formato RasaNLU.
Puede instalar el paquete a través de:
$ pip install git+git://github.com/tzano/fountain.git
Instale las dependencias:
$ pip install -r requirements.txt
Fountain utiliza una plantilla YAML
estructurada, los desarrolladores pueden determinar el alcance de las intenciones a través de la template
con las definiciones gramaticales. Cada intención debe incluir al menos una sample utterances
que desencadene una acción. La consulta incluye atributos que identifican la intención del usuario. Esta información clave se llama slots
. Incluimos diferentes muestras para poder generar conjuntos de datos.
Usamos tres operaciones:
{slot_name:slot_type}
): utilizado para declarar el patrón de ranura.( first_word | second_word )
): se utiliza para proporcionar un conjunto de palabras clave, estas palabras pueden ser sinónimos (por ejemplo: feliz, alegre) o el mismo nombre con diferentes grafías (por ejemplo: colores|colores)Un ejemplo simple de intención sería el siguiente
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
Esto generará el siguiente json file
de intención 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"
}
]
El mismo archivo generaría el siguiente 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
La biblioteca admite varios tipos de ranuras (entidades) predefinidas para simplificar y estandarizar cómo se reconocen los datos en la ranura.
Estas entidades se han recopilado de diferentes fuentes de datos de código abierto.
Fechas y horarios
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
Ubicación
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
Gente
FOUNTAIN:FAMOUSPEOPLE
Para crear los tipos de datos integrados Fountain's
, procesamos datos de las siguientes fuentes de datos:
Puede cargar y analizar fácilmente la plantilla DSL y exportar el conjunto de datos generado (formato Rasa).
Puede encontrar este ejemplo en el directorio 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
Puede encontrar ejemplos sobre cómo utilizar la biblioteca en la carpeta labs
. Puede enriquecer los conjuntos de datos integrados agregando más archivos en data/<language>/*files*.csv
. Asegúrese de indexar los archivos que inserta en resources/builtin.py
.
Para obtener más información sobre Chatbots y comprensión del lenguaje natural, visite uno de los siguientes enlaces:
Fountain
para generar más de 20.000 muestras. El archivo Yaml está disponible aquí. Si tiene problemas, háganoslo saber o envíe una solicitud de extracción.
El proyecto está bajo la licencia MIT.