Статьи

Расширение возможностей вашего помощника Api.ai с сущностями

Если вы хотите больше узнать об искусственном интеллекте, посмотрите наши скринкасты Microsoft Cognitive Services и API Text Analytics , чтобы узнать настроения AI в своем боте.

Расширение возможностей вашего помощника Api.ai с сущностями

Здесь, в SitePoint, мы рассмотрели основы настройки вашего личного помощника с помощью Api.ai и углубились в цели и контекст . В этой статье вы продвинетесь на шаг вперед, обучая своих помощников совершенно индивидуальным концепциям с использованием сущностей Api.ai.

Примечание: эта статья была обновлена ​​в 2017 году, чтобы отразить последние изменения в Api.ai.

Создание помощника AI с помощью Api.ai

Этот пост является одной из серии статей, направленных на то, чтобы помочь вам запустить простого личного помощника с Api.ai:

  1. Как создать свой собственный AI AI Assistant с помощью Api.ai
  2. Настройка вашего помощника Api.ai с намерением и контекстом
  3. Расширение возможностей вашего помощника Api.ai с сущностями (этот!)
  4. Как подключить вашего помощника Api.ai к IoT

Что такое сущность?

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

В Api.ai есть три типа сущностей:

  • Система: Типы сущностей, определенные Api.ai, такие как дата, цвет, адрес электронной почты, номер и т. Д., Которые Api.ai уже понимает. Вы можете найти полный список этих объектов в документации Api.ai о системных объектах .
  • Разработчик: объекты, которые мы создаем для наших индивидуальных потребностей. Это то, на чем вы будете сосредоточены в этой статье.
  • Пользователь: они создаются для отдельных пользователей, когда они используют помощника, и могут быть созданы API Api.ai для использования в одном сеансе. Я не буду рассказывать об этом в этой статье, но, если у читателей будет достаточно интереса, я могу исследовать это в будущем!

Светлая беседа Api.ai является примером ряда утверждений без каких-либо сущностей. Они слушают заявления, значение которых не меняется в зависимости от ключевых слов в предложении. Когда кто-то спрашивает «Как дела?», Api.ai не понимает, как это происходит. Однако, если мы изменили это на «Как Джимми Олсен?», Мы перенесем это предложение в область сущностей. «Джимми Олсен» будет лицом, представляющим человека. Обучить вашего агента этой сущности будет означать, если кто-то спросит: «Как поживает Брюс Уэйн?», Ваш агент будет знать, что они хотят спросить, каков человек, и что они хотят знать о Брюсе Уэйне конкретно.

В качестве другого примера, сущность «супергероя» — это не то, о чем Api.ai знает. Вы можете обучить своего помощника понимать ряд супергероев и их различные имена — «Супермен», «Бэтмен», «Вспышка», «Зеленый фонарь», «Чудо-женщина», «Санта» и так далее. Затем он может понять, что это конкретные концепции, с которыми вы хотите инициировать действия, например, связываться с этими героями, когда злодеи наносят удары через API, когда вы говорите что-то вроде «Нам нужна Флэш!».

Вы также можете обучить своих синонимов ассистента каждому из них, чтобы наряду с такими именами, как «Супермен», было бы также понятно, что Супермен также известен как «Кал-Эл», «Человек из стали», «Супес» и «Смолвиль». ». Если вы произнесете другое имя под влиянием момента (или кто-то другой попытается попросить помощи у вашего помощника, а они называют их как-нибудь еще), помощь от вашего героя все равно придет!

Хотя мне бы хотелось, чтобы этот пример сущности был для всей статьи, я подумал, что, возможно, лучше сосредоточиться на более реалистичном примере в самой демонстрации! В своей демонстрации вы научите своего помощника понимать одну важную метрику, которую я получил из своей Jawbone Up — сон. Конечная цель состоит в том, чтобы ваш помощник понимал такие высказывания, как «Сколько часов сна я получил прошлой ночью?» И «Сколько глубокого сна я получил прошлой ночью?»

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

Создание новой сущности

Чтобы создать новый объект, откройте консоль Api.ai и перейдите на страницу «Объекты», используя меню слева. Затем создайте объект, щелкнув либо «Создать объект», либо символ плюса в пункте меню «Объекты», либо ссылку «Создать первый», которая появляется для тех, кто еще не создал объект:

Создание новой сущности

На появившейся странице введите имя вашей сущности. Общепринятое соглашение — писать это строчными буквами со словами, разделенными тире. Назовите вашу новую сущность «спать». Оставьте флажок «Определить синонимы» отмеченным и введите один термин в разделе под ним — «сон». Вы также можете добавить синонимы, поэтому укажите еще несколько вариантов, введя «отдых», «дремать» и «закрывать глаза» рядом с «сон». Вы добавляете каждый синоним нажатием клавиши Enter, клавиши Tab или точки с запятой (;). Когда закончите, нажмите Сохранить:

Опции New Entity

Если вы вернетесь на страницу «Сущности», ваша новая сущность будет отображаться с именем, которое вы будете использовать для доступа к ней — @sleep

Ваш сохраненный объект сна

Использование вашей сущности в намерении

Теперь вам нужно создать новое намерение, которое обучит вашего личного помощника распознавать предложения, которые вызывают ваши запросы, связанные со сном. Начните с перехода на страницу «Содержание» и создания нового намерения, как вы уже несколько раз делали к этому моменту в серии.

На своей новой странице намерений включите свою сущность в заявления «Пользователь говорит». В случае вашей спящей сущности, введите в оператор, который включает в себя общее слово, чтобы представить пример вашей сущности. В этом случае введите «Сколько часов сна я получил прошлой ночью?». В данном случае ваша сущность — «сон».

Чтобы научить Api.ai, что «сон» — это ваша сущность, выделите это слово, и появится выпадающий список. Одним из вариантов должен быть ваш новый объект сна — @sleep Выберите это, и слово будет выделено, чтобы показать, что оно может измениться в высказываниях, обращенных к вашему агенту.

У вас также есть поле для имени действия. Это имя, которое будет передано вашему веб-приложению, чтобы показать, что, по мнению Api.ai, хочет сделать пользователь. Назовите ваше действие «sleepHours».

Ссылаясь на вашу сущность в наших намерениях

После включения вашей спящей сущности она должна появиться в качестве параметров для намерения следующим образом:

Параметр вашей сущности

Затем вы можете добавить множество разных способов сказать то же самое утверждение, как вы делали в предыдущей статье о создании намерений. Однако на этот раз включайте в них слово «сон» всякий раз, когда вы ссылаетесь на тип сна, и Api.ai автоматически выделит их для вас:

Вариации на вашего пользователя говорит заявления

Он также может найти другие готовые объекты, которые понимает Api.ai, например, период времени. На скриншоте выше Api.ai обнаружил, что «Прошлой ночью» был период времени, и подчеркнул это тоже. Это означает, что Api.ai все равно должен понимать фразу «Пожалуйста, часы сна прошлой ночи», если вместо этого он слышит «Часы сна прошлой недели, пожалуйста».

Чтобы завершить свое намерение, настройте некоторые ответы на ваше намерение о часах сна. Сам помощник в Api.ai не может просматривать статистику, поэтому для этого вам нужно использовать собственное веб-приложение. Однако помощнику приятно хотя бы поддерживать иллюзию, что он выполняет всю работу. Для этого в ваших ответах говорится что-то вроде «Я получу вашу статистику сна для вас сейчас, один момент!» И «Просмотр ваших часов сна сейчас». Это также дает нам немного времени для нашего веб-приложения, чтобы получить это данные.

Ваши потенциальные речевые ответы

Как только вы определились с ответами, нажмите Сохранить!

Если вы проверяете свое новое намерение, говоря «Сколько часов отдыха я получил прошлой ночью?», Ваш помощник теперь возвращает правильный речевой ответ и действие «sleepHours» готово для ответа вашего веб-приложения. Это именно то, что вы хотите!

Ваш помощник успешно вернул сон

Расширяя свою сущность

У вас есть работающая сущность, которая позволяет вашему помощнику понять, когда вы хотите посмотреть, сколько часов отдыха вы провели, но сущность все еще довольно проста. Сон это просто сон. Остальные. Запорный глаз. В действительности, есть определенные типы сна, о которых может спросить пользователь. Что, если пользователь спросит: «Сколько часов быстрого сна я получил прошлой ночью?», «Быстрый сон», «Глубокий сон» и «Легкий сон» — это разные типы «сна», которые должны быть поняты вашей сущностью сна. Вы добавите их в.

Вернитесь на страницу сущностей и откройте сущность @sleep Под «сном» и его синонимами «спать, отдыхать, дремать, закрывать глаза» добавить новые типы сна, такие как «быстрый сон» (также называемый просто «быстрый»), «глубокий сон» и «легкий сон». Включите их как новые строки, так как они имеют разные значения и не совсем совпадают с общим термином «сон». Чтобы добавить новую строку, нажмите «Добавить строку». После того, как вы добавили новые формы сна, нажмите «Сохранить», чтобы сохранить изменения:

Добавление разных видов сна

Если вы сейчас попробуете более конкретное предложение, например «Сколько часов REM я получил прошлой ночью?», Ваш помощник все еще распознает, что запрос относится к «sleepHours», но также содержит параметр sleep «REM sleep» для расскажите вашему веб-приложению, о каком конкретном сне спрашивает пользователь:

Тестирование вашего помощника, спрашивая их о быстрого сна

Если вы нажмете кнопку «Показать JSON» внизу, вы увидите, где сила этого действительно вступает в игру. Вся эта информация возвращается в ваше веб-приложение в простом для интерпретации файле JSON, который выглядит следующим образом:

 {
  "id": "7438",
  "timestamp": "2017-02-06T01:19:45.271Z",
  "result": {
    "source": "agent",
    "resolvedQuery": "How many hours of REM did I get last night?",
    "action": "sleepHours",
    "actionIncomplete": false,
    "parameters": {
      "sleep": "REM sleep"
    },
    "contexts": [],
    "metadata": {
      "intentId": "25d04df",
      "intentName": "How many hours of @sleep:sleep did I get last night?"
    },
    "fulfillment": {
      "speech": "Looking up your sleep hours now."
    }
  },
  "status": {
    "code": 200,
    "errorType": "success"
  }
}

Наиболее важные биты этого — имя запрашиваемого действия и параметры этого действия:

 "action": "sleepHours",
"parameters": {
  "sleep": "REM sleep"
},

Это то, что вы будете использовать в следующей статье, чтобы создать ответ своего веб-приложения на эти запросы.

Вывод

Невероятно, но после трех статей, посвященных Api.ai, вы все еще только что-то поцарапали, что возможно с платформой! Сущности могут содержать другие сущности (как системные сущности, так и ваши собственные сущности разработчика), вы можете устанавливать намерения, которые требуют определенной информации, и запрашивать у пользователя, если они ее не предоставляют, вы можете использовать ранее упомянутые сущности в разговоре, используя их $alias

В последней статье этой серии вы узнаете, как добавить функциональность в веб-приложение, созданное в предыдущей статье « Как создать свой собственный AI-помощник, используя Api.ai, который извлекает данные из Jawbone, чтобы дать вам реальные ответы на эти вопросы». запросы!

Я получил отзывы от нескольких читателей, которые любили создавать своих личных помощников. Если вы следили, как поживает ваш помощник? Что вы научили их делать? Дайте мне знать в комментариях ниже или свяжитесь со мной в Твиттере по адресу @thatpatrickguy . Мне всегда нравится слышать идеи о том, что новые технологии приходят в голову разработчикам!

Дайте вашему ИИ человеческое прикосновение с помощью инструмента чувств. Посмотрите наши скринкасты в Microsoft Cognitive Services и API Text Analytics .