Читать книгу «Машинное обучение и Искусственный Интеллект» онлайн полностью📖 — Тимура Машнина — MyBook.
image

Создание чат-ботов без программирования

Для создания чат-бота, здесь мы будем использовать службу Watson Assistant, размещенную на платформе IBM Cloud.

И для начала, вам нужно зарегистрироваться в IBM Cloud.

После успешного входа, вы увидите панель управления.

Вверху, в поиске, наберите Watson Assistant и перейдите на страницу Watson Assistant.

Здесь вы можете изменить регион / местоположение для оптимальной производительности.

Далее выберете план Lite, и нажмите кнопку «Создать» внизу, чтобы создать свой экземпляр сервиса.

Вы будете перенаправлены на страницу запуска службы, которую вы только что создали.

Нажмите кнопку «Запустить инструмент» для доступа к веб-приложению, которое позволит вам создавать чат-ботов.

Вы попадете на страницу веб-приложения.

Нажмите на меню «Навыки» Skills в верхней части страницы.

Здесь мы будем учить нашего чат-бота общаться.

Для быстрого доступа, добавьте эту страницу в закладки.

Здесь мы будем создавать чат-бота для вымышленной сети цветочных магазинов.

Чатбота, который предоставляет информацию и помощь потенциальным клиентам.

Затем мы развернем его на сайте WordPress.

Теперь, давайте выясним, что такое чат-боты и как они могут помочь нам.

Позвонив в службу поддержки, мы можем услышать сообщение – «Ваш звонок может быть записан».

И как мы увидим, с помощью чат-ботов мы можем использовать разговоры с клиентами, чтобы обучать и делать наших чат-ботов умнее и полезнее.

В этом примере с техподдержкой, как правило мы имеем дело с простыми вопросами, которые требуют простых ответов.

Но сама техподдержка не очень хорошо масштабируется.

Если у вас дела идут хорошо, у вас будет все больше клиентов, которым нужна ваша помощь.

Так что вам придется нанимать все больше и больше людей, а это требует денег.

Вам также нужно будет потратить время и энергию, чтобы правильно их обучить, управлять ими и так далее.

Чатботы не предназначены для полной замены людей.

Но они могут помочь ответить на большое количество простых вопросов клиентов.

И они могут масштабироваться до бесконечности, в отличие от людей.

И доступны 24/7 дней в году, в отличие от работников.

Например, отель может резко сократить количество звонков, которые получает его стойка регистрации, просто имея чат-бота, который отвечает на самые распространенные вопросы, такие как часы работы ресторана или время оформления заказа, установка будильника или выяснение того, как подключиться к Wi-Fi.

Это оставляет персоналу отеля больше времени и энергии для решения более сложных задач.

Теперь, что такое чатбот?

Это программный агент, способный общаться с пользователями с помощью интерфейса чата.

Как правило, чат-бот приветствует пользователя и предлагает ему выполнить какое-либо действие, например, задать ему вопрос.

Когда пользователь отвечает, чат-бот анализирует ввод и определяет намерение пользователя.

И наконец, он отвечает, предоставляя информацию или запросив дополнительную информацию, прежде чем окончательно ответить на вопрос.

Хорошие чат-боты могут поддерживать это общение естественным образом.

Они заставляют пользователя чувствовать, что его понимают и помогают.

Они создают связь с пользователем, не притворяясь человеком.

И наиболее распространенные чат-боты – это текстовые чат-боты.

Взаимодействие с ними происходит во всплывающем окне чата на веб-сайте или через приложение для обмена сообщениями, такое как Whatsapp.

Тем не менее, вы можете общаться с некоторыми чат-ботами с помощью голоса.

Это виртуальные помощники, такие как Apple Siri.

Чатбот использует три основных компонента, чтобы определить, как интерпретировать вводимые пользователем данные и как на них реагировать.

Это intents, намерения, entities, сущности, и, наконец, диалог.

И когда вы создаете чат-бота в Watson Assistant, первое, что вы делаете, это создаете Навык диалога dialog Skill, который будет содержать эти три компонента.

Первое, что вам нужно сделать, это создать навык диалога, который будет содержать эти три компонента.

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

Другими словами, они фиксируют намерение или цель пользователя.

Например, мы могли бы определить намерение #greetings и обучить Уотсона, как выглядит приветствие.

Мы могли бы предоставить Привет, Доброе утро, и так далее.

Хорошей практикой является предоставление как минимум 5 примеров для каждого намерения, чтобы полностью обучить Уотсона этому намерению.

После того, как Уотсон изучит намерения, которые мы определили, он будет изучать вводимые пользователем данные и попытается определить, совпадает ли какое-либо из намерений с запросом пользователя.

Например, если бы пользователь сказал: «Алоха», Уотсон определил бы, что это приветствие, похожее на то, которому мы его обучали.

Именно здесь действительно задействуются возможности искусственного интеллекта Уотсона.

Мы обучаем его нескольким примерам, и Уотсон сможет распознать намерение пользователя, даже если пользователь сформулирует его совершенно иначе, чем данные нами примеры.

Теперь, давайте рассмотрим предметно-ориентированное намерение, а не простое намерение в чате.

Пользователи могут захотеть узнать о часах работы, и мы могли бы определить намерение #hours_info.

И обратите внимание, что имя намерения не может содержать пробелов.

Поэтому мы используем подчеркивание вместо пробела.

И здесь показаны несколько примеров, которые мы могли бы предоставить, чтобы обучить Уотсона работе с информацией о часах.

«До какого времени вы открыты?», «В какие часы вы работаете?», «Вы открыты по субботам?» и так далее.

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

Важно обучить Уотсона реальным примерам, так что вы даже можете вставлять опечатки, которые пользователь может случайно сделать, набирая вопрос.

Теперь, когда пользователь спросит: «Когда открыт ваш магазин в Торонто?» Уотсон распознает намерение #hours_info, хотя, опять же, этот конкретный вопрос не был частью наших примеров.

Уотсон достаточно умен, чтобы понять, чего хочет пользователь.

И примеры намерений можно вводить вручную в Watson Assistant, но их также можно импортировать из файлов CSV.

И Watson Assistant также поставляется с Каталогом контента, который предоставляет коллекции намерений, относящихся к различным отраслям, таким как банковское дело, страхование и электронная коммерция.

Это не готовый чат-бот, но вы можете использовать его в качестве отправной точки для дальнейшего развития.

Теперь создадим навык диалога, который будет содержать намерения (наряду с сущностями и самим диалогом).

Хотя возможно создание сложных чат-ботов, использующих несколько навыков, обычно на одного чат-бота обычно приходится только один навык.

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

Поэтому нажмем кнопку «Создать навык».

Здесь вы сможете добавить навык диалога.

Вам будет предложено ввести имя и необязательное описание.

Введите навык Цветочный магазин.

Вы также можете увидеть вкладки «Использовать пример навыков» и даже импортировать навыки из файлов JSON во вкладке «Импорт навыков».

Далее нажмите кнопку «Создать», чтобы создать навык для чат-бота.

После создания навыка вы окажетесь в разделе намерения этого навыка.

Здесь вы можете добавить намерения несколькими способами.

И мы используем наиболее распространенный способ, а именно добавление намерений вручную.

В разделе «Интенты» диалогового навыка нажмем кнопку «Добавить намерение».

Здесь вы сможете определить имя и описание намерения.

Определим намерение #greetings.

Вы можете оставить описание пустым, а затем нажать кнопку «Создать намерение».

Здесь вам будет предложено создать несколько пользовательских примеров, чтобы обучить Уотсона приветствию.

Введите hello, затем нажмите Добавить пример.

И повторите эту процедуру для других примеров приветствия, таких как hi, hey, good morning, good afternoon, и так далее, добавляя по одному пример за раз.

Здесь вы можете редактировать примеры и удалять их.

Нажмите в верхней части на стрелку, чтобы вернуться к списку намерений.

Добавьте намерения #thank_you и #goodbyes по крайней мере с 5 примерами каждое.

Для #thank_you, вы можете использовать такие примеры, как thank you, thanks, thx, cheers, и appreciate it.

Для #goodbyes, вы можете ввести good bye, bye, see you, c ya, и talk to you soon.

И чтобы проверить наши намерения, нажмите кнопку Try it в правом верхнем углу.

Появится панель чата, где вы сможете попробовать ввод пользователя и посмотреть, как Watson анализирует его и как реагирует чат-бот.

Мы еще не предоставили ответы (мы сделаем это в модуле «Диалог»), но мы можем использовать панель для проверки классификации наших намерений.

Попробуйте вводить фразы в панели.

Например, попробуйте Hola и Aloha.

Хотя они специфичны для определенных языков, они достаточно распространены, чтобы быть опознанными Уотсоном в качестве приветствия.

Если Уотсон неправильно классифицировал пример, нажмите на кнопку рядом с введенной фразой, чтобы назначить ей намерение.

Это добавит ваш ввод в качестве примера для намерения, например, #greetings, продолжая обучение Уотсона.

Если вы снова проверите то же самое высказывание, Уотсон на этот раз правильно распознает намерение.

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

Но если его уровень достоверности в наилучшем подходящем намерении будет очень низок (ниже 20%), Уотсон будет воспринимать входные данные как несущественные, так как они, вероятно, не имеют отношения ни к одному из наших намерений.

При создании диалога мы узнаем, как справляться с ситуациями, когда пользователь вводит вопрос, который не имеет значения или выходит за рамки нашего чат-бота.

И IBM предоставляет некоторые готовые намерения, которые могут иметь отношение к вашему чат-боту.

Чтобы увидеть их, нажмите Content Catalog.

Выберите одну категорию, например, Банковское дело.

А затем нажмите кнопку Добавить к навыку.

Вернитесь в раздел Intents, и вы увидите новые намерения, относящихся к запросам, которые могут возникнуть у клиентов.

Это не совсем готовый чат-бот, но это хорошее начало, где вы можете редактировать и адаптировать чат-бота.

И вы можете пробовать его в панели Try it.

Здесь вы можете пометить намерения и нажать кнопку Удалить, чтобы удалить ненужные намерения.

Здесь также есть возможность экспортировать намерения, что полезно при повторном использовании намерений в разных чат-ботах.

Нажмите кнопку «Экспорт», чтобы загрузить CSV-файл, содержащий наши намерения и примеры.

Откройте этот файл, чтобы посмотреть, как он выглядит.

И так же, как мы экспортировали наши намерения в файл CSV, мы можем сделать наоборот и импортировать намерения из файла CSV.

Загрузите файл CSV, который прилагается к лекции.

Нажмите значок «Импортировать намерения» рядом с кнопкой «Создать намерение».

Выберите файл в появившемся окне и нажмите на кнопку «Импорт».

В результате вы импортируете два новых намерения и их примеры для обучения Уотсона.

Теперь, давайте рассмотрим сущности, второй ключевой компонент диалогового навыка.

Как мы уже выяснили, намерения описывают цель пользователя.

А сущности позволяют нам фиксировать определенные значения в высказывании пользователя.

Например, без определения сущностей, вопросы «когда открыт ваш магазин в Торонто?» и «Когда открыт ваш магазин в Ванкувере?» – неразличимы для чат-бота.

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

Поэтому мы можем создать сущность местоположения.

И обратите внимание, что здесь мы используем символ @ вместо символа # для сущностей.

Затем мы можем определить несколько значений для нашей сущности, таких как Торонто, Монреаль, Ванкувер и так далее.

Одно значение для каждого местоположения магазина.

И мы также можем определить синонимы для конкретного значения сущности.

Например, представьте, что наш магазин в Торонто расположен на авеню Уорден.

И клиенты могут спросить о часах работы нашего магазина в Торонто или на авеню Уорден.

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

Определив сущность местоположения, теперь с помощью этих двух частей информации – намерения и сущности, мы можем предоставить соответствующий и конкретный ответ пользователю.

И обратите внимание, если в значении сущности есть пробел, мы заключаем значение в скобки.

Как и намерения, мы также можем импортировать сущности из CSV файла.

Помимо ввода сущностей вручную и импорта из CSV файла, существует также третий способ добавления сущностей в чат-бот.

Есть предопределенные системные сущности, которые вы можете добавлять для чатбота.

@sys-currency позволяет нам определять упоминания валют в пользовательском вводе.

@sys-date определяет даты.

Например, пользователь сказать «следующий понедельник», а @sys-date позволит нам зафиксировать эту часть информации в качестве фактической конкретной даты.

@sys-person позволяет нам обнаруживать имена людей.

Теперь, давайте создадим сущности @location для нашего чатбота.

Откроем вкладку Entities и нажмем кнопку Create entity.

Введем имя сущности @location.

И нажмем Create entity.

Далее мы будем вводить значения сущностей и возможные синонимы.

А затем нажимать кнопку Add value.

И вы можете добавлять синонимы для городов, если у города есть другие названия или люди ссылаются на местоположение магазина по его улице или району в городе.

Близлежащие небольшие города также могут выступать в качестве синонимов.

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

Шаблон – это расширенная функция, которая позволяет определять значение сущности не на основе конкретной строки, а на основе шаблона, такого как отформатированный номер телефона, адрес электронной почты или адрес веб-сайта.

И в любой момент вы можете нажать на значение сущности, чтобы изменить его значение или синоним.

Также вы можете нажать кнопку Показать рекомендации, чтобы выбрать синонимы из списка, предоставленного Watson.

И в конце используйте панель Try it, чтобы проверить эти значения сущностей.

Попробуйте ввести вопросы.

What are your hours of operation in Montreal.

Where is your Montreal strore located

Теперь мы можем распознать цель и города, соответствующие нашим магазинам.

Но что произойдет, если пользователь введет вопрос для Сиэтла или для Мумбаи, где у нас нет магазина?

Вы заметите, что, так как у нас нет значения сущности для Сиэтла или Мумбаи, ни один из них не будет выбран в качестве значения сущности.

И мы можем структурировать нашего чат-бота для предоставления общего, информативного ответа, если не указано распознанное местоположение.

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

И это можно легко достичь с помощью системных объектов.

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

И среди них, существует объект @sys-location, который будет определять для нас местоположение и будет обрабатывать любой город (или штат, страну и т. д.).

И теоретически нам даже не нужна наша сущность @location, мы могли бы просто использовать @sys-location.

Хотя здесь есть два ограничения:

Вы не можете определять синонимы для городов, обнаруженных с помощью @sys-location.

И нечеткое сопоставление в настоящее время недоступно для сущности @sys-location.

Чтобы добавить сущность @sys-location, нажмите «Системные сущности» в разделе «Сущности» вашего навыка.

И включите @sys-location.

Теперь, попробуйте ввести вопрос hours for Toronto.

Вы заметите, что обнаружены сущности @sys-location и @location.

Импорт и экспорт сущностей с помощью файлов CSV работает очень похоже на намерения.

1
...