Упс! Не вдала спроба:(
Будь ласка, спробуйте ще раз.

«Схоже на автопілот на Tesla»: як розробляють, навчають і тестують чатботів

Олександр Тартачний
Олександр Тартачний журналіст
6 грудня 2022 15 хвилин читання

Про те, як навчити ботів розпізнавати голос, як вони заважають коригувальникам вогню та чи є tone of voice у робота, в інтерв'ю із Глібом Добжанським, VP of Engineering у компанії Master of Code Global. Компанія розробляє чатботи та застосунки для міжнародних компаній у сфері телекому, туризму, медіа, спорту та моди.

Як месенджери та Covid-19 призвели до розквіту голосових асистентів

SPEKA: Навіщо потрібні чатботи, зокрема голосові? 

Боти, або точніше conversation apps, — це розмовні застосунки. Бот — дуже вузьке поняття, боти є у Telegram або Viber, але те, що ми розробляємо, є по суті спеціальним інтерфейсом. 

Останні кілька десятків років усі пристрої зменшуються, комп'ютери зменшують, ми дедалі частіше використовуємо мобільний замість ноутбука, на мобільних вже майже немає кнопок. І колись усі фізичні інтерфейсні пристрої зникнуть, а потреба комунікувати з комп'ютерами залишиться. Це будуть смартгодинники чи навушник у вусі або бот. 

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

Економічно найвигідніші боти — віртуальні помічники для мобільних операторів, комунікаційних провайдерів, фінансових установ.

Вони стали шалено популярними через пандемію Covid-19. Навіть якщо у бізнесу були оператори колцентрів, то тривалий час, особливо на Заході, вони фізично не могли прийти на роботу. 

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

Використання голосових асистентів із початком пандемії Covid-19 Використання голосових асистентів із початком пандемії Covid-19

Технічне уточнення: фахівці якого напряму потрібно, для того, щоб створити подібний бот?

Розробка бота відрізняється від звичайного програмування тим, що спочатку розробляють мовний інтерфейс. Для цього потрібна команда розробників, а також конверсейшн-дизайнери, мовні дизайнери, які можуть визначити мовну модель для тренування, побудувати діалоги та створити «персону» бота (про створення персони докладніше далі у тексті. — Ред.).

Щоб розробити такі мовні програми, потрібні спеціалісти з мовної моделі. Адже семантика слів буде відрізнятися у різних галузях. Наприклад, слово «ключ» бот банку зрозуміє як спосіб авторизації, а бот автомобільного магазину як ключі до автомобіля. 

Є спеціалісти, які тренують бота на відповідну тематику. Ми їх називаємо АІ-тренери — тренери штучного інтелекту. 

AI Trainer відповідає за аналіз, підбір та балансування якісних тренувальних даних для створення моделей та класифікаторів на основі наявних на ринку NLP-провайдерів типу Google Dialogflow, Rasa, Microsoft Luis etc. Також вони тестують та аналізують успішність моделі на текстових даних від користувачів. Цей фахівець має знатися на лінгвістиці та володіти ML, Python, Text Data pre-processing and visualisation. Має розумітися на основах Conversation Design, а також бажано бути носієм тієї мови, для якої розробляємо застосунок. 
Найпоширеніші сфери застосування чат-ботів Найпоширеніші сфери застосування чат-ботів

Про мову голосових ботів та машинне навчання 

Як вдається створювати багатомовних ботів?

Ми працюємо переважно з клієнтами з Північної Америки. Тому створюємо ботів білінгвів для США (іспанська та англійська) та Канади (англійська та французька).

Боти повинні вміти перемикатися між мовами, а також розуміти суржик, бо на півдні США будуть клієнти, які вводитимуть запит із половини англійських і половини іспанських слів. 

Кореляція між відсутністю обслуговування у контакт-центрах рідною для користувача та очікуваннями клієнтів. Кореляція між відсутністю обслуговування у контакт-центрах рідною для користувача та очікуваннями клієнтів.

Як навчити систему визначати суржик? Якою мовою вона відповідатиме, якщо, наприклад, ми говоримо про англійську та іспанську?

Складно не відповісти, а навчити алгоритм розуміти, що саме намагається сказати користувач.

Перед тим як дати відповідь, алгоритм проходить кілька етапів. Спершу за окремими словами, характерними для конкретної мови, ми намагаємося визначити, якою мовою сформований запит. Далі бот намагається зрозуміти власне сенс речення. У штучного інтелекту є confidence core — показник того, наскільки рушій алгоритму впевнений, чи він зрозумів сенс запитання.

Підписуйтеся на наші соцмережі

Якщо розмовний застосунок визначив, що це англійська мова і confidence core у нього досить високий, то він готовий надавати підготовлену на такий запит відповідь.  

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

Зазвичай у бота є мова за замовчуванням, і цією мовою він відповідає одразу. Є сервіси, де ми можемо робити онлайн-переклад. Головна проблема — зрозуміти, що хоче користувач.

 Схема обробки запиту голосовим асистентом  Схема обробки запиту голосовим асистентом

Як ви навчаєте алгоритми? Яким чином визначають мову за голосового введення? Чи не виникає проблем через різну швидкість та чіткість вимови, акцент, сленгові слова?

Ми займаємося надбудовою, тобто використовуємо мовні моделі від Amazon. Вони вже готові й доволі хороші. Але нам потрібно натренувати алгоритм для спеціальних цілей. Мовлення неоднорідне і відрізняється у кожній індустрії. Наприклад, є спеціальні терміни для фінансових застосунків. 

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

Тобто надбудова, навчання спеціальних слів поверх базової моделі та використання контексту — це те, що ми робимо. 

Щодо голосових ботів, то це ще один шар, який ми додаємо. Адже тут теж головна мета — зрозуміти сенс користувача. Спочатку нам треба перевести голос у текст і потім виконувати вже згаданий алгоритм. Щоб зрозуміти контекст, на базовому рівні використовують векторне відображення слів. Це нейромережа, яка проаналізувала, що слово «їжа» енну кількість разів зустрічається із словом «ресторан» у одному реченні чи тексті. Також «їжа» зустрічається із словом «роздуми», але рідше. Тож вектори слів «їжа» та «ресторан» будуть ближчими. На базовому рівні це допомагає алгоритму визначити  зв'язки між словами. Далі ми використовуємо confidence core.  

Щоб розпізнати голос, зазвичай використовуємо готові сервіси від Amazon та Google, також досить непогано для англійської мови працює бібліотека з відкритим кодом Deep Speech від MozillaПісля того як текст відповіді згенерований, його треба пропустити через синтезатор голосу.

Приклад помилки чат-бота, який не розпізнає голосові повідомлення Приклад помилки чат-бота, який не розпізнає голосові повідомлення

Ботперсона: як застосунки реагують на відповіді

Користувачі люблять використовувати боти не за призначенням, писати безглузді запити, щоб подивитися на відповідь бота. Чи здатен застосунок розпізнати такий запит, і якщо так, то що він відповідає?

Розпізнати такі запити можна, але відповідь залежить від того, чи запрограмований він на таку позаробочу активність. За стандартом бот має підтримувати так званий small talk — розмови ні про що, щоб підняти настрій. Наприклад, Siri — голосовий помічник для iOS відповідає по-різному на запитання, як справи, залежно від низки чинників. 

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

Як ви це реалізовуєте?

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

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

Чи ставлять клієнти таке завдання щодо tone of voice застосунків? Наприклад, наш бот має відповідати не дуже формально, але не використовувати певні конструкції, або люди мають розуміти, що він приязний і т. д. 

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

Коли бот розпізнає сенс речення, він може виміряти його емоційне забарвлення. І щодо нього ми можемо якось змінити tone of voice. Як і в живому спілкуванні, коли ми бачимо, як з нами говорять, ми адаптуємося.

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

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

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

Про час на розроблення та способи вдосконалення голосових ботів 

Скільки часу зазвичай потрібно, щоб дотренувати застосунок?

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

Як відбувається тестування? Як зрозуміти, що ваш бот готовий впоратися з різними запитами?

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

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

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

Як зрозуміти, що застосунок працює коректно? Користувачі часто закривають вкладку або переривають сесію, тому що вони отримали свою відповідь, їм не потрібно відповідати боту, що все правильно. 

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

Застосунок має розговорити користувача, щоб отримати більше інформації. Тоді бот буде більш успішним, але немає загальної метрики. В одному випадку будемо оцінювати кількість часу на сайті, в іншому проведені покупки після розмови або виконану операцію після того, коли бот надав інформацію. 

Я нечасто спілкуюся з ботами, але бачу, який величезний прогрес відбувся за останні кілька років, тобто наскільки вони добре почали розуміти природну мову. А що досі важко зрозуміти алгоритмам? Що ще потрібно зробити, аби боти  спілкувалися з користувачем як справжні люди?

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

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

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

Бан коригувальникам вогню та коментатор спортивних ігор: на що ще здатні conversation apps

Поділіться кількома кейсами з цікавими або складними робочими завданнями. 

Ми робили застосунок для NВА. У ньому фани могли не тільки стежити за подіями та обговорювати. Там був бот, з яким можна було поспілкуватись, якщо ти не встиг на гру, обговорити її. 

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

 Його потрібно було зробити швидко, тому зробили «на коліні» і випустили у перший день. Він працював за принципом стоп-слів. Згодом була справжня АІ-модель. 

Спочатку додавали кожне слово окремо до фільтра, але тоді також треба додавати словоформи та різні варіанти написання. Після певного часу роботи бота ми назбирали достатньо прикладів повідомлень зі стратегічною інфою і потім на основі цих прикладів навчали Tensorflow-модель. Для нейромережі кожне слово — це окремий токен. При цьому в коментарях користувачі використовують слова у різних відмінках (наприклад, площа, площі, площею) і різного роду (наприклад, горіла, горіло, горів). Щоб бот ідентифікував ці варіації слів, ми використовували stemming. Цей інструмент робив обрізку закінчень слів у різних відмінках і залишав ключове слово.

А щоб ідентифікувати слова у різних часових вимірах (наприклад, горіло, горітиме, горить) і в однині та множині, ми використовували lemmatization. Завдяки цим інструментам отримуємо одне базове слово, яке потім використовуємо для тренування бота.

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

Один із прикладів чатбота, створеного компанією Master of Code Global Один із прикладів чатбота, створеного компанією Master of Code Global

 

Підписуйтеся на наші соцмережі

0
Прокоментувати
Інші матеріали

Wikipedia під загрозою – штучний інтелект масово генерує фейкові статті

Павло Бартос 15 годин тому

Soft skills у роботі проєктного менеджера: як знайти баланс

Марат Торянік 18 годин тому

PR Community від Kharkiv IT Cluster: «Омніканальність у retail: як завжди залишатися в полі зору клієнта?»

Olga Sukhorukova 22 години тому

Logitech випустив ще одну тиху клавіатуру для ШІ — POP Icon Keys

Вікторія Рудзінська 10 жовтня 2024 17:05

Подкаст «Закрив Раунд» готує вже 5-й сезон. Старт у жовтні

Анна Старкова 10 жовтня 2024 16:21