Já, chatbot

V poslední době se s nimi roztrhl pytel. Chatboti – programy, které s vámi dokáží konverzovat o smrtích v Game of Thrones, poradit vám, odkud odjíždí váš vlak nebo kde večer hraje vaše oblíbená kapela. A FIT se svým chatbotem pomalu vystrkuje růžky.

Někdy je prostě jednodušší zeptat se stroje než člověka. Neodmlouvá, má přesnější informace a při práci neprokrastinuje. Sice žádný chatbot ještě neprošel turingovým testem, ale znám několik lidí, kteří by jím neprošli taky, takže je to plichta.

Řekni, kde ti boti jsou…

Chatboti (také známí jako talkboti, chatterboti, boti, IM boti, interaktivní agenti či umělí konverzační agenti, pokud chcete znít jako někdo z vyšší třídy) jsou tu s námi už přes padesát let. Nejznámějším průkopníkem tohoto oboru byl konverzační robot ELIZA, který sloužil jako psychoterapeut. Pokládal uživateli otázky složené z jeho předchozích odpovědí (a na konci vše shrnul do problémů s otcem).

[1] Je vidět, že ELIZA byla něžného pohlaví.

Chatbot je totiž počítačový program, se kterým se dá komunikovat v přirozeném jazyce (čeština, angličtina, C++) jako s člověkem. Dnešní chatboty můžeme nejčastěji najít v různých komunikačních aplikacích, jako je (Facebook) Messenger či Telegram. Zároveň se stávají čím dál tím více využívanými jako rozšíření pro Google Assistant či Alexu od Amazonu.

Druhy chatbotů

Chatboti se dělí na dva základní typy: konverzační a transakční. Jak už název napovídá, konverzační chatboti se snaží vést s uživatelem rozhovor. Bohužel (nebo naštěstí?) je ale přirozený jazyk tak složitý a košatý, že vytvořit úspěšné konverzační chatboty je stále nadlidský úkol, i když Google a jeho Google Duplex k tomu má dobře nakročeno.

Druhým typem jsou transakční chatboti – netváří se jako člověk, ale plní konkrétní funkci – např. turistického průvodce, který radí, kam mají uživatelé jít. Tento druh chatbota může být chápán jako jiný typ uživatelského rozhraní, který se často hodí více než klasické klikací aplikace.

Jeho výhodou je například méně interakcí, kde místo hledání na mapě, zjišťování jídelního lístku a otevírací doby restaurace stačí říci: „Ukaž mi české restaurace v Dejvicích, kde je lacino a vaří dobře.“ Další výhodou je možnost personalizace – například podle lajků z Facebooku může chatbot doporučit nejzajímavější událost.

Jako další rozdělení můžeme brát textové a hlasové chatboty. Hlasoví chatboti musí mít, kromě umělé inteligence, starající se o logické odpovědi, také na dobré úrovni rozpoznávání hlasu. To je problém sám o sobě, možná ještě větší než celá technologie chatbotů.

Boti na FITu

[2] Zajímalo by mě, jestli by mi poradil cestu k titulu na FITu.
První bot, který vznikl na FITu, byl založený na knihovně Golem. Tu vyvinuli studenti David Příhoda a Jakub Drdák na Summercampu 2016. Z ní postupem času vznikla aktuálně vyvíjená pythonovská knihovna Botshot, která umožňuje jednoduše vyvíjet chatboty použitelné nejen pro jednoduché projekty, ale i pro velké komerční chatovací rozhraní. Vydání první oficiální verze Botshota je plánováno na konec letošního roku.

Knihovna poskytuje funkce pro definici stavů konverzace (podobá se stavovému automatu), ale hlavně si pamatuje historii chatu, což populární online platformy neumí vůbec. Umožňuje tak lépe reagovat při delší komunikaci, neboť pracuje s dlouhodobým kontextem a neodpovídá pouze na poslední zprávu. Framework také narozdíl od existujících online platforem umožňuje definovat jednotlivé kroky konverzace pomocí python funkcí, je tedy možné data dále zpracovat a zkombinovat např. s interní databází uživatelových preferencí a vytvořit tak personalizovanou odpověď.

Botshot je primárně určen pro aplikace Messenger a Telegram, ale dostalo se mu i webového rozhraní a na dalších službách se pracuje.

Aktuálně je na něm postaven chatbot na facebookové stránce Prague Visitor Magazine, která slouží jako turistický průvodce. Ve vývoji jsou i další chatboti pro průmyslové partnery v oblasti cestování (například palubní asistent do vlaků pro společnost Passengera) a je vyvíjen i nový fakultní Chatbot FIT.

Hovory z LAN

Zeptali jsme se Matúše Žilince, studenta, co na FITu chatboty vyvíjí, jak taková konverzace s chatbotem doopravdy probíhá. I za jednoduchou konverzací se totiž skrývá složitý proces, který je celý založen na stavovém automatu a neuronové síti, ale nepředbíhejme.

Když chatbot obdrží zprávu (například „Jaký je nejužitečnější předmět na FIT?“), nejdřív proběhne Natural language understanding (pochopení přirozeného jazyka), které určí Intent, tedy co je cílem dotazu. Na NLU se v knihovně Botshot nyní používá Wit.ai, knihovna třetí strany, nicméně Datalab tým vyvíjí vlastní knihovnu, která dokáže lépe zpracovávat češtinu (Wit.ai je primárně zaměřena na angličtinu).

[3] „Je tento týden nějaká zkouška z BI-LIN, kterou bych mohl neudělat?“
Intent se určí pomocí neuronové sítě, která se díky testovacím datům již naučila rozpoznávat jednotlivé kategorie dotazů, a tak je je schopna otázce přiřadit procentuální pravděpodobnost, že daný dotaz patří do dané kategorie. Pro náš příklad by byl Intent zařazen do kategorie “dotaz na předmět”.

Následuje určení entit, tedy například datumů, míst, názvů laboratoří atd., a dle toho je potom požadavek přesměrován do správného stavu. Naše entity by byly “nejužitečnější, předmět, FIT”.

Dle zpracovaných dat by pak chatbot mohl v databázi vyhledat, že nejužitečnějším předmětem je BI-PA1.

Chatbot FIT radí

I když je Chatbot FIT zatím v plenkách, pár triků již umí. Na začátku konverzace se vás zeptá, jestli jste studentem či zájemcem o studiu a dle toho konverzaci dál vede.

Pokud jste student, tak požádá o přihlášení přes jeho FIT účet, a pak vám může nabídnout třeba informace o vaší klasifikaci, vytažené z grades.fit.cvut.cz. Může vám také poradit, jak se dostanete do jaké místnosti či co zrovna vaří v nejbližších menzách a restauracích.

[4] Je vidět, že FIT chatbot zvládá i lehké nuance českého jazyka a školních jídelen.
Pokud jste zájemce o studiu, chatbot vám vyjmenuje důvody, proč na FIT jít, jaké máme na fakultě obory a jaké podmínky k přijetí je potřeba splnit.

Poradí vám také o různých akcích spojených se studiem, jako je studenty pořádaný Seznamovák, pozve vás i na Hello FIT!, akci pořádanou fakultním klubem FIT++.

Nudíte se? Kupte si chatbota!

Knihovnu Botshot může zdarma použít pro nekomerční účely každý, ale možností, jak ji rozvinout, je stále nepřeberné množství. Proto také fiťácký DataLab tým (email na datalab@fit.cvut.cz) hledá studenty, které by téma zajímalo, a chtěli by se na vývoji podílet. Díky zakázkám od firem je již přislíbena i finanční odměna.

Témat, na které je možno se zaměřit, je opravdu mnoho. Zajímavé příbuzné oblasti výzkumu jsou například Question answering, tedy zodpovídání otázek typu „Ok Google, how many people live in Prague?“, konverzace pomocí umělé inteligence (NLG – Natural language generation) či pochopení přirozeného jazyka (NLU).

Vývoj fakultního chatbota již probíhá například v předmětech Softwarové inženýrstvíSoftwarový týmový projekt 1Softwarový týmový projekt 2, stejně tak může jít o závěrečnou práci, třeba pro obor Znalostní inženýrství, ať už v bakalářském nebo magisterském stupni studia. Pro více informací kontaktujte studenta Matúše Žilince, který na chatbotech aktuálně pracuje, na e-mail zilinmat@fit.cvut.cz.

Foto:
hlavička článku: Datalab
[1] https://cs.wikipedia.org/
[2] DataLab
[3] DataLab
[4] FIT Chatbot

Tomáš Nováček

Jsem ve svém živlu, když můžu být vždy a všude, nejlépe na nějaké vedoucí pozici, protože rád zadávám úkoly a hlavně se rád poslouchám. Proto jsem se kromě šéfredaktorování Buď FIT stal také vedoucím fakultního Seznamováku, organizátorem 111. narozenin, či zakladatelem FIT++. Kontaktovat mě můžete na novacto3@fit.cvut.cz.