Przetwarzanie języka naturalnego w biznesie
W 47 odcinku po raz pierwszy poruszyłem temat przetwarzania języka naturalnego. Dzisiaj wrócę do tej kwestii i wyjaśnię, do czego nam to jest potrzebne. Jakie problemy można rozwiązywać i czy te rozwiązania wnoszą wartość dodaną? Dodatkowo omówię podstawowe algorytmy, które są łatwiejsze niż mogą się wydawać.
Na początku mam dla Ciebie dwa ogłoszenia. Po pierwsze, 27-28 września odbędzie się międzynarodowa konferencja w Warszawie DWCC 2019. Będzie dużo praktyki, eksperci światowej klasy z różnych zakątków, z takich firm jak DeepMind, Facebook, Uber, Stanford, Huawei, Alpha itd. Stawiamy duży nacisk na networking, wsparcie merytorycznych dyskusji (dobór właściwych osób we właściwym czasie) i połączenie ze sztuką. Będzie tak zwana AMA, czyli Ask Me Anything. To jest specjalna formuła, kiedy po prezentacji nie ma pytań, wówczas prelegent będzie w wyznaczonym miejscu dostępny do prywatnych rozmów i wymiany zdań. Będzie to w formie bardziej przyjacielskiej rozmowy z mniejszą ilością stresu, bo tam będzie po prostu mniej ludzi. Organizowana jest także wyjątkowa strefa sztuki. Zapraszam i do zobaczenia.
Druga wiadomość. Dziasiaj (2 września), rusza bezpłatne online wyzwanie od DataWorkshop “Też potrafisz”. Wyzwanie potrwa 5 dni, i każdego dnia o 5 rano udostępniane będzie nowe zadanie do wykonania, które może zająć czasem nie więcej jak 10 minut (w zależności od umiejętności i złożoności problemu). To wyzwanie będzie dotyczyło obszaru NLP, więc jeśli chcesz spróbować tego, o czym dzisiaj piszę, to koniecznie dołącz. To jest w 100% bezpłatne, a do tego przyjemna zabawa.
Czego się spodziewać się?
- Poznasz podstawy przetwarzania języka naturalnego (NLP).
- Przerobisz koncepcję Word Embeddings (Word2Vec & Doc2Vec).
- Samodzielnie wytrenujesz model i może znajdziesz ofertę pracy swoich marzeń.
- Poznasz techniki modelowania tematycznego (topic modeling).
- Nauczysz się wizualizować wielowymiarowe dane.
- Poznasz bibliotekę gensim i inne.
Uwaga, dołączyć się można tylko 2 września. Jeśli nie udało Ci się zdążyć, to zapisz się na newsletter, dzięki czemu będziesz otrzymywać informacje o nowych wyzwaniach i innych ciekawych rzeczach bezpośrednio na swoją skrzynkę.
Natural language processing
W języku angielskim przetwarzanie języka naturalnego nazywa się natural language processing lub używa się skrótu NLP. W języku polskim skrót NLP też dość często się pojawia. Warto odróżnić, że pod akronimem NLP czasem kryje się programowanie neurolingwistyczne, ale jest to coś innego.
Mała dygresja. Jakiś czas temu był rozkwit w computer vision, począwszy od 2012 roku i przez kilka kolejnych lat wiele się działo. Teraz z widzeniem komputerowym nadal są przeprowadzane prace badawcze, ale jak na razie nie widać żadnych rewolucji, to po prostu już działa całkiem dobrze (w różnych testach, lepiej niż wizualna percepcja człowieka).
Dlaczego o tym mówię? Bo mam teraz déjà vu, kiedy widzę podobną dynamikę, tylko że rewolucja tym razem dotarła do obszaru NLP. W roku 2019 wiele się dzieje. Pojawiają się kolejne ciekawsze podejścia i już ciężko być na bieżąco. Obserwując to, co dzieje się, można powiedzieć, że jest rozkwit NLP. Swoją drogą, właśnie z tego powodu na konferencji DWCC, o której wspomniałem, NLP będzie jednym z popularnych tematów – aż 4 z 15 prezentacji będą poświęcone tej tematyce.
Kolejna ważna rzecz, na którą zwrócę uwagę. Gdy mówimy o przetwarzaniu języka naturalnego, to przede wszystkim kojarzy się z tekstem. To ma sens. Natomiast ciekawostka jest taka, że algorytmy, które były wymyślone dla NLP da się stosować w nieco innych kontekstach. Osobiście teraz używam ten algorytm w jednym z projektów, który wdrażamy na produkcję. Udało się stosunkowo małym nakładem pracy osiągnąć dobry wynik. O tym projekcie postaram się powiedzieć jeszcze więcej (jak uzyskam zgodę na to, to nagram na to osobny odcinek).
Jako ciekawostkę warto dodać, że to działa też w drugą stronę. Dla przykładu, sieci konwolucyjne były wymyślone w obszarze widzenia komputerowego (computer vision). Okazuje się, że też da się je zastosować w kontekście NLP (mimo tego, że tekst to nie obrazki). Natomiast ma to wiele wspólnego. Dla uproszczenia: słowa, które są obok siebie, są podobnie powiązane jak piksele na zdjęciu. Są pewne relacje pomiędzy nimi.
W uczeniu maszynowym na wejściu mamy dane, a na wyjściu to, co chcemy uzyskać to klasyfikacja (np. odpowiadamy na pytanie tak lub nie) lub regresja (wtedy prognozujemy wartość). Danymi w NLP jest tekst, czyli słowa poukładane w zdanie. Ludzie z branży NLP zwykle to nazywają korpusem. Jakie problemy można rozwiązywać dzięki NLP? Podobnie jak w ML, na wejściu mamy korpus i na wyjście dość często robimy albo klasyfikację albo regresję. Większość zastosowań, o których dalej będzie mowa, tego używa.
Krótka historia rozwoju algorytmów NLP
W uczeniu maszynowym wszystko musimy sprowadzić do liczb. Jeśli działamy ze zdjęciami, filmem czy tekstem, to i tak musimy to sprowadzić do liczb, bo pod spodem algorytmów są działania matematyczne.
Wcześniej tworzyło się w tym celu słownik. Każdemu słowu przypisywało się unikalne ID i wtedy zamiast słów mieliśmy zbiór liczb. To podejście było używane dość długo, ale ma ono bardzo dużo wad. Totalnie traciliśmy przy tym relacje pomiędzy słowami. Jeśli mamy słowo “dom” jako 1, “kot” jako 2 oraz “budynek” jako 3. To wtedy dom, kot i pies numerycznie są obok siebie.
Mówiąc o Word2Vec od razu przechodzi się na rozmowę o wektorach lub jeszcze ciekawej mówi się o wielowymiarowych przestrzeniach. Sama koncepcja leżąca w Word2Vec jest bardzo prosta, natomiast, co jest najważniejsze, jest wiele prostych teoretycznych koncepcji, ale tylko mała część z nich działa w praktyce. Jednym słowem tę koncepcję można wyjaśnić pewnie przez słowo porządek. Podam Ci przykład. Załóżmy, że nasz świat składa się z jedynie trzech wymiarów, czyli te które dostrzegamy okiem. Wyobraź sobie na moment rzeźbiarza, zegarmistrza czy chirurga. Jak to wygląda? Gdzie są ich narzędzia? Czy są rozrzucone po pokoju czy jednak mają swój porządek? Jeśli weźmiesz mistrza swojego dzieła, to z zamkniętymi oczami będzie w stanie poruszać się w tym pokoju.
Inny namacalny przykład. W zależności od tego jaką rolę odgrywasz w domu, np. jesteś mistrzem garażu, kuchni czy jeszcze czegoś – jak często masz uczucie dyskomfortu, kiedy druga połówka posprząta na Twoim terenie? Najciekawsze jest to, że z zewnątrz po takim sprzątaniu może przestrzeń wyglądać nawet czyściej, ale to totalnie mija się z celem. Dlaczego? Bo nagle okazuje się, że nie możemy się w tym odnaleźć. Nie wiadomo, gdzie co leży. To oznacza, że przed tym mieliśmy w głowie pewną mapę wszystkich przedmiotów i relacje, jakie mają pomiędzy sobą – garnki leżą obok innych garnków albo śrubokręty są obok siebie.
Właśnie teraz przerobiliśmy esencję algorytmu Word2Vec. Ten algorytm ma zadanie uporządkować słowa, rozłożyć je do swoich szuflad. Do dyspozycji akurat ma trochę więcej wymiarów niż tylko trzy. To może być np. 100 lub 300, dzięki czemu ma znacznie większy stopień wolności. Nawigacja w trzech wymiarach wymaga trzech liczb, czyli na jakiej szerokości, długości oraz wysokości coś jest. Mówimy, że w tym przypadku wektor ma trzy wartości. Mówiąc wektor, można powiedzieć nawet prościej – to jest liczba. Dla wielowymiarowej przestrzeni, ta liczba może być np. 100 czy 300. Ciężko jest ludziom wyobrazić sobie, co tyle wymiarów oznacza w praktyce, ale z punktu widzenia algorytmu, to oznacza, żeby znaleźć obiekt w przestrzeni potrzebujemy znać np. 100 liczb (zamiast 3, jak to jest w trójwymiarze).
Pojawia się pytanie: to w jaki sposób słowa są uporządkowane? Na tym polega cała sztuka i nauka modelu. Robi się to tak: bierze się bardzo duży korpus (czyli tekst), najlepiej w 10-kach tysięcy, 100 tysiącach wyrazów (czy nawet w milionach). Następnie wybiera się szerokość pływającego okienka w tekście, np. 5 czy 10 słów. Wszystkie słowa, które pojawią się obok siebie oznaczają, że mają relacje.
Już podaje Ci przykład. Warszawa i Polska będą zlokalizowane obok siebie. Bo w wielu miejscach tekstu można znaleźć:
- Warszawa to stolica Polski
- Stolica Polski to Warszawa
- Będę w Warszawie w naszej stolicy
Takie podejście ma szereg zalet. Jedno z najbardziej rewolucyjnych rzeczy jest to, że teraz każde słowo (lub nawet zdanie czy paragraf) możemy zaprezentować w postaci liczb i możemy porównywać dwa słowa w sposób numeryczny. Dzięki czemu wyrazy, które mają zupełnie inne literki, np. “dom”, “budynek”, “blok”, “willa” czy nawet “chałupa” będą miały podobny wektor. To te słowa mają podobny sens. Osoby, które zajmują się językami powiedzą, że mają podobną semantykę.
Co to oznacza “podobne”? Załóżmy, że nasz wektor ma 100 wymiarów, czyli każde słowo opisujemy przy pomocy 100 liczb. Wtedy mamy 100 liczb dla słowa “dom” i 100 liczb dla słowa “budynek”. Zaczniemy następnie porównywać te wektory. Co to znaczy porównywać? Pamiętasz, jakie kiedyś w szkole trzeba była dodawać liczby pisemnie w słupkach? To mamy podobnie, tylko teraz nic nie dodajemy. Mamy dwa wiersze i krok po kroku porównujemy liczby, czyli jaka jest wartość dla pierwszych liczb, jaka jest dla drugich itd. i okazuje się, że “dom” i “budynek” mają bardzo podobne wartości.
Kolejność liczb w wektorze jest ważna, każdy wymiar ma swoją odpowiedzialność. Tylko w tym modelu, nie ma możliwości interpretować tego jawnie, nie wiemy, za co jest odpowiedzialny wymiar piąty czy dziesiąty, natomiast możemy być pewni, że za tym stoi jakaś logika.
Tłumacząc działania algorytmu Word2Vec po przez analogię, chce się przypomnieć cytat Hemingwaya
“Powiedz mi, kim są twoi przyjaciele, a powiem Ci, kim jesteś.”
Wprowadzenie Word2Vec stało się rewolucją. Zwykle mówi się, że Google wymyślił ten algorytm, ale Google to brand, a sam brand jest tylko otoczką, za tym stoją ludzie. Twórcą Word2Vec jest Tomas Mikolov, który obecnie pracuje w Facebooku. Co prawda, jak to zwykle bywa, osoby, które wymyślają podobne rzeczy inspirują się innymi faktami, które gdzieś ktoś wynalazł. Natomiast Mikolov to połączył i dopracował w taki sposób, żeby to zaczęło działać. Dlatego trzeba przyznać mu, że wynalazł Word2Vec w takiej postaci, żeby to działało.
Tomas jest bardzo ciekawym, inteligentnym i skromnym człowiekiem. Jak o tym mówię, to zastanawiam się, co jest przyczyną, a co jest skutkiem :). Można rozważać, czy jest ciekawy, dlatego że jest inteligentny czy może dlatego że jest skromny? Zaprosiłem Tomasa na konferencję DWCC 2019 i 28 września będzie w Warszawie. Będzie opowiadał o Word2Vec oraz algorytmie fastText. Prosiłem go, żeby opowiedział o pewnych szczegółach, trikach, które są mniej oczywiste dla innych, chociaż dla niego jako twórcy mogą być oczywiste. Też będzie brać udział w AMA i można z nim będzie na spokojnie porozmawiać.
Podsumowując temat Word2Vec. Zwykle wszystkie rozwiązania dotyczące NLP (na ten moment) wdrożone na produkcję, używają Word2Vec. To stało się de facto standardem i najlepszym osiągnięciem. Oczywiście są pewne odmiany tego podejścia, ale to już inna historia. Mówię o tym, żeby podkreślić ważność tego rozwiązania.
W uczeniu maszynowym jest bardzo dużo dostępnych algorytmów i ich implementacji. Natomiast na palcach można policzyć te, które działają dobrze w praktyce. Word2Vec to jest przykład tego, co działa i czasem nawet lepiej niż można się tego na początku spodziewać.
Modelowanie tematów
Gdy działamy z dużą ilością tekstu, przeczytać to manualnie i następnie wychwycić, jakie tematy pojawiły się w tekście, może być trudne fizycznie. Też czasem w tych tekstach można wykryć inne tematy. Podam Ci przyklad. Jest firma, która ma dużo klientów, którzy piszą do firmy różne wiadomości. Zarząd myśli, że klienci piszą tylko z dwóch powodów: narzekać lub podziękować. Treści jest tak dużo, że ciężko jest je wszystkie analizować. Jeśli jednak przepuścimy całą treść przez odpowiednie algorytmy, to możemy zobaczyć pewne grupy “schowanych” tematów (latent topics). To są tematy, które nasi klienci poruszają, a my nie zdajemy sobie z tego sprawy.
Co to za algorytmy? Jest ich kilka, np. LDA. Jest to statyczny algorytm, który działa nawet całkiem dobrze, natomiast ma kilka wad. Po pierwsze, skoro został wymyślony przez statystyków (tym bardziej jakiś czas temu) to prawie zawsze to oznacza, że ten algorytm bardzo słabo skaluje się na dużą ilość danych (bo był tworzony w zupełnie innej rzeczywistości). Tak jest z LDA – kiepsko sobie radzi z większą ilością danych. Druga wada jest taka, że słabo sobie radzi z literówkami lub odmianami słów (język polski pod tym względem jest bardzo bogaty). Swoją drogą na bezpłatnym wyzwaniu online, o którym wspomniałem wcześniej, pokażę jak się robi modelowanie tematów.
Czy da się jakoś sobie poradzić z tymi ograniczeniami? Tak. Są pewne pomysły na to, jak wykorzystać nowoczesną wiedzę z NLP, między innymi Word2Vec. O tym będzie osobna prezentacja Valentina na konferencji DWCC. Valentin Malykh ma sporo doświadczenie i miał potrzebę uruchomienia modelowania tematów (topic modeling) na naprawdę bardzo dużych zbiorach danych. Warto posłuchać, bo okazuje się, że te tematy nie są aż tak skomplikowane, jak się wydaje. Narzędzia, które to robią, są dostępne od ręki. Mało tego, to są narzędzia typu open source. Wystarczy, że jest jedna osoba w firmie, która tym chce się zająć i już za kilka tygodni (lub nawet wcześniej) można uzyskać ciekawe wyniki, które mogą Cię zaskoczyć.
Wsparcie klienta
Pamiętam, jak pracowałem jakiś czas temu w General Electric i znałem osobiście zespół, który zajmował się obsługą klientów. Do tego zwykle używa się jakiegoś systemu do przyjmowania zgłoszeń. W korporacjach zwykle używa się ServiceNow. Jednym z zadań zespołu było kategoryzowanie zgłoszeń. To była bardzo żmudna praca. To brzmi jako zadanie dla uczenia maszynowego.
Jest dużo firm, w szczególności większych, które borykają się z problemami, jak sobie poradzić ze zgłoszeniami, które spływają od klientów. To zadanie tak naprawdę da się uprościć do dwóch rzeczy, które należy wykonać. Mało tego, tak naprawdę to zadanie (prawie) w 100% da się zautomatyzować.
Podaje Ci konkretny przykład. Uber działa na dużą skalę i ma tysiące zgłoszeń dziennie. Ciężko to wszystko ogarnąć manualnie, dlatego na pomoc przychodzi uczenie maszynowego. Zespół Ubera zbudował system COTA (Customer Obsession Ticket Assistant), który działa następująco. Na wejściu jest zgłoszenie, na wyjściu są dwie rzeczy. Po pierwsze przypisanie zgłoszenia do odpowiedniej kategorii, po drugie trzy sugerowane odpowiedzi na to zgłoszenie. W wyniku wdrożenia tego rozwiązania udało się zredukować ilość przekierowań o 15% oraz zmniejszyć o 5% czas spędzany przez członków zespołu wsparcia.
Więcej na temat COTA opowie Aditya Guglani 28 września, który specjalnie przyleci do Warszawy na konferencję. Aditya jest liderem technicznym tego projektu, więc można dopytać go o różne ciekawostki techniczne.
Question Answering (chatbot)
Chatboty nabierają swoje wartości i jeśli robi się to dobrze, to naprawdę są pomocne. Podam Ci kilka przykładów. 1-800 flowers.com zanotowało wzrost sprzedaży o 70%, kiedy wdrożył możliwość zamówienia kwiatów przez chatbot, bez zbędnej interakcji zewnętrznej. Sephora zwiększyła o 11% liczbę zamówień na makijaż, dzięki zastosowaniu umawiania na usługę poprzez Sephora Reservation Assistant. Istnieje jeszcze wiele innych przykładów.
Opowiem Ci też o naszym Ryśku. Znasz go? Rysiek narodził się rok temu na konferencji DWCC. W tym roku zapowiadał też będzie, ale jeszcze nie znam szczegółów. Bo Rysiek trzyma to wszystko w tajemnicy. Podobnie wiele rzeczy się wydarzyło w jego życiu, ale to niech sam opowie, co tam się podziało. Następnie Rysiek zaczął pomagać przy wyzwaniu. Mieliśmy problem przy wysyłce maili do większej grupy osób, bo zawsze jest tak, że z różnych powodów do kogoś mail nie dotrze. Takim mailem może być bonus za wykonanie zadania. Bardzo szkoda jeśli zadanie zostało wykonane, a bonus się gdzieś zagubi. Były momenty, kiedy siedziałem po nocach i wysyłałem takie maili manualnie. Rysiek dbając o moje zdrowie zaproponował pomoc. Powiedział, że może tym się zająć. Od tego momentu można napisać do Ryśka na czacie (używamy Slacka) i poprosić o bonus. Dodatkowo może znaleźć ciekawy artykuł do przeczytania lub powiedzieć, jaka jest pogoda.
Na czwarte wyzwanie, które rusza 2 września, Rysiek przygotował się jeszcze bardziej. Oprócz bonusów też wysyła zadania. Dodatkowo stwierdził, że zajmie się także przeliczaniem punktów. Od 4 wyzwania pojawiła się możliwość zbierania punktów. Jest kilka sposobów, jak to można robić i dość złożona logika (żeby obsłużyć wszystkie przypadki), dodatkowo warto dołożyć skalę ok. 5 czy nawet 10 tysięcy ludzi. Dlatego Rysiek podjął się tego wyzwania, z czego jest bardzo dumny, ale też co jest ważne umożliwia nam małym zespołem radzić sobie z dziesiątkami lub nawet setkami tysięcy zgłoszeń. Rysiek jest bardzo miły warto go poznać. Mówiłem, że będzie na konferencji również w tym roku?
Temat tworzenia botów jest dość złożony, w szczególności jeśli chcemy stworzyć bota w tematach dość ogólnych, niż tylko mocno zdefiniowane ścieżki. Mikhail Burtsev przyjedzie do Warszawy i 28 września na konferencji opowie o narzędziu, które tworzy, żeby ułatwić tworzenie botów. Używa dość złożonych rozwiązań pod spodem, tak zwanych state of the art. Jeśli chcesz być na bieżąco w tematach botów, to warto być na tej prezentacji. Będzie także okazja porozmawiać z nim w bardziej kameralnej atmosferze.
Podsumowując
NLP, czyli przetwarzanie języka naturalnego może być bardzo pomocne z praktycznego punktu widzenia. Może usprawnić jakość produktu, zadowolenie klientów i ostatecznie zwiększyć wartość firmy. W obecnych czasach jest rozkwit NLP i wiele dzieje się w tym temacie. Słysząc o NLP na pewno chcesz widzieć o algorytmie Word2Vec i rozumieć jak działa, bo wtedy jesteś w stanie lepiej zrozumieć, jakiego rodzaju problemy można rozwiązać.
Twórcą Word2Vec jest Tomas Mikolov, który wystąpi z prelekcją na konferencji DWCC 2019 i też będzie można z nim porozmawiać po wystąpieniu. Tutaj warto dodać, że Tomas jest dość introwertyczną osobą, więc trzeba też to uszanować, ale zgodził się uczestniczyć w formacie Ask Me Anything. Będzie jeszcze kilka innych ciekawych, aktualnych i praktycznych wystąpień związanych z NLP. Warto być!
Jeśli jednak nie możesz być w Warszawie 28 września, to jest możliwość dostępu online do konferencji i to będzie coś więcej niż tylko transmisja. Dostaniesz całą paczkę np. nagranie, które możesz obejrzeć później, raport przygotowany przez prelegentów, który odpowiada na pytanie, jak pewne problemy można najlepiej rozwiązać używając uczenia maszynowego na rok 2019, dostęp do prezentacji oraz wywiadów. Przedsprzedaż rusza 10 września i wtedy można uzyskać zniżkę nawet 50%.
Przypomnę, że też jest możliwość spróbować Word2Vec samodzielnie zapisując na bezpłatne online wyzwanie od DataWorkshop “Też potrafisz!”. Ostatni dzień zapisu to 2 września.
To tyle na dzisiaj do usłyszenia lub zobaczenia.