Найкращі методи створення моделей взаємодії Amazon Lex

Найкращі методи створення моделей взаємодії Amazon Lex

Амазон Лекс це сервіс AWS для створення розмовних інтерфейсів у будь-якій програмі за допомогою голосу та тексту, що дозволяє компаніям додавати складні чат-боти природною мовою в різні канали. Amazon Lex використовує машинне навчання (ML) для розуміння природної мови (звичайний розмовний текст і мова). У цій публікації ми ознайомимося з набором найкращих практик використання машинного навчання для створення бота, який буде радувати ваших клієнтів, точно розуміючи їх. Це дозволяє вашому боту вести більш природні розмови, які не вимагають від користувача дотримання набору суворих інструкцій. Розробка та створення інтелектуального розмовного інтерфейсу значно відрізняється від створення традиційної програми чи веб-сайту, і ця публікація допоможе вам розвинути деякі нові необхідні навички.

Давайте розглянемо деякі терміни, які ми часто використовуємо в цій публікації:

  • Висловлювання – Фраза, яку користувач говорить вашому живому боту.
  • Зразок висловлювання – Деякі приклади того, що можуть сказати користувачі. Вони додаються до намірів і використовуються для навчання бота.
  • умисел – Це означає те, що мав на увазі користувач, і має бути чітко пов’язане з відповіддю чи дією бота. Наприклад, намір, який відповідає на привітання користувача, або намір, який може відповісти та виконати дію, якщо користувач хоче замовити каву. Бот має один або кілька намірів, на які можна зіставляти висловлювання.
  • слот – Параметр, який може фіксувати певні типи інформації з висловлювання (наприклад, час зустрічі або ім’я клієнта). Слоти додаються до намірів.
  • Значення слота – Або приклади того, що має фіксувати слот, або конкретний список значень для слота (наприклад, великий, середа та невеликий як значення для слота для розмірів кави).

На зображенні нижче показано, як усі ці частини поєднуються, щоб скласти вашого бота.

Діаграма, що показує, як взаємодія з ботом Amazon Lex протікає через автоматичне розпізнавання мовлення, розуміння природної мови, виконання (включаючи розмовний досвід користувача) і повернення до синтезу мовлення

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

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

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

Створення намірів

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

Уявіть, якби хтось дав вам набір карток із фразами на них, кожну зібраних у стоси, але без іншого контексту чи деталей. Потім вони почали давати вам додаткові індексні картки з фразами та попросили додати їх до правої стопки, просто спираючись на фрази на картках у кожній стопці. Якби кожна купа представляла чітку концепцію з подібними фразами, це було б легко. Але якби в кожній із них не було чіткої теми, вам було б важко зрозуміти, як зіставити їх до купи. Ви навіть можете почати використовувати інші підказки, наприклад «це всі короткі речення» або «тільки вони мають розділові знаки».

Ваш бот використовує подібні методи, але пам’ятайте, що хоча машинне навчання розумне, воно не настільки розумне, як людина, і не має всіх зовнішніх знань і контексту, які має людина. Якщо людині, яка не знає контексту того, що робить ваш бот, важко зрозуміти, що мається на увазі, ваш бот, швидше за все, теж зрозуміє. Практичні поради в цьому розділі можуть допомогти вам створити наміри, які будуть впізнаваними та з більшою ймовірністю відповідатимуть бажаному висловлюванню.

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

    • Словник – Нам потрібно узгодити це з тим, як говорять наші клієнти. Ви можете зафіксувати це шляхом тестування користувачами або за допомогою журналів розмов вашого бота. Наприклад:

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. Використовуйте правильні параметри, доступні для ваших слотів

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

  • Використовуйте параметр restrict, щоб обмежити слоти закритим набором значень. Для кожного значення можна визначити синоніми. Це можуть бути, наприклад, пункти меню вашого ресторану.
  • Використовуйте опцію розгортання, якщо потрібно мати можливість ідентифікувати не лише надані зразки значень (наприклад, ім’я).
  • Увімкніть обфускацію для слотів, які збирають конфіденційні дані, щоб запобігти реєстрації даних.
  • Скористайтесь підказки під час виконання щоб покращити розпізнавання слотів, коли ви можете звузити потенційні параметри під час виконання. Вибір одного слота може звузити вибір для іншого; наприклад, певний тип меблів може мати не всі варіанти кольорів.
  • Скористайтесь стилі написання для запису незвичайних слів або слів із різними варіантами написання, наприклад імен.

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

У більшості випадків a користувацький словниковий запас не є обов’язковим, але може бути корисним, якщо ваші користувачі використовуватимуть спеціальні слова, які не використовуються в повсякденній мові. У цьому випадку додавання одного може допомогти переконатися, що ваші транскрипції точні. Майте на увазі наступне:

  • 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.


Про автора

Фото Джилліан АрмстронгДжилліан Армстронг є архітектором Builder Solutions. Вона в захваті від того, як Хмара відкриває можливості для більшої кількості людей використовувати технології для вирішення проблем, і особливо в захваті від того, як когнітивні технології, як-от розмовний ШІ, дозволяють нам взаємодіяти з комп’ютерами більш людяним способом.

Часова мітка:

Більше від AWS Машинне навчання