Czatboty dzisiaj - rodzaje, zastosowania i prognozy
W ciągu ostatnich kilku lat obserwujemy bardzo dynamiczny rozwój technologii z zakresu przetwarzania języka naturalnego (NLP). Jednym z jego rezultatów jest fakt, że czatboty zaczęły stopniowo przechodzić ze sfery science-fiction do naszego bezpośredniego otoczenia. Już w 2011 system IBM Watson wygrywał teleturnieje z wiedzy ogólnej, zaś w 2016 miał miejsce pierwszy globalny skandal wywołany przez czatbota Tay z Microsoftu.
Dzisiaj zastosowania tych technologii są bardziej prozaiczne, ale też w bardziej widoczny sposób użyteczne. Google Duplex może zadzwonić do fryzjera nie tylko by umówić Ci wizytę, ale także by zaktualizować godziny otwarcia jego salonu na Google Maps. Zatem nawet jeśli na co dzień nie wchodzimy w dyskusje z botamii, najprawdopodobniej korzystamy z efektów ich pracy.
Sceptycyzm wobec czatbotów często koncentruje się wokół ich możliwości konwersacyjnych. Jednak zarzut ten nie trafia w istotę problemu. Musimy odróżnić czatboty konwersacyjne od czatbotów zorientowanych na konkrenty cel (goal-oriented chatbots). Zadaniem tych pierwszych jest prowadzenie naturalnie brzmiących konwersacji na dowolny temat, a więc tak naprawdę próba zdania testu Turinga. Te drugie (nazywane czasem asystentami dialogowymi) mają prowadzić rozmowy w ramach ściśle określonej dziedziny tematów, w jasno określonym celu - tj. takim celu, co do którego łatwo można okreslić czy, i kiedy został spełniony.
Rozmowy z asystentami dialogowymi często mają bardziej ustrukturyzowany charakter i nie muszą skupiać się tak bardzo na kwestiach naturalności generowanego języka. Te ostatnie wpadają raczej do kategorii dbałości o user-experience. W tym artykule skupiamy się właśnie na czatbotach zorientowanych na cel, tym jak są skonstruowane, i do czego możemy je wykorzystać.
Czatbot zorientowany na cel jest w istocie interfejsem za pomocą którego możemy wchodzić w interakcję z jakimś podmiotem (np. biznesem, urzędem lub szpitalem). Możemy więc pobierać informacje (np. poznać ofertę sklepu, lub zadać pytanie nt. polityki zwrotów) oraz wysyłać je (np. składać zamówienia lub zgłaszać reklamacje), korzystając z okienka dialogowego.
Otwarcie się rynku na czatboty można więc porównać z rewolucją internetową, kiedy to stało się jasne, że ogromną ilość interakcji można przenieść z mediów tradycyjnych, takich jak telefon, na rzecz medium stron internetowych. W wielu wypadkach kilka kliknięć w klawiaturę i mysz mogło skutecznie zastąpić rozmowę telefoniczną, lub osobistą wizytę. Dzisiaj oczywiście trudno sobie wyobrazić, żeby większy biznes lub urząd działał bez żadnej obecności w internecie. Być może już niedługo asystenci dialogowi umożliwiający interakcję w medium języka naturalnego staną się podobnym standardem.
Prognozy analityków wskazują, że rynek czatbotów w Ameryce Północnej urośnie od dzisiejszego rozmiaru 525 milionów dolarów, do 2.485 miliarda dolarów w przeciągu najbliższych 7 lat. W Polsce również już od jakiegoś czasu największe firmy budują własnych asystentów - są wśród nich PKO, Allegro, Orange, H&M, Castorama i Decathlon. Niestety poziom inwestycji w sztuczną inteligencję w Polsce dalej raczkuje. Tylko 6% polskich firm wykorzystuje w swoim biznesie uczenie maszynowe, zaś NLP pojawia się tylko w 2%. To dwa razy mniej niż średnia UE.
UX czatbotów
Można mieć wątpliwości co do wygody użytkowania czatbotów, przy czym należy oddzielić problemy związane z jakością zastosowanych rozwiązań NLP od problemów co do samego medium interakcji. Co do tych pierwszych, możemy spodziewać się, że wraz z rozwojem technologii NLP, zostaną wyeliminowane. Te drugie są bardziej zasadnicze.
W pewnym szeregu zastosowań sposoby interakcji powiązane ze stronami internetowymi - klikanie przycisków, przeglądanie menu, korzystanie z wyszukiwarek i filtrów - mogą być zwyczajnie bardziej wygodne, a tłumaczenie tego na język naturalny wydawać się sztuczne i niepotrzebne. Jeżeli chcemy zamówić pizzę i mamy do wyboru kilka opcji, łatwo nam jest sformułować nasze potrzeby w jednym zdaniu.
Inaczej jest w sytuacji, gdy robimy duże zakupy spożywcze w sklepie oferującym tysiące artykułów i dla każego z produktów w koszyku chcemy upewnić się co do jakiejś jego cechy. Czatboty uzyskują natomiast wyraźną przewagę w kwestiach, które nie są tak dobrze sformalizowane, funkcjonalność taka jak odpowiadanie na pytania lub automatyczne zbieranie i kategoryzacja zgłoszeń od klientów są dużo wydajniej realizowalne w medium konwersacyjnym. O ile łatwiej jest po prostu zapytać "Czy mogę zwrócić przymierzony kostium kąpielowy?", niż próbować znaleźć w złożonym z 200 wpisów FAQ problem dostatecznie zbliżony do naszego?
Pewnego rodzaju usprawnieniem kwestii UX, mogą być voiceboty, czyli czatboty wzbogacone o komponenty umożliwiające interakcję w medium głosowym. Pomijając klawiaturę, interakcja staje się prostsza i szybsza, a także możemy ją wykonywać w tle, np. podczas jazdy samochodem. Wówczas moglibyśmy mieć nadzieję, że czatboty zachowają wszystkie zalety rozmowy z konsultantem, bez konieczności oczekiwania na połączenie przez 30 minut. Badania wskazują jednak, że użytkownicy czatbotów preferują medium tekstowe nad głosowym w proporcji 53 do 25 %. Jako powody ankietowani podają większe poczucie prywatności oraz wzrokowy styl poznawczy. Projektując czatbota, należy więc uwzględnić to, na ile dodanie komponentu głosowego faktycznie usprawni interakcje użytkownika.
Technikalia
Standardowa architektura czatbota składa się z trzech komponentów: NLU, DM, oraz NLG. NLU czyli Natural Language Understanding ma za zadanie przekonwertować tekst w ustrukturyzowaną reprezentację. Najczęściej zakłada to klasyfikację każdej z wiadomości do przewidzianych z góry "intencji" (“intent”) rozmówcy oraz wykrycie i otagowanie wspomnianych w wiadomości obiektów (“entity”, np. imienia i nazwiska lub adresu). DM to komponent Dialogue Management, który korzystając z reprezentacji wiadomości oraz kontekstu rozmowy, decyduje która z obsługiwanych akcji powinna zostać następnie wykonana i jakie informacje zapisane na później. Finalnie, komponent NLG (Natural Language Generation) konstruuje na podstawie stanu rozmowy i wybranej przez DM akcji wiadomość do użytkownika.
Jeśli możliwości konwersacyjne są dla nas istotne, trudno obyć się tu bez wykorzystania sieci neuronowych. W przeciwnym razie proste rozwiązania oparte o wypełnianie szablonów są dalej standardem oferującym wysoki poziom kontroli nad zachowaniem czatbota.
Może się wydawać, że konstrukcja rozumiejącej i mówiącej maszyny jest zadaniem wymagającym bardzo specjalistycznej wiedzy i zdolności, jednak duża część czatbotów z którymi mogliście mieć do czynienia opiera się o frameworki operujące na zasadzie no-code. Rozwiązanie takie oferuje chociażby Google, w ramach platformy DialogFlow.
Dla języka angielskiego najprostsze projekty (np. konstrukcja asystenta zbierającego zamówienia na pizzę) mogą skorzystać z gotowych czatbotów-szablonów. W bardziej zaawansowanych zastosowaniach możemy dostroić naszego czatbota korzystając z interfesu webowego. Korzystanie z platformy Google jest w pewnych granicach nieodpłatne (w pełnej wersji płacimy od obsłużonej wiadomości), jednak musimy pogodzić się z tym, że DialogFlow jest rozwiązaniem closed-source, hostowanym na serwerach Google. Korzystając z niego, uzależniamy się od dostarczyciela i jego decyzji na temat przyszłych losów platformy. Możemy też mieć obawy, w kwestii bezpieczeństwa zbieranych przez czatbota danych.
Z tego powodu atrakcyjną opcją są rozwiązania open-source. W trakcie webinaru na Collabothonie 2021 organizowanym przez Commerzbank, miałem okazję zaprezentować jeden z najpopularniejszych frameworków tego typu - RASA. Pracowaliśmy tam na podstawie Covidiusa - czatbota demonstracyjnego stworzonego w firmie Sages.
Covidius jest w stanie pobierać przez API informacje nt. liczby nowych przypadków i zgonów z powodu koronawirusa w podanym przez użytkownika kraju, odpowiadać na proste pytania dotyczące pandemii i pobierać od rozmówców pakiet danych, który pozwoliłby np. zapisać ich na szczepienie. Podobnie jak DialogFlow, konstrukcja czatbota w RAS-ie nie wymaga zdolności programowania - wzbogacanie systemu o nowe scenariusze rozmowy, intencje, obiekty i komponenty pipeline’u polega na edycji plików tekstowych w formacie YAML.
Oczywiście znajomość języka bazowego dla RASY - Pythona, może istotnie wzbogacić funkcjonalności czatbota: istnieje możliwość wykonywania dowolnego kodu w ramach każdej z wykonywanych przez czatbota akcji i możemy też samodzielnie rozbudować pipeline o nowe komponenty rozszerzające kompetencje językowe czatbota. Te ostatnie mogą się przydać szczególnie jeżeli budujemy asystenta, którego językiem ojczystym będzie polski.
Chociaż RASA jest neutralna językowo, pewne wbudowane w nią rozwiązania są dopasowane przede wszystkim do języków o ubogiem morfologii (jak np. język angielski). Pomocna może się tu okazać także dobra integracja RASY z frameworkiem spaCy, który posiada gotowe modele dla języka polskiego.
Zastosowania
Spektrum zastosowań czatbotów jest bardzo szerokie, ale najpopularniejsze dziedziny w których się pojawiają to e-commerce, finanse, oraz medycyna. Czatboty mogą odciążać dział obsługi klienta, umożliwić bardziej bezpośrednią prezentację usług firmy i zautomatyzować proste czynności, takie jak zamawianie jedzenia. Łatwo jest nam sobie wyobrazić, jakim ułatwieniem byłaby możliwość zastąpienia wizyty w urzędzie rozmową z dobrze przemyślanym asystentem dialogowym. Możliwości techniczne upowszechniania czatbotów już istnieją. To czego potrzebujemy, to raczej osoby ze zmysłem biznesowym, które będą w stanie spostrzec okazję i zorganizować implementację dobrego rozwiązania.