Лучший способ построить чат-бот - PullRequest
4 голосов
/ 21 октября 2011

С какого фреймворка я могу создать простого чат-бота? фокус бота очень ограничен (для моего сайта управления проектами http://ayeboss.com).

Его можно сравнить с SIRI на iPhone. Я хочу создать простой «отвечающий» чат, который будет отвечать на такие вопросы, как «покажи мне все выполненные задачи» или «покажи мне последнее выполненное задание» или «показать | список | дай мне ожидающие задания» и т. Д. После того, как пользователь спросит вопрос хочу представить данные пользователю

На данный момент я создаю словарь регулярных выражений возможных вопросов, и если совпадений нет, я выполняю поиск в lucene, чтобы найти ближайшее совпадение. Я правильно делаю?

Ответы [ 5 ]

5 голосов
/ 30 сентября 2016

Как правило, чат-боты в узком поле, подобные вашему, обычно полагаются на 2 важных понятия:

  • Обнаружение намерений : определение того, что пользователь запрашивает
  • Извлечение сущностей : Идентификация сущностей в запросе пользователей.Например, в боте бронирования полетов примерами сущностей являются источник, пункт назначения и даты поездки.В метеоботе сущности могут быть желаемой датой погоды или местоположением, где требуется погода.

Для вашего конкретного типа чат-бота, который имеет определенную цель получения списка выполненных задачи извлечение последнего выполненного задания.Чтобы развить это, вам нужно определить интересующие вас цели.Из ваших примеров мы можем легко определить 2 намерения:

  • COMPLETED_TASKS_REQUEST
  • LAST_COMPLETED_TASK

На основании этих 2 намерений действительно нетсущность, которая будет обнаружена.Вы просто запрашиваете API службы для получения запрошенной информации в каждом сценарии.

Следующим этапом будет обучение классификатора для определения намерений.Это может быть сделано путем получения нескольких типовых предложений для каждого типа запроса и обучения по ним.

Затем поток сокращается до следующего:

  1. Бот получает сообщение
  2. Бот определяет намерение
  3. Бот извлекает соответствующие объекты (если требуется)
  4. Если намерение распознано, бот запрашивает источник данных, чтобы получить ответ, иначе бот жалуется, что не понимает запрос.В качестве альтернативы, если боту требуется объект для выполнения запроса, он просит пользователя предоставить информацию и завершает свою задачу.Обычно это называется слот-подходом.Вы можете прочитать больше о том, как работает Dialog Manager .

Обратите внимание, что если вы не увлекаетесь машинным обучением или НЛП, вы можете легко обучить детектора намерений на таких платформах, как wit.ai или api.ai и часть этой задачи по классификации сущностей будет уменьшена до простых http запросов API.Хотя при создании действительно сложных или изощренных ботов почти всегда лучше создавать свои собственные модели, поскольку вы можете иметь полный контроль и лучше справляться с крайними случаями.Такие платформы, как wit.ai или api.ai, как правило, должны хорошо работать в нескольких областях, в то время как вы можете сосредоточиться на том, чтобы сделать своего эксперта в управлении задачами.

Надеюсь, это поможет.Ваш бот более интересен, мы можем добавить еще одно намерение, например, получение статуса конкретной задачи с помощью идентификатора.Например, пользователь может спросить, в каком состоянии находится задача 54. Это намерение можно назвать: TASK_STATUS_REQUEST.В этом примере у намерения есть сущность, которая является идентификатором запрошенной задачи, поэтому вам необходимо извлечь это:)

3 голосов
/ 21 октября 2011

Это задача НЛП, и для построения такой системы требуется много НИОКР. Вы можете начать с построения набора вопросов, которые могут быть заданы. Анализ вопросов и придумывание шаблонов слов для каждого типа вопроса. Следующим шагом будет преобразование английского предложения в некоторую форму формальной структуры (возможно, SQL или лямбда-исчисление). Во внутренней базе данных должны храниться данные, которые могут быть запрошены формальным языком.

Основная проблема заключается в преобразовании английского предложения в формальный язык. Вы можете начать с регулярного выражения и прогресса, чтобы сделать его более сложным, проверив Часть речи, Синтаксическая структура входных предложений. Проверьте пакет NLTK для выполнения задач NLP.

1 голос
/ 12 мая 2019

Вы можете использовать платформы Microsoft NLP, которые довольно просты и восточны, чтобы использовать их также для начинающих.Также был ранее известен как LUIS, это один из.Когнитивные услуги, которые предоставляет Microsoft.В основном это комбинация вызовов API, и вы можете написать код для того же, используя c #.

1 голос
/ 22 ноября 2016

Помимо библиотеки чат-ботов, вы можете интегрировать библиотеку мгновенных сообщений, такую ​​как Hyphenate, чтобы включить чат-бота для мобильного и веб-общения.

Вот несколько простых шагов:

  1. Консоль Hyphenate: создайте сущность чат-бота, зарегистрировав учетную запись на консоли Hyphenate (console.hyphenate.io), чтобы придать вашему чат-боту идентичность и голос, создав учетную запись Hyphenate IM для бота.
  2. Platform SDK: интеграцияваше приложение (iOS, Android или Интернет) с сервисами Hyphenate IM и библиотекой UI с открытым исходным кодом.
  3. Webhooks (обратный вызов события): настройте Hyphenate webhooks для получения сообщений от пользователя, которые отправляются на сервер разработчика,затем обработайте его с помощью своей AI-библиотеки chatbot.
  4. Backend REST API: отправляйте сообщения chatbot пользователю через API REST, предоставляемые Hyphenate, из вашего бэкэнда разработчика.
  5. Ура!Webhooks + backend REST API = ретрансляция сообщений между чатботом и пользователем.

http://docs.hyphenate.io/docs/chat-bot-integration

0 голосов
/ 12 мая 2019

Не уверен, с каким языком вы знакомы, но в Java вы можете сделать это с помощью библиотеки Apache OpenNLP.Это очень хорошая и простая в использовании библиотека для обработки естественного языка.Чтобы дать очень простой подход, вы можете разбивать предложения и разбивать их на слова.Затем вы можете лемматизировать слова, чтобы привести их к основным формам слова.Затем вы можете классифицировать или классифицировать их, используя классификатор с соответствующими данными обучения.лучше тренировка, умнее чат-бота.Также вы можете выбрать категории, чтобы чат-чат общался более привлекательно. Вот очень хорошая статья с подробным примером & демо .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...