Fountain — это инструмент для дополнения данных на естественном языке, который помогает разработчикам создавать и расширять наборы данных для обучения чат-ботов для конкретной предметной области для алгоритмов машинного обучения.
Чтобы создавать лучших помощников ИИ, нам нужно больше данных, лучших моделей недостаточно.
Большая часть системы NLU требует ввода тысяч возможных запросов, которые будущие пользователи, скорее всего, будут использовать, и аннотировать каждый сегмент предложения, который может идентифицировать намерения пользователя. Обычно это беспокойный и утомительный ручной процесс. Fountain стремится помочь разработчикам сгладить этот процесс и создать множество обучающих примеров, чтобы упростить обучение и создание надежных систем чат-ботов.
Цель инструмента — упростить создание одного и того же набора данных для разных движков намерений (Amazon Alexa, Google API.ai, Facebook Wit, Microsoft Luis). На данный момент инструмент генерирует наборы обучающих данных, совместимые с форматом RasaNLU.
Вы можете установить пакет через:
$ pip install git+git://github.com/tzano/fountain.git
Установите зависимости:
$ pip install -r requirements.txt
Fountain использует структурированный шаблон YAML
, разработчики могут определить объем намерений с помощью template
с определениями грамматики. Каждое намерение должно включать хотя бы один sample utterances
, запускающего действие. Запрос включает атрибуты, которые определяют намерение пользователя. Эта ключевая информация называется slots
. Мы включаем различные образцы, чтобы иметь возможность генерировать наборы данных.
Мы используем три операции:
{slot_name:slot_type}
): используется для объявления шаблона слота.( first_word | second_word )
): используется для предоставления набора ключевых слов. Эти слова могут быть синонимами (например: счастливый, радостный) или одним и тем же именем с разным написанием (например: цвета|цвета).Простой пример намерения будет выглядеть следующим образом:
book_cab:
- utterance: Book a (cab|taxi) to {location:place}
slots:
location:place:
- airport
- city center
Это создаст следующий json file
намерения с использованием 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"
}
]
Тот же файл будет генерировать следующий csv file
с использованием 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
Библиотека поддерживает несколько предопределенных типов слотов (объектов), чтобы упростить и стандартизировать распознавание данных в слоте.
Эти объекты были собраны из различных источников данных с открытым исходным кодом.
Даты и время
FOUNTAIN:DATE
FOUNTAIN:WEEKDAYS
FOUNTAIN:MONTH_DAYS
FOUNTAIN:MONTHS
FOUNTAIN:HOLIDAYS
FOUNTAIN:TIME
FOUNTAIN:NUMBER
Расположение
FOUNTAIN:COUNTRY
FOUNTAIN:CITY
Люди
FOUNTAIN:FAMOUSPEOPLE
Чтобы создать встроенные типы данных Fountain's
, мы обработали данные из следующих источников данных:
Вы можете легко загрузить и проанализировать шаблон DSL и экспортировать сгенерированный набор данных (формат Rasa).
Вы можете найти этот образец в каталоге 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
Вы можете найти примеры использования библиотеки в папке labs
. Вы можете расширить встроенные наборы данных, добавив дополнительные файлы в data/<language>/*files*.csv
. Обязательно проиндексируйте файлы, которые вы вставляете в resources/builtin.py
.
Для получения дополнительной информации о чат-ботах и распознавании естественного языка посетите одну из следующих ссылок:
Fountain
для создания более 20 000 образцов. Файл Yaml доступен здесь. Если у вас возникли проблемы, сообщите нам об этом или отправьте запрос на вытягивание.
Проект лицензирован по лицензии MIT.