Попробуйте онлайн-IDE!
Chatito помогает создавать наборы данных для обучения и проверки моделей чат-ботов с помощью простого DSL.
Если вы создаете чат-ботов, используя коммерческие модели, платформы с открытым исходным кодом или пишете собственную модель обработки естественного языка, вам нужны примеры обучения и тестирования. Чатито здесь, чтобы помочь вам.
Этот проект содержит:
Онлайн-чат IDE
Спецификация Chatito DSL
Парсер DSL AST в формате pegjs
Генератор реализован в пакете typescript + npm.
Полную спецификацию языка и документацию см. в документе со спецификацией DSL.
Переоснащение — это проблема, которую можно предотвратить, если правильно использовать Chatito. Идея этого инструмента заключается в том, чтобы объединить увеличение данных и описание возможных комбинаций предложений. Он не предназначен для создания детерминированных наборов данных, которые могут соответствовать модели одного предложения. В этих случаях вы можете иметь некоторый контроль над путями генерации, только извлекая образцы по мере необходимости.
Плагин подсветки синтаксиса кода Visual Studio Спасибо Юрию Голобокову за его работу.
AI Blueprints: «Как создавать и развертывать бизнес-проекты AI» реализует практические полные примеры чат-ботов с использованием Chatito в главе 7.
В 3 шагах по преобразованию данных обучения чат-ботов между разными поставщиками NLP подробно описан простой способ преобразования формата данных в нереализованные адаптеры. Вы можете использовать сгенерированный набор данных с такими поставщиками, как DialogFlow, Wit.ai и Watson.
Aida-nlp — это крошечная экспериментальная библиотека глубокого обучения НЛП для классификации текста и NER. Построен с использованием Tensorflow.js, Keras и Chatito. Реализовано на JS и Python.
Язык не зависит от сгенерированного формата вывода, и поскольку каждая модель может получать разные параметры и настройки, это реализованные в настоящее время форматы данных. Если вашего поставщика нет в списке, в разделе «Инструменты и ресурсы» вы найдете дополнительную информацию о том, как поддерживать больше форматы.
ПРИМЕЧАНИЕ. Образцы не перемешиваются между намерениями для облегчения просмотра, а также потому, что некоторые адаптеры передают образцы непосредственно в файл, и рекомендуется разделить намерения в разных файлах для упрощения просмотра и обслуживания.
Rasa — это платформа машинного обучения с открытым исходным кодом для автоматизированных текстовых и голосовых разговоров. Понимайте сообщения, ведите беседы и подключайтесь к каналам обмена сообщениями и API. Chatito может помочь вам создать набор данных для компонента Rasa NLU.
Одним из особенностей поведения адаптера Rasa является то, что когда предложение определения слота содержит только один псевдоним, и этот псевдоним определяет аргумент «синоним» со значением «истина», сгенерированный набор данных Rasa будет отображать псевдоним как синоним. например:
%[some intent]('training': '1') @[some slot] @[some slot] ~[some slot synonyms] ~[some slot synonyms]('synonym': 'true') synonym 1 synonym 2
В этом примере сгенерированный набор данных Rasa будет содержать синонимы entity_synonyms
synonym 1
и synonym 2
сопоставленные с some slot synonyms
.
Чутье Очень простая основа современного НЛП. Разработано Zalando Research. Он предоставляет современные предварительно обученные внедрения (GPT, BERT, RoBERTa, XLNet, ELMo и т. д.) для многих языков, которые работают «из коробки». Этот адаптер поддерживает набор данных text classification
в формате FastText и набор данных named entity recognition
в двухстолбцах с аннотациями BIO, как описано в документации корпуса Flair. Эти два формата данных очень распространены и используются многими другими поставщиками или моделями.
Набор данных NER требует обработки токенизации слов, которая в настоящее время выполняется с помощью простого токенизатора.
ПРИМЕЧАНИЕ. Адаптер Flair доступен только для пакета CLI NodeJS NPM, но не для IDE.
LUIS является частью когнитивных служб Microsoft. Chatito поддерживает обучение модели LUIS NLU через конечную точку пакетного добавления помеченных высказываний и API пакетного тестирования.
Чтобы обучить модель LUIS, вам нужно будет отправлять высказывания в пакетном режиме в соответствующий API для обучения или тестирования.
Справочная проблема: #61
Snips NLU — еще одна замечательная платформа с открытым исходным кодом для NLU. Одним из особенностей адаптера Snips является то, что вы можете определять типы объектов для слотов. например:
%[date search]('training':'1') for @[date] @[date]('entity': 'snips/datetime') ~[today] ~[tomorrow]
В предыдущем примере все значения @[date]
будут помечены тегом сущности snips/datetime
.
Используйте формат по умолчанию, если вы планируете обучать собственную модель или пишете собственный адаптер. Это наиболее гибкий формат, поскольку вы можете аннотировать Slots
и Intents
с помощью пользовательских аргументов сущности, и все они будут присутствовать в сгенерированном выводе, поэтому, например, вы также можете включить логику генерации диалога/ответа в DSL. Например:
%[some intent]('context': 'some annotation') @[some slot] ~[please?] @[some slot]('required': 'true', 'type': 'some type') ~[some alias here]
Пользовательские сущности, такие как «контекст», «обязательный» и «тип», будут доступны на выходе, поэтому вы можете обрабатывать эти пользовательские аргументы по своему усмотрению.
Chatito поддерживает Node.js >= v8.11
.
Установите его с помощью пряжи или npm:
npm i chatito --save
Затем создайте файл определения (например: trainClimateBot.chatito
) со своим кодом.
Запустите генератор npm:
npx chatito trainClimateBot.chatito
Сгенерированный набор данных должен быть доступен рядом с вашим файлом определения.
Вот полные параметры генератора npm:
npx chatito <pathToFileOrDirectory> --format=<format> --formatOptions=<formatOptions> --outputPath=<outputPath> --trainingFileName=<trainingFileName> --testingFileName=<testingFileName> --defaultDistribution=<defaultDistribution> --autoAliases=<autoAliases>
<pathToFileOrDirectory>
путь к файлу .chatito
или каталогу, содержащему файлы Chatito. Если это каталог, он будет рекурсивно искать все файлы *.chatito
внутри и использовать их для создания набора данных. например: lightsChange.chatito
или ./chatitoFilesFolder
<format>
Необязательно. default
, rasa
, luis
, flair
или snips
.
<formatOptions>
Необязательно. Путь к файлу .json, который может использовать каждый адаптер.
<outputPath>
Необязательно. Каталог, в котором сохраняются сгенерированные наборы данных. По умолчанию используется текущий каталог.
<trainingFileName>
Необязательно. Имя созданного файла набора обучающих данных. Не забудьте добавить в конце расширение .json. В качестве имени файла по умолчанию используется <format>
_dataset_training.json.
<testingFileName>
Необязательно. Имя созданного файла набора тестовых данных. Не забудьте добавить в конце расширение .json. В качестве имени файла по умолчанию используется <format>
_dataset_testing.json.
<defaultDistribution>
Необязательно. Распределение частот по умолчанию, если оно не определено на уровне объекта. По умолчанию — regular
, можно установить even
.
<autoAliases>
Необязательно. Общее поведение при обнаружении неопределенного псевдонима. Допустимые варианты: allow
, warn
, restrict
. По умолчанию «разрешить».
Родриго Пиментел
sr.rodrigopv[at]gmail