Рекомендации по созданию моделей взаимодействия с Amazon Lex

Рекомендации по созданию моделей взаимодействия с Amazon Lex

Amazon Lex — это сервис AWS для создания диалоговых интерфейсов в любом приложении с использованием голоса и текста, что позволяет компаниям добавлять сложные чат-боты на естественном языке по различным каналам. Amazon Lex использует машинное обучение (ML) для понимания естественного языка (обычного разговорного текста и речи). В этом посте мы рассмотрим ряд рекомендаций по использованию машинного обучения для создания бота, который будет радовать ваших клиентов, точно понимая их. Это позволяет вашему боту вести более естественные разговоры, которые не требуют от пользователя выполнения набора строгих инструкций. Проектирование и создание интеллектуального диалогового интерфейса сильно отличается от создания традиционного приложения или веб-сайта, и этот пост поможет вам развить некоторые из необходимых новых навыков.

Давайте посмотрим на некоторые термины, которые мы часто используем в этом посте:

  • произнесение – Фраза, которую пользователь говорит вашему живому боту.
  • Образец высказывания – Несколько примеров того, что могут сказать пользователи. Они привязаны к намерениям и используются для обучения бота.
  • Намерение – Это представляет то, что имел в виду пользователь, и должно быть четко связано с ответом или действием бота. Например, намерение, которое отвечает на приветствие пользователя, или намерение, которое может ответить и выполнить действие, если пользователь хочет заказать кофе. У бота есть одно или несколько намерений, с которыми можно сопоставить высказывания.
  • Слоты – Параметр, который может фиксировать определенные типы информации из высказывания (например, время встречи или имя клиента). Слоты привязаны к намерениям.
  • Значение слота – Либо примеры того, что должен захватывать слот, либо конкретный список значений для слота (например, большой, среднийи небольшой как значения для слота для размеров кофе).

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

Диаграмма, показывающая, как взаимодействие с ботом Amazon Lex проходит через автоматическое распознавание речи, понимание естественного языка, выполнение (включая разговорный пользовательский опыт) и обратно к преобразованию текста в речь.

Создание хорошо спроектированного бота требует нескольких различных соображений. К ним относятся сбор и обнаружение требований, разговорный дизайн, тестирование с помощью автоматизации и с пользователями, а также мониторинг и оптимизация вашего бота. В аспекте диалогового дизайна есть два основных элемента: модель взаимодействия и разговорный или голосовой пользовательский опыт (CUX/VUX). CUX и VUX охватывают личность бота, типы ответов, ход разговора, варианты модальности и то, как бот обрабатывает неожиданные входные данные или сбои. Модель взаимодействия — это часть, которая может взять сказанное пользователем (высказывание) и сопоставить его с тем, что он имел в виду (намерение). В этом посте мы рассмотрим только то, как спроектировать и оптимизировать вашу модель взаимодействия.

Поскольку Amazon Lex использует машинное обучение, это ставит создателя бота в роль машинного учителя. Когда мы создаем бота, нам нужно дать ему все необходимые знания о типах разговоров, которые он будет поддерживать. Мы делаем это как путем настройки бота (намерения и слоты), так и с помощью обучающих данных, которые мы ему предоставляем (примеры высказываний и значения слотов). Затем базовая служба обогащает его знаниями о языке в целом, позволяя ему понимать фразы, выходящие за рамки точных данных, которые мы ему предоставили.

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

Создание намерений

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

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

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

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

Каждое намерение должно представлять одну концепцию или идею, а не только тему. Это нормально иметь несколько намерений, которые сопоставляются с одним и тем же действием или реакцией, если их разделение дает каждому более четкую, связную концепцию. Давайте посмотрим, что можно и чего нельзя делать:

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

Например, следующее намерение сочетает в себе фразы о поврежденном продукте и более общие фразы жалобы:

DamageComplaint
I've received a damaged product
i received a damaged product
I'm really frustrated
Your company is terrible at deliveries
My product is broken
I got a damaged package
I'm going to return this order
I'll never buy from you again

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

UpdateNeeded
I need to update my address
Can I update the address you have for me
How do I update my telephone number
I can't get the update for the mobile app to work
Help me update my iphone app
How do I get the latest version of the mobile app

  • Do разделить намерения, когда они имеют очень разные значения. Например, мы можем разделить UpdateNeeded намерение из предыдущего примера на два намерения:

UpdatePersonalDetails
I need to update my address
Can I update the address you have for me
How do I update my telephone number

UpdateMobileApp
I can't get the update for the mobile app to work
Help me update my iphone app
How do I get the latest version of the mobile app

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

RoadsideAssistanceRequested
I need to tow my car

Can I get a tow truck
Can you send someone out to get my car

RoadsideAssistanceNeeded
I've had an accident

I hit an animal
My car broke down

2. Уменьшите дублирование намерений

Давайте снова подумаем об этой стопке каталожных карточек. Если бы были карты с одинаковыми (или очень похожими) фразами, было бы трудно понять, в какую стопку добавить новую карту с этой фразой. То же самое и в этом случае. Нам нужны действительно четкие наборы образцов высказываний в каждом намерении. Ниже приведены несколько стратегий:

  • Не создавайте намерения с очень похожими формулировками, которые имеют схожие значения. Например, поскольку Amazon Lex будет обобщать за пределами образцов высказываний, фразы, которые явно не относятся к одному конкретному намерению, могут получить несоответствие, например, когда клиент говорит «Я хотел бы записаться на прием», когда есть два намерения встречи, например следующий:

BookDoctorsAppointment
I’d like to book a doctors appointment

BookBloodLabAppointment
I’d like to book a lab appointment

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

BookAppointment
I’d like to book a {appointmentType} appointment

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

BookFlight
I'd like to book a flight
book me a round trip flight
i need to book flight one way

BookOneWayFlight
book me a one-way flight
I’d like to book a one way flight
i need to book flight one way please

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

BookFlight
I'd like to book a flight
book me a {itineraryType} flight
i need to book flight {itineraryType}
I’d like to book a {itineraryType} flight

3. Иметь нужное количество данных

В ML данные обучения являются ключевыми. Часто для получения хороших результатов требуются сотни или тысячи образцов. Вы будете рады услышать, что Amazon Lex не требует большого объема данных, и на самом деле вы не хотите иметь слишком много примеров высказываний в каждом намерении, потому что они могут начать расходиться или добавлять путаницу. Однако важно, чтобы мы предоставили достаточно примеров высказываний, чтобы создать четкий шаблон для обучения бота.

Рассмотрим следующий пример:

  • Имейте не менее 15 высказываний на одно намерение.
  • Добавляйте дополнительные высказывания постепенно (партиями по 10–15), чтобы вы могли проверять производительность поэтапно. Большее количество высказываний не обязательно лучше.
  • Просмотрите намерения с большим количеством высказываний (более 100), чтобы оценить, можете ли вы либо удалить очень похожие высказывания, либо следует разделить намерение на несколько намерений.
  • Сохраняйте одинаковое количество высказываний в зависимости от намерений. Это позволяет сбалансировать распознавание каждого намерения и избежать случайного смещения вашего бота к определенным намерениям.
  • Регулярно пересматривайте свои намерения на основе информации, полученной от производственного бота, и продолжайте добавлять и корректировать высказывания. Проектирование и разработка бота — это повторяющийся процесс, который никогда не останавливается.

4. Разнообразьте свои данные

Amazon Lex — это диалоговый ИИ, его основная цель — общаться с людьми. Люди, как правило, имеют большое разнообразие в том, как они формулируют вещи. При разработке бота мы хотим убедиться, что мы фиксируем этот диапазон в нашей конфигурации намерений. Важно регулярно пересматривать и обновлять конфигурацию и образцы данных, особенно если вы со временем расширяете или меняете базу пользователей. Примите во внимание следующие рекомендации:

  • Do иметь разнообразный диапазон высказываний в каждом намерении. Ниже приведены примеры типов разнообразия, которые следует учитывать:
    • Длина высказывания – Ниже приведен пример различной длины:

BookFlight
book flight
I need to book a flight
I want to book a flight for my upcoming trip

    • Vocabulary – Нам нужно согласовать это с тем, как говорят наши клиенты. Вы можете зафиксировать это с помощью пользовательского тестирования или с помощью журналов разговоров от вашего бота. Например:

OrderFlowers
I want to buy flowers
Can I order flowers
I need to get flowers

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

BookFlight
I need to book a flight
can you help with a flight booking
Flight booking is what I am looking for
please book me a flight
I'm gonna need a flight

    • Пунктуация – Мы должны включить ряд общеупотребительных слов. Мы также должны включить неграмматическое использование, если это то, что клиент будет использовать (особенно при наборе текста). См. следующий пример:

OrderFlowers
I want to order flowers.
i wanted to get flowers!
Get me some flowers... please!!

    • Использование слота – Предоставьте образцы высказываний, которые показывают как использование слотов, так и их неиспользование. Используйте разные сочетания слотов в тех, которые их включают. Убедитесь, что в слотах есть примеры с разными местами, где они могут появиться в высказывании. Например:

CancelAppointment
Cancel appointment
Cancel my appointment with Dr. {DoctorLastName}
Cancel appointment on {AppointmentDate} with Dr. {DoctorLastName}
Cancel my appointment on {AppointmentDate}
Can you tell Dr. {DoctorLastName} to cancel my appointment
Please cancel my doctors appointment

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

DamagedProductComplaint
I've received a damaged product
I received a damaged product
Received damaged product

  • Не добавить разнообразия к одним намерениям, но не к другим. Мы должны соответствовать формам разнообразия, которые мы добавляем. Запомните каталожные карточки с самого начала — когда высказывание неясно, бот может начать использовать другие подсказки, например длину предложения или пунктуацию, чтобы попытаться найти совпадение. Иногда вы можете использовать это в своих интересах (например, если вы действительно хотите направить все фразы из одного слова на определенное намерение), но важно, чтобы вы не делали это случайно.

Создание слотов

Мы коснулись некоторых передовых методов, связанных со слотами, в предыдущем разделе, но давайте рассмотрим некоторые более конкретные рекомендации для слотов.

5. Используйте короткие существительные или прилагательные для слотов

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

  • Используйте существительные или короткие прилагательные для значений ваших слотов. Не используйте слоты для таких вещей, как фразы-носители («как мне, либочто я мог»), потому что это снизит способность Amazon Lex обобщать ваши высказывания. Постарайтесь сохранить слоты для значений, которые вам нужно зафиксировать, чтобы выполнить свое намерение.
  • Как правило, оставьте слоты для одного или двух слов.

6. Предпочитайте слоты явным значениям

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

  • Не явно включать значения, которые могут быть слотами в образцах высказываний. Например:

OrderFlowers
I want to buy roses
I want to buy lilies
I would love to order some orchids
I would love to order some roses

  • Do используйте слоты, чтобы уменьшить количество повторений. Например:

OrderFlowers
I want to buy {flowers}
I would love to order some {flowers}

flowers
roses
lilies
orchids

  • Не смешивать слоты и реальные значения в образцах высказываний. Например:

OrderFlowers
I want to buy {flowers}
I want to buy lilies
I would love to order some {flowers}

flowers
roses
lilies
orchids

  • Не иметь намерения только со слотами в образцах высказываний, если типы слотов AlphaNumeric, Number, Date, GRXML, являются очень широкими пользовательскими слотами или содержат сокращения. Вместо этого расширьте образцы высказываний, добавив в них разговорные фразы, включающие слот.

7. Сохраняйте согласованность значений ваших слотов

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

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

pets
cat
dog
goldfish

animals
horse
cat
dog

8. Подумайте, как будут транскрибироваться слова

Amazon Lex использует автоматическое распознавание речи (ASR) для расшифровки речи. Это означает, что все входные данные для вашей модели взаимодействия с Amazon Lex обрабатываются как текст, даже при использовании голосового бота. Мы должны помнить, что транскрипция может отличаться от того, как пользователи могут набирать одно и то же. Рассмотрим следующее:

  • Введите аббревиатуры или другие слова, буквы которых следует произносить по отдельности, в виде отдельных букв, разделенных точкой и пробелом. Это будет более точно соответствовать тому, как это будет расшифровано. Например:

A. T. M.
A. W. S.
P. A.

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

9. Используйте правильные опции, доступные для ваших слотов

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

  • Используйте параметр ограничения, чтобы ограничить слоты закрытым набором значений. Вы можете определить синонимы для каждого значения. Это могут быть, например, пункты меню вашего ресторана.
  • Используйте параметр развертывания, если вы хотите иметь возможность идентифицировать больше, чем просто предоставленные вами примеры значений (например, имя).
  • Включите обфускацию для слотов, которые собирают конфиденциальные данные, чтобы предотвратить регистрацию данных.
  • Используйте подсказки во время выполнения чтобы улучшить распознавание слотов, когда вы можете сузить потенциальные варианты во время выполнения. Выбор одного слота может сузить возможности для другого; например, у определенного типа мебели могут быть не все варианты цвета.
  • Используйте стили правописания для захвата необычных слов или слов с вариациями написания, таких как имена.

10. Используйте пользовательский словарь для специальных областей

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

  • Do используйте пользовательский словарь, чтобы добавлять слова, которые Amazon Lex не сразу распознает в голосовых беседах. Это улучшает транскрипцию речи в текст и общее качество обслуживания клиентов.
  • Не используйте короткие или общие слова, такие как «на», «это», «к», «да» или «нет» в пользовательском словаре.
  • Do решить, какой вес придать слову, исходя из того, как часто это слово не распознается в транскрипции и насколько редко оно встречается во входных данных. Труднопроизносимые слова требуют большего веса. Используйте репрезентативный тестовый набор, чтобы определить, подходит ли вес. Вы можете собрать набор аудиотестов, включив ведение аудиозаписи в журналах разговоров.
  • Do используйте пользовательские типы слотов для списков значений каталога или объектов, таких как названия продуктов или взаимные фонды.

11. Слоты GRXML нуждаются в строгой грамматике

При переходе на Amazon Lex из службы, в которой могут уже использоваться грамматики (например, традиционные механизмы автоматического распознавания речи), можно повторно использовать GRXML-грамматики в процессе разработки нового бота. Однако при создании совершенно нового бота Amazon Lex мы рекомендуем сначала проверить, могут ли другие типы слотов соответствовать вашим потребностям, прежде чем использовать GRXML. Рассмотрим следующее:

  • Do используйте слоты GRXML только для голосового ввода, а не для текстовых взаимодействий.
  • Не добавьте фразы-носители для слотов GRXML в сам файл GRXML (грамматику).
  • Do поместите фразы-носители в образцы высказываний слота, например, я живу в {zipCode} или {zipCode} - мой почтовый индекс.
  • Do создайте грамматику, чтобы фиксировать только правильные значения слотов. Например, для захвата пятизначного почтового индекса США следует принимать только значения, состоящие ровно из пяти цифр.

Обзор

В этом посте мы рассмотрели набор лучших практик, которые должны помочь вам при разработке и создании следующего бота. Извлекая эту информацию, важно помнить, что передовой опыт всегда зависит от контекста. Это не правила, а рекомендации, которые помогут вам создать высокопроизводительного чат-бота. Продолжая создавать и оптимизировать своих собственных ботов, вы обнаружите, что некоторые из них более важны для вашего варианта использования, чем другие, и вы можете добавить свои собственные дополнительные рекомендации. Как создатель бота, вы имеете большой контроль над тем, как настроить своего бота Amazon Lex, чтобы получить наилучшие результаты для своего варианта использования, и эти передовые практики должны стать отличной отправной точкой.

Мы можем обобщить лучшие практики в этом посте следующим образом:

  • Сведите каждое намерение к единой четкой концепции с последовательным набором высказываний.
  • Используйте репрезентативные, сбалансированные и разнообразные образцы данных о высказываниях
  • Используйте слоты, чтобы сделать намерения более четкими и собирать данные
  • Держите каждый слот в одной теме с четким набором значений
  • Знайте и используйте правильный тип слота для вашего случая использования

Для получения дополнительной информации об Amazon Lex см. Начало работы с Amazon Lex для документации, руководств, обучающих видеороликов, примеров кода и SDK.


Об авторе

Фотография Джиллиан АрмстронгДжиллиан Армстронг является архитектором решений для строителей. Она в восторге от того, как облачные технологии открывают большему количеству людей возможности использовать технологии для решения проблем, и особенно в восторге от того, как когнитивные технологии, такие как разговорный ИИ, позволяют нам взаимодействовать с компьютерами более человеческим образом.

Отметка времени:

Больше от Машинное обучение AWS