Technologie

Chatbot jako nowy interfejs użytkownika

GM
Grzegorz Marczak
5

Chatboty to nie jest nowy wynalazek. Pierwszy chatbot został stworzony przez Josepha Weizenbauma w 1966 (https://pl.wikipedia.org/wiki/ELIZA) - na podstawie analizy wzorców w zdaniach i odpowiednią podmianę słów zadawał pytania. Później wiele programów tego typu (w tym sporo całkiem zaawansowanych) powstało dla bardzo popularnych kiedyś komunikatorów takich jak ICQ, Yahoo, GG, MSN. Dlaczego właśnie teraz MS, FB, Slack czy Telegram namawiają developerów do tworzenia chatbotów dla swoich komunikatorów?

Autorem wpisu jest Wojciech Koszut, Kierownik Departamentu Rozwoju Technologii i Usług Digital Virgo.

Zacznijmy od wyjaśnienia słowa „chatbot”. Termin ten niestety nie ma oficjalnej definicji. Najlepszym sposobem, aby zdefiniować ten typ oprogramowania, jest spojrzenie na niego, jak na nowy model interakcji z użytkownikiem. Chatboty kierowane są do użytkowników, którzy korzystają ze stosunkowo wąskiego zestawu interakcji z aplikacją/usługą. Interakcje te są bardzo podobne we wszystkich usługach dostępnych za pomocą interfejsu chatbota, co umożliwia użytkownikowi szybkie skorzystanie z danej usługi. Na najbardziej podstawowym poziomie, boty muszą zrozumieć, jak mapować podane słowa na akcje oraz wykorzystać dialog w celu wyjaśnienia wątpliwości użytkownika. Niektóre z botów np. aplikacje CNN, Wall Street Journal czy Facebook Messenger, wypytają użytkownika o interesujące go tematy, żeby później wysyłać artykuły tematycznie zgodne z preferencjami użytkownika.


Przykładowa interakcja z botem CNN

Chatboty już teraz stały się bardzo wydajnym interfejsem użytkownika dla części aplikacji. Przykład idzie z Chin, gdzie aplikacje takie jak wechat czy Tencent QQ umożliwiają nie tylko komunikację, ale także np.: płatności i przekazy pieniężne, tzw. City Sevices (dostępne w 27 miastach), które obejmują rezerwacje wizyt lekarskich, opłaty za energię elektryczną czy mandaty drogowe. Statystyki jakie pokazał ostatnio wechat mówią same za siebie:

  • 600 mln użytkowników,
  • 70% z nich wydaje miesięcznie średnio 15$ na usługi dostępne w aplikacji,
  • liczba użytkowników wiadomości w aplikacji WeChat przewyższa dedykowane strony internetowe oraz TV razem wzięte,
  • 61% użytkowników korzysta z aplikacji więcej niż 10 razy dziennie,
  • 28% użytkowników ma więcej niż 200 przyjaciół.

Pozostali konkurenci powoli nadrabiają zaległości w tej dziedzinie - za pomocą komunikatora można już np.: kupić bilety na samolot, zamówić Ubera czy jedzenie w Taco Bell. Można także zamienić swoje CV w chatbota, czego przykładem jest EstherBot. Można także zarządzać urlopami z wykorzystaniem polskiej aplikacji Calamari i komunikatora Slack.


Zgłoszenie urlopu poprzez Slack do systemu Calamari

Dlaczego ludzie coraz chętniej korzystają z tego typu rozwiązań? Odpowiedź jest prosta - popularność komunikatorów i wygoda korzystania z nich, podobny interfejs użytkownika, brak konieczności instalowania dodatkowego oprogramowania. Nie trzeba przełączać się pomiędzy aplikacjami, aby zamówić pizzę, taksówkę, czy sprawdzić pogodę. Komunikatory są jednymi z najbardziej popularnych aplikacji we wszystkich marketach. Whatsapp’a używa już ponad miliard ludzi, a FB Messangera ponad 900 mln. Można postawić pytanie, dlaczego FB i MS tak bardzo zaangażowały się we wsparcie developerów w tworzeniu chatbotów. Niektórzy upatrują powody takiego działania w fakcie, że ani jedna ani druga z firm nie odniosła sukcesu w stworzeniu platformy mobilnej, którą zainteresowaliby się użytkownicy. Właśnie poprzez boty chcą uszczknąć kawałek androidowego i iOSowego tortu. Cytując prezesa MS: “Bots are the new apps” Nikt już nie chce ściągać aplikacji tylko po to, żeby raz w tygodniu zobaczyć nowe bukiety w kwiaciarni.

Popularność chatbotów rośnie także wśród developerów, szczególnie ma na to wpływ duży postęp w takich dziedzinach jak AI, rozpoznawanie mowy i NLP (Natuarl Language Processing). Odpowiednie użycie tych technologii umożliwia uczenie się (na podstawie istniejących strumieni komunikacji) oraz ciągłą poprawę jakości obsługi klientów. Oczywiście do pełnej automatyzacji droga jest jeszcze daleka. Ciekawostką jest tutaj startup X.ai. - firma została stworzona po to, żeby wziąć na siebie ciężar obsługi przyziemnych zadań, planowania spotkań itp. Amy Ingram, osobisty asystent stworzony przez tę firmę, brzmi zupełnie jak prawdziwa osoba. Bot ma dostęp do kalendarza i korespondencji pracowników, w związku z tym pojawia się pytanie: dlaczego nie mógłby wykonać takich prostych zadań za człowieka? Rozwiązanie nie działa to niestety idealnie i wszystkie odpowiedzi przekazywane do klientów, są weryfikowane przez tzw. Trenerów AI, czyli nadal występuje tam czynnik ludzki. Podobnie sprawa wygląda w serwisie GoButler, który jest SMSowym conseirge dostępnym w Nowym Jorku.

Inne podejście stosuje chatbot http://www.assi.st/, który agreguje API takich serwisów jak GrubHub, Eat24, Postmates, Uber, Lyft, OpenTable, StubHub oraz wielu innych po to, żeby zastąpić wszystkie te aplikacje jednym botem. Niestety, w praktyce ciężko mu idzie przetwarzanie języka naturalnego.


Wyszukiwanie miejsc z wykorzystaniem serwisu assist.st

Innym zastosowaniem botów jest bezpośrednia komunikacja z klientem. Wcześniej, firmy wykorzystywały do rozpatrywania skarg klientów publiczne kanały takie, jak Facebook lub Twitter. W ciągu ostatnich kilku lat większość komunikacji z konsumentami przeniosła się do kanałów prywatnych. Teraz już 10 000 firm rozwija sztuczne inteligencje dla chatbotów do obsługi klientów. Niestety najnowsze badania pokazują, że ludzie niezbyt chętnie korzystają z automatycznych systemów obsługi klienta.

Eksperyment przeprowadzony przez firmę KIK, będącą pionierem na tym rynku, pokazuje miejsce, gdzie chatbot może się sprawdzić. W jednej z restauracji został umieszczony QR Code, który kierował do chatbota restauracyjnego. Bot pytał klientów o to, co chcieliby zamówić, a następnie kelner przynosił zamówienie. O dziwo, ludziom bardzo się podobał efekt online-to-offline oraz brak konieczności instalowania kolejnej aplikacji. Innym testem użyteczności botów było zbieranie ankiet od klientów sieci restauracji. Mimo, że był to typowy dzień, ponad 250 osób wypełniło kwestionariusz jednego dnia. Ile osób ukończyło by ankietę, gdyby dodatkowo wymagane było ściągnięcie oddzielnej aplikacji ? Przypuszczam, że kilka.

Według prezesa MS Staya Nadella, świat będzie światem botów rozmawiających z nami w języku naturalnym.(„People-to-people conversations, people-to-digital assistants, people-to-bots, and even digital assistants-to-bots. That’s the world you’re going to get to see in the years to come.”) - Microsoft’s Cortana and Facebook M.

1 czerwca 2016 Facebook uruchomił nowe narzędzie zwane DeepText, które opiera się na algorytmie deep learning. Projekt będzie wykorzystywany w aplikacji FB Messanger. Narzędzie ma pomóc w zrozumieniu tego, jak ludzie używają tekstu w kontekście normalnej rozmowy. Facebook korzystając z tego narzędzia może umożliwić dokładniejsze pozycjonowanie reklam dla niektórych użytkowników. DeepText może również zostać wykorzystywany do poznania zainteresowań użytkownika, a następnie dostosowywania do nich treści wyświetlanych na Wallu. Oczywiście kontrowersje może budzić tutaj analiza prywatnych treści rozmów. Trzeba być czujnym, żeby się kiedyś nie zdziwić jak dobrze FB nas zna.

Czy stworzenie własnego bota jest trudne ? Na rynku dostępnych jest wiele framewroków, usług nastawionych na ułatwienie tworzenia własnych botów. Zacznijmy od prostego bota, który z stworzymy w serwisie https://www.gupshup.io, a następnie za pomocą serwisu https://justsend.pl/ będzie wysyłał wiadomości SMS. Wszystko co musimy zrobić to obsłużyć odpowiednią komendę, jak zostało to pokazane poniżej:


Wysyłanie wiadomości SMS z chatbota


Slack i Telegram także może wysyłać SMSy


i nawet FB Messenger

Prosty bot może reagować na precyzyjnie określone komendy. Ale to trochę mało, jak na współczesne boty, opierające się na bardziej zaawansowanej technologii. Spróbujmy przyjrzeć się temu, co człowiek do nas pisze, czyli zbadajmy kwestię rozumienia języka oraz trzymania kontekstu rozmowy.

Aktualne algorytmy są coraz lepsze w rozumieniu języka, czego dobrym przykładem jest wygrana IBM Watson z 2011 roku. Bot pokonał w quizie Jeopary ! 2 ówczesnych mistrzów.

Czym jest rozumienie tekstu przez maszynę (tzw. NLU - Natural language Understanding)? Według Wikipedii jest to proces analizowania języka naturalnego pod kątem rozumienia określonych słów, zwrotów, zdań i całego tekstu. Przy czym ważne są zależności pomiędzy słowami oraz ukryte znaczenie słów.

W praktyce znaczenie może być wykryte z tekstu, dzięki wykorzystaniu techniki wykrywania relacji między wyrazami, np. w wyrażeniach “Warszawa jest miastem”, czy też “Warszawa to stolica Polski”. NLU całkiem dobrze radzi sobie z wykrywaniem takich właśnie zależności semantycznych. Mimo skali problemu jakim jest NLU, ostatnio w tej dziedzinie dokonał się spory postęp. Można przebierać wśród rozwiązań, które w większości przypadków są już otwarte i wspierane przez duże firmy takie, jak Google czy Facebook. To właśnie Google otworzył kilka bardzo ciekawych projektów, do których można zaliczyć: SyntaxNet - framework sieci neuronowych zbudowany na bazie TensorFlow. Framework ten zawiera także parser Parsey McParseface, języka angielskiego o bardzo wysokiej skuteczności. Prostszym, ale nie mniej skutecznym rozwiązaniem jest word2vec, który ma znacznie mniejsze wymagania odnośnie liczby danych niezbędnych do nauki oraz uzyskania odpowiednich rezultatów.

Mimo widocznego postępu, wspomniane rozwiązania nie oznaczają pełnego rozumienia tekstu, ale sprawiają, że tradycyjne płytkie podejście staje się głębsze. Umożliwia to także analizę i rozumienie mniej formalnego języka, który tylko przy analizie syntaktycznej sprawiał sporo problemów.

Na rynku istnieje już także kilka usług wspierających budowę botów, wykorzystujących algorytmy NLU. Są to https://api.ai/ czy https://wit.ai/ przejęty przez FB. Co ciekawe, wit.ai wspiera także język Polski. Spróbujmy przygotować prostego bota.


Konfiguracja chatbota wysyłającego SMS-y w serwisie api.ai


Interakcja z naszym botem na Slacku

Jak widać, budowa chatbotów jest zadaniem stosunkowo prostym, szczególnie w przypadku, kiedy użyjemy odpowiednich usług. Z tego właśnie powodu, wykorzystanie chatbotów jako kolejnego kanału dostępu do naszej aplikacji, usługi, etc. nie powinno nastręczać problemów.

Rosną statystyki pokazujące wykorzystanie wyszukiwania głosowego (zwłaszcza u młodszych pokoleń), a firmy technologiczne prześcigają się w tworzeniu "najlepszego" asystenta wspierającego użytkownika (Siri, Google Now, Cortana). Użytkownicy, którzy korzystają z asystentów, w mniejszym stopniu posługują się wyszukiwarkami w dotychczasowym zakresie, gdyż odpowiednie informacje mają podane na tacy.

Na szczęście dla niecierpliwych programistów, opisane usługi, umożliwiają budowę własnych interfejsów opartych o elementy AI., np. stworzenie interfejsu do inteligentnego domu, centrum multimedialnego czy też prostej usługi listy zadań, którą można będzie obsługiwać z poziomu np. FB Messangera.

Czy wszyscy zatem powinniśmy tworzyć interfejsy do naszych usług z wykorzystaniem chatbotów? Uważam, że nie wszystkie usługi nadają się już do tego typu interfejsów użytkownika, ze względu na bardzo skomplikowaną naturę języka. Pełna automatyzacja procesu obsługi klienta może się zamienić w bardzo komiczną wymianę zdań lub szkodliwą dla firmy rozmowę, czego przykładem może być chatbot Tay AI, firmy MS, który stał się nazistą w mniej niż 24h. Przekazanie pełnej kontroli nad komunikacją do AI jest jak widać jeszcze bardzo ryzykowne, ale w przypadku prostszych zastosowań może okazać się bardzo dobrym rozwiązaniem.

Linkownia:

SyntaxNet: http://google-opensource.blogspot.co.nz/2016/05/announcing-syntaxnet-worlds-most.html

Word2vec: http://google-opensource.blogspot.co.nz/2013/08/learning-meaning-behind-words.html

Tworzenie botów i integracja z komunikatorami:

https://recast.ai/ Howdy’s BotKit, Microsoft Bot Framework, Kik Bot Kit, Gupshup, Api.ai, Wit.ai, https://core.telegram.org/bots/2-0-intro, https://smooch.io/, https://man.recast.ai, https://www.sendsonar.com/, https://calamari.io/integration/slack, https://messengerplatform.fb.com/

Boty:

http://www.assi.st/
chatbot CV: http://www.estherbot.com/

Inne:

https://en.wikipedia.org/wiki/ELIZA
https://en.wikipedia.org/wiki/WeChat
https://justsend.pl/

Hej, jesteśmy na Google News - Obserwuj to, co ważne w techu

Więcej na tematy: