Przetwarzanie języka naturalnego (rownież polskiego)
Z tego odcinka dowiesz się:
- Czym jest NLP? Przetwarzanie języka naturalnego (NLP) to technologia umożliwiająca maszynom analizowanie i rozumienie ludzkiego języka. Dzięki NLP, maszyny mogą przetwarzać informacje w sposób dla nas naturalny, czyli w formie tekstu i mowy.
- Jakie problemy biznesowe można rozwiązać stosując NLP? NLP pomaga w automatycznej klasyfikacji dokumentów, obsłudze klienta, procesach rekrutacyjnych, analizie sentymentu w mediach społecznościowych, ekstrakcji informacji z tekstów oraz w tworzeniu chatbotów.
- Na jakim etapie jest NLP biorąc pod uwagę język polski? Przetwarzanie języka polskiego jest trudniejsze niż angielskiego z powodu jego złożoności gramatycznej i mniejszej liczby dostępnych danych. Mimo to, polskie ośrodki badawcze poczyniły znaczące postępy w tej dziedzinie.
- Jakie instytucje oraz ośrodki badawcze pracują nad udoskonalaniem NLP dla języka polskiego Kluczowe instytucje to Instytut Podstaw Informatyki PAN, Politechnika Wrocławska, Uniwersytet Wrocławski, Uniwersytet Łódzki oraz Polsko-Japońska Akademia Technik Komputerowych. Działają one w ramach konsorcjum Clarin.
- Czym jest konkurs PolEval oraz jak wziąć w nim udział? PolEval to konkurs dotyczący przetwarzania języka polskiego, organizowany przez Instytut Podstaw Informatyki PAN. Skupia się na różnych zadaniach NLP, takich jak znakowanie morfosyntaktyczne, analiza sentymentu czy rozpoznawanie nazw własnych. Udział w konkursie można wziąć poprzez zgłoszenie swojego zespołu na stronie poleval.pl.
- Jak PolEval przyczynia się do poszerzenia wiedzy na temat NLP dla języka polskiego? Konkurs PolEval umożliwia zespołom z różnych sektorów (naukowego i biznesowego) rywalizację i wymianę wiedzy, co przyczynia się do poprawy metod NLP oraz opracowywania nowych rozwiązań. Dzięki niemu udało się znacząco poprawić dokładność istniejących narzędzi.
- Jakie zasoby i narzędzia można wykorzystać oraz gdzie je znaleźć w przypadku rozpoczęcia nauki o NLP? Dostępne zasoby obejmują Narodowy Korpus Języka Polskiego, korpusy dziedzinowe (np. korpus parlamentarny), słowniki gramatyczne i ontologie (np. Słowosieć). Te zasoby są dostępne na stronach internetowych instytucji badawczych i konsorcjum Clarin.
Skoro słuchasz tego podcastu, to często słyszysz frazę, że świat zmienia się szybciej niż myślisz. Czy wiesz, że zmienia się jeszcze szybciej?
Spróbuj, tak z ciekawości zajrzeć do większości zwykłych salonów samochodowych, jak Skoda, VW, KIA czy Hyundai, kończąc na droższych, jak Volvo czy BMW. Każdy z nich posiada już asystenta utrzymania pasa ruchu. Droższe samochody potrafią nawet jeszcze więcej. Pomagają prowadzić samochód autonomiczne, czy wykrywać pieszych. To już się dzieje. W październiku 2018 roku w Dubaju pojawiły się pierwsze autonomiczne taksówki i oni mają plan, aby do 2030 roku 25% pojazdów w Dubaju było autonomicznych, czyli za jakieś 11 lat. To robi wrażenie. Pomijam fakt wdrożenia latających taksówek. Chociaż co do latających taksówek.
Opowiem Ci jeszcze jedną ciekawostkę. W Moskwie w ciągu najbliższych 2 lat planuje się uruchomienie prototypu latającej taksówki. Kilka tygodni temu przedstawiono prototyp. Oczywiście, była to bardzo wczesna wersja, ale ten latający aparat nie zdążył nabrać wysokości zanim spadł. Z tego co czytałem, problem był dość ciekawy. Przez to, że na ulicy był mróz i przed startem ta taksówka stała na ziemi, jej akumulator podobno się szybko rozładował. Podobnie jak czasem telefon komórkowy szaleje na mrozie. Można stąd wyciągnąć kilka ciekawych wniosków, np. że technologia powinna dojrzeć. Chociaż już zamykając ten temat, oglądałem ciekawy materiał o autonomicznym samochodzie, który przejechał z Moskwy do Kazania ponad 780 km. Podróż trwała ok. 11 godzin i 99% czasu samochód jechał autonomicznie. Załączę video do notatek, ale ciekawostka polega na tym, że samochód poradził sobie na drogach bez pasów i nawet takich… gdzie nia ma asfaltu :). Rozwiązanie było przygotowane przez firmę Yandex (czyli taki rosyjski Google).
Jeśli chcesz nauczyć się wdrażać uczenie maszynowe w swojej firmie, to warto zapisać się na kurs. Pierwszy kurs jest praktycznym wprowadzeniem do uczenia maszynowego (w którym również będzie mowa o Deep Learning), drugi kurs dedykowany praktycznemu prognozowaniu szeregów czasowych oraz kursy wprost związany z NLP (praca tekstem).
Dzisiejszym tematem będzie przetwarzanie języka naturalnego. Łukasz Kobyliński jest dzisiejszym gościem, który ma doświadczenie w tym temacie, w szczególności w NLP dla języka polskiego. Rozmowa wyszła trochę dłuższa, ale warto jej posłuchać. Zapraszam!
Cześć Łukasz, przedstaw się: kim jesteś, czym się zajmujesz, gdzie mieszkasz?
Cześć! Nazywam się Łukasz Kobyliński. Mieszkam w Warszawie. Zajmuje się tak naprawdę wieloma rzeczami. Wydaje mi się, że to co łączy te wszystkie projekty w których biorę udział, to jednak rola takiego powiedzmy Data Scientist, czyli analiza danych oraz zarządzanie nimi. Myślę, że to wszystko ma coś ze sobą wspólnego, a tak konkretnie to prowadzę projekty związane z przetwarzaniem języka naturalnego w Instytucie Podstaw Informatyki Polskiej Akademii Nauk, więc to jest taka moja noga w świecie naukowym. A druga noga w świecie biznesowym, to jest zarządzanie w firmie Sages która jest firmą konsultacyjną i szkoleniową w obszarze IT. Najbardziej w tej chwili interesują mnie projekty, które łączą te dwa światy, także jestem bardzo zadowolony i dumny z takich projektów, które udało się zrobić wspólnie zarówno w Sages, jak i w nauce. Prowadzimy, na przykład studia podyplomowe na Politechnice Warszawskiej związane z analizą danych, czy organizujemy konkurs PolEval, który też jest miejscem współpracy świata nauki z biznesem.
W tym wydarzeniu generalnie chodzi o to, że organizujemy konkurs z zakresu przetwarzania języka naturalnego z różnego rodzaju zadaniami. Z rozwiązaniami tych zadań zgłaszają się zespoły zarówno z nauki, jak i biznesu z firm które się zajmują przetwarzaniem języka naturalnego.
Co ostatnio czytałeś?
Przez ostatni rok głownie się zastanawiałem nad tym jak znaleźć czas na czytanie dłuższych form, ze względu na to, że mam dwójkę małych dzieci i dużo projektów w których biorę udział. Jakoś nigdy się to nie sprawdziło. Mam na myśli, ani czytanie wieczorem, bo wieczorem już po prostu zasypiam, ani czytanie w drodze bo z mojego miejsca zamieszkania akurat nie jeździła komunikacja miejska, więc to też odpadało. Trzeba było jeździć samochodem. W ciągu dnia jest oczywiście praca. Dopiero niedawno zacząłem wstawać wcześnie przed pracą, i wtedy można trochę mieć czasu dla siebie. Być może przygotować się do tej pracy, a być może poczytać. I to jest jakieś tam slot czasowy, gdy udaje mi się wygospodarować około 40 minut, plus przywrócona została komunikacja do mojego miejsca zamieszkania, więc jakieś dodatkowe 15-20 minut mogę jeszcze poczytać w drodze. Z rzeczy, które czytałem ostatnio, które być może można powiązać z tematem Twojego podcastu, to znaczy ze sztuczną inteligencją, czy z analizą danych, to są książki o bieganiu.
Zainteresowałem się bieganiem jakiś czas temu, i czytałem takie książki jak: bieganie metodą Gallowaya, czy bieganie metoda Danielsa, i abstrahując od tego, że to dobre książki o bieganiu dla początkujących, czy dla osób też i bardziej zaawansowanych, to jest tam fajny aspekt ilustrujący projekt związany z analizą danych. Te książki opierają się na długoterminowej analizie wyników różnego rodzaju biegaczy, czy to początkujących, czy zaawansowanych i z tego są wyciągane wnioski. Więc tak, jak w prawdziwym projekcie, mamy identyfikację źródeł danych, zbieranie, czyszczenie i wyciąganie wniosków. W tym przypadku wymagane jest zbieranie danych o tym, jak ludzie biegają, jakie mają czasy, jakie mają tętno w czasie biegu, jaką mają wydolność tlenową.
Później można wyciągnąć ogólne wnioski, które można przedstawić właśnie wszystkim zainteresowanym. Na przykład takie, ile razy warto w ciągu tygodnia biegać, aby osiągnąć jak najwyższą efektywność. Jeśli chcemy do tego podejść minimalistycznie, to 3 dni w tygodniu jest takim złotym środkiem. Osiągamy wtedy bardzo fajne efekty, nie tracąc przy tym zbyt dużo czasu. Także, jeśli ktoś jest zainteresowany bieganiem, to są to dobre książki do poczytania. Oprócz tego, posiadają one bardzo ciekawy wgląd w statystykę sportową, czy analizę danych w kontekście sportowym.
Uwielbiam podejście, w jaki sposób mózg analityczny podchodzi do różnych otaczających nas procesów, jak na przykład bieganie. Mam na myśli aspekt, kiedy te osoby zastanawiają się, w jaki sposób zrobić to najbardziej efektywnie.
Pewnie coś w tym jest, ale zauważmy, że Ci autorzy też mieli takie nastawienie, że warto podejść do tego obiektywnie, a nie na intuicję. Wydaje mi się, że wśród wielu sportowców, czy nawet trenerów było to dominujące podejście.
Dzisiejszym tematem będzie przetwarzanie języka naturalnego, czyli NLP. Proszę o wyjaśnienie, co to jest. Najlepiej na prostych, zrozumiałych przykładach.
Przetwarzanie języka naturalnego, w zasadzie po polsku i po angielsku brzmi groźnie, ale tak naprawdę chodzi o coś bardzo oczywistego. To znaczy chcielibyśmy, aby maszyny mogły analizować te informacje, które im przekazujemy w sposób dla nas najbardziej naturalny, czyli w postaci języka, a nie za pomocą jakichś dziwnych poleceń, czy nawet klikając myszką. Z jednej strony jest to oczywiste, jeśli nie mamy w pamięci tego, jak to jest trudne, czy jakie były porażki do tej pory związane z przetwarzaniem języka naturalnego, natomiast jeśli spojrzymy na taką “popkulturę”, czy literaturę science fiction szczególnie z czasów początku informatyzacji, to właśnie wszyscy myśleli, że będą te maszyny czy roboty i my będziemy sobie z nimi rozmawiać, a one nam będą pomagać. Niestety okazało się, że jest to bardzo trudne z takiego filozoficznego punktu widzenia. Można nawet stwierdzić, że to jest bliskie inteligencji, więc być może nigdy nie uda się nam osiągnąć tego w pełni.
Był taki czas, szczególnie wtedy kiedy nastąpił odwrót od metod sztucznej inteligencji na świecie, że te zagadnienia związane z przetwarzaniem języka naturalnego, zeszły troszkę na drugi plan. Inne podejścia były stosowane bardziej, z zapisywaniem eksperckiej, lingwistycznej wiedzy w postaci reguły czy innych zasobów lingwistycznych. W każdym razie w dzisiejszych czasach przetwarzanie języka naturalnego wróciło na świecznik, ponieważ okazało się, że możemy to robić lepiej ze względu na lepsze algorytmy, ze względu na większą ilość dostępnych danych, ale też ze względu na to, że mamy dostępne szybsze maszyny. Przetwarzanie języka naturalnego okazało się przydatne w biznesie, więc trafiło na pierwsze strony gazet. Mówi o tym coraz więcej osób, i słusznie, bo różnego rodzaju organizacje mogą skorzystać na tym że, na przykład stosują właśnie te metody w swojej firmie do optymalizacji jakiegoś rodzaju procesu, czy po prostu do zrobienia czegoś, czego nie mogli zrobić wcześniej.
Jakie problemy biznesowe można rozwiązać wykorzystując NLP?
To co pewnie przychodzi od razu do głowy, i co wiele firm wdrożyło już dosyć dawno temu, to klasyfikacja dokumentów. Jest to jedno z najstarszych zastosowań przetwarzania języka naturalnego. Jeśli mówimy o obsłudze klienta, i klienci nam wysyłają różnego rodzaju maile, pisma, to fajnie byłoby je automatycznie pokategoryzować, co też widzimy w wielu różnego rodzaju formularzach zgłoszeniowych, gdzie jest taki combo box i musimy wybrać tę kategorię w której my sami umieszczamy ten mail. Jest to próba zmuszenia użytkownika, aby robił to ręcznie. W wielu firmach robi się to automatycznie, więc ten email później trafia do właściwego działu, do właściwej osoby. Innym przykładem jest klasyfikacja spamu. Też jest to mniej oczywiste, ale możliwe zastosowanie. Kolejnym są, na przykład procesy rekrutacyjne. Wiele firm ma w tej chwili taki problem, że spływa mnóstwo CV (może akurat w dzisiejszym dniu jest ich troszeczkę mniej ze względu na rynek pracownika, bardziej niż pracodawcy), ale w ogólności jest problem z tym, że mamy generalnie dużo chętnych na różnego rodzaju stanowiska, oraz koszt tej rekrutacji polegający na tym, że trzeba przejrzeć te CV i później się umówić na rozmowę, i zdecydować czy to jest właściwy kandydat, jest duży.
Więc jeśli możemy w jakiś sposób zrobić ranking, już na poziomie CV, automatycznie i biorąc pod uwagę obiektywne cechy, to byłoby świetnie. Prace nad tym są prowadzone, i tutaj duży udział ma przetwarzanie języka naturalnego, ponieważ musimy zrozumieć co tam jest napisane w tym CV i dostosować to do potrzeb. Innym przykładem stosowanym obecnie jest wykrywanie wzmianek o marce w mediach. Jeśli, na przykład jesteśmy jakąś organizacją, która chce wiedzieć co się o niej mówi, możemy wtedy automatycznie uzyskać tę wiedzę. Oprócz tego, możemy dalej identyfikować wydźwięk tych wzmianek, czy jak inni mówią, identyfikować sentyment, więc przydaje się to w marketingu ponieważ wiemy, czy mówią o nas dobrze, czy źle i w którym miejscu możemy się włączyć w tę dyskusję, albo może nam się zapalić jakieś czerwone światełko, jeśli w wielu miejscach wiele osób mówi o nas źle, to wtedy coś jest nie tak. Kolejnym zastosowaniem może być ekstrakcja informacji z sieci czy z innych źródeł, kiedy chcemy się dowiedzieć czegoś o produktach na rynku z naszego obszaru działalności, lub informacji o produktach konkurencji. Innymi słowy, zdobyć przewagę konkurencyjną dzięki dostępowi do informacji, której być może inni nie mają. W ten sposób, że właśnie będziemy je zbierać, i będziemy potrafili zrobić z tego ustrukturyzowaną informację z ogólnego tekstu, który jest gdzieś w internecie, czy prezentuje swoje usługi, my to jesteśmy w stanie zebrać w postaci tabelki i porównać, na przykład z naszymi usługami.
Czymś co się coraz częściej pojawia na stronach internetowych są chatboty, czyli to że możemy sobie porozmawiać nie z żywym człowiekiem, tylko z automatem, który nakierowuje klienta we właściwe miejsce, czy wręcz go obsługuje, lub nawet odpowiada na pytania. I tutaj mamy różnego rodzaju mniejsze czy większe sukcesy. Czasem to działa lepiej, czasem gorzej, ale faktem jest, że dzisiaj te chatboty są lepsze niż były dawno temu, więc stąd popularność tych rozwiązań. Tego rodzaju właśnie obsługa klienta pojawia się również w automatycznych systemach obsługi (telefonicznych), gdzie już mamy do czynienia, na przykład z głosem, więc musimy nie tylko przetwarzać tekst, ale jeszcze wcześniej zrobić przetwarzanie głosu na rozpoznanie mowy i dopiero przetworzyć na tekst.
Chciałem dodać, że miałem okazję być obserwatorem jednego z projektów, w którym chodziło o to, że do firmy spływało dużo maili sprzedażowych i osoby które zajmują się sprzedażą nie są w stanie na tyle szybko obserwować, który email jest w tej chwili najważniejszy, żeby jak najszybciej odpowiedzieć. Tylko tutaj nie chodziło o to, że ktoś narzekał na tą firmę, tylko o to żeby powiedzieć czy możesz szybko zareagować na ten mail, czy nie. Zastosowano taki filtr, dzięki któremu otrzymywano informację: okej zareaguje na tego maila, bo inaczej stracę klienta, a ten z kolei możesz zignorować. Problem techniczny jest ten sam, ale zaadoptowany stricte pod branżę biznesową.
Teraz chciałabym przejść przez te etapy, co tam się dzieje pod spodem, jeżeli chodzi o przetwarzanie języka naturalnego, bo z jednej strony nie chcę wchodzić teraz szczegóły, ale mniej więcej to jest tak, że mamy tekst. Co się, dzieje później z tym tekstem, krok po kroku, co mamy na wejściu i co na wyjściu?
W dużej mierze zależy to od zadania, które realizujemy. O typowych zadaniach w NLP można powiedzieć, że zwykle zaczynamy od nieustrukturalizowanego tekstu. Mamy ciąg znaków, i nie jest to do ugryzienia bezpośrednio metodami ogólnie informatycznymi, czy tym bardziej metodami uczenia maszynowego. W jakiś sposób musimy przygotować te dane, żeby one były na tyle ustrukturyzowane i nadawały się do dalszego przetwarzania. Można tutaj też mówić o tym, jak to zwykle przebiega w etapach wstępnych w procesach data miningowych. Musimy te dane pozyskać, oczyścić, i tak dalej. Uznajmy, że mamy tekst na tyle dobry, że chcemy go dalej analizować.
Zwykle pierwszym krokiem jest tokenizacja tego tekstu, to znaczy dzielimy go sobie na logiczne części, i takimi logicznymi częściami w przypadku tekstu jest podział na słowa, czy podział na zdania. Już samo to niekoniecznie musi być trywialne, bo co zrobić ze słowami, które są połączone myślnikiem? Co zrobić ze skrótami które mają kropkę na końcu? Czy to jest koniec zdania, czy to nie jest koniec zdania? Czy jeśli jakieś słowo zaczyna się z wielkiej litery, to czy jest to początek zdania, czy to nie jest początek zdania?
Oczywiście, to wszystko da się rozwiązać, natomiast ten pierwszy etap tokenizacji widać że jest nietrywialny. Poza tym, możemy tutaj mieć w tym tekście jeszcze jakieś dziwne emotikony, czy nawet błędy ortograficzne, albo ten tekst może być ułożony w sposób dziwny graficznie. Załóżmy, że ktoś pisał na Twitterze, gdzie używał skrótów oraz nieprawidłowych form, a do tego dawał enter po każdej literze, żeby mu się to ułożyło w pionie. Można to też potraktować jako wstępny etap czyszczenia tekstu, żeby doprowadzić go do formy kanonicznej. Później podejmujemy tokenizację. Następnie następuje znajdowanie form podstawowych słów. To znaczy, chcemy wiedzieć formą jakiego słowa jest to słowo które występuje w tekście, ponieważ to daje nam informację semantyczną i wiemy o jakie słowo konkretnie chodziło w słowniku. Jest to przydatne w wielu zastosowaniach.
Sama lematyzacja już jest trudna. Ze względu na niejednoznaczność w języku, często nie wiemy z jakiej formuły słowa jest dane słowo, czyli jest wiele możliwości i stąd stosuje się metody uczenia maszynowego, żeby na podstawie kontekstu stwierdzić co to było za słowo. Czasem też stosuje się uproszczoną metodę, czyli stemming zamiast lematyzacji, szczególnie w zadaniach ekstrakcji informacji, czy odpowiadania na zapytania. Niekoniecznie musimy wiedzieć jakiego słowa jest formą ten właśnie wyraz który widzimy. Wystarczy nam tylko mieć taki rdzeń, który będzie się łatwo wyszukiwał w obrazie w której są te słowa. Mamy je też skrócone do rdzenia, i mimo że te rdzenie nic tak naprawdę nie znaczą, to przynajmniej jesteśmy w stanie się uniezależnić od odmiany słów i znajdować słowa niezależne od tego w jakiej formie gramatycznej występują.
Etapy tokenizacji, czyszczenia czy znajdowania form podstawowych często określa się jako etap normalizacji tekstu, ponieważ dostajemy w tym momencie coś, co jest już ustrukturyzowane. Mamy to podzielone na logiczne części, wiemy jakie mniej więcej są to słowa i możemy coś z tym dalej robić.
Kolejnym etapem, który też często występuje jest znakowanie morfosyntaktyczne. Jest to już konkretne zadanie w NLP. Polega ono na stwierdzeniu, jaka jest forma gramatyczna słowa, czyli jaka jest to odmiana, jaka klasa gramatyczna. Na przykładzie, czy to jest rzeczownik czy czasownik, i czy to jest czas przeszły, teraźniejszy, przyszły, jaki rodzaj, jaka osoba, i tak dalej. Są to informacje które możemy wykorzystać dalej. Następnie, chcąc zastosować metody uczenia maszynowego na tym tekście, będziemy musieli przetworzyć te informacje które mamy do tej pory, do postaci wektorowej. A więc możemy sobie reprezentować, na przykład ten tekst jako wektor zer i jedynek, gdzie jedynka stoi w tych miejscach wektora dla których dane słowo występuje w tekście.
Robimy sobie jakiś słownik, na przykład 10000 słów, i jeżeli dane słowo występuje w tekście, zostawiamy tą jedynkę, jeśli nie występuje, to wtedy zero. Nazywa się to One Hot Encoding. Może być też jakiś “Bag of Words”, czyli z jaką krotnością dane słowo występuje w tekście. To są oczywiście bardzo proste reprezentacje, które w praktyce się bezpośrednio nie stosuje, ale chcąc zilustrować jaką drogę musieliśmy przejść od ciągłego tekstu, do reprezentacji którą musimy przygotować żeby móc ją wykorzystać w jakiejś metodzie uczenia maszynowego, to widać że musimy taką ustrukturyzowaną informację przygotować z ciągu znaków.
Przenoszenie języka naturalnego na dzień dzisiejszy (listopad 2018) zawiera się na dużym obszarze, ma długą historię, oraz odnosi sukcesy. Tylko to jest taka malutka gwiazdka, która dość często jest pomijana. Domyślnie, jak mówi się o tych historiach sukcesu, to mamy na myśli język angielski. A jak jest z językiem polskim?
Z językiem angielskim jest zwykle lepiej. Po pierwsze dlatego, że dużo więcej ludzi nad nim pracuje. Jest to jednak język, którym oczywiście posługuje się więcej osób, ale też i zainteresowanie tym językiem jest większe z racji tego, że większość świata zna angielski i w związku z tym jest dużo więcej danych po angielsku. Jeżeli jest więcej danych, to mamy się na czym uczyć, oraz mamy na czym testować, stąd też wyniki są lepsze. Wreszcie, w grę wchodzi wewnętrzna złożoność języka, która odgrywa ważną rolę. Pod względem możliwości przetwarzania automatycznego, język angielski jest chyba jednak łatwiejszy niż język polski. Dlatego, że język polski jest przykładem języka fleksyjnego, to znaczy że mamy tutaj bardzo wiele różnych odmian. Na przykład mnogość przypadków, słowa są budowane w ten sposób, że mają końcówki morfosyntaktyczne, które stanowią właśnie o tym, że możemy rozpoznać ich interpretację gramatyczną. W sytuacji kiedy chcemy się uczyć z jakiegoś korpusu językowego, to stanowi problem, ponieważ jeżeli jedno słowo może występować w tak dużej mnogości różnych form to mamy mniej przykładów uczących, które możemy wykorzystać do nauki, na przykład trenowania modeli językowych.
Czyli jeśli bierzemy pod uwagę słowa odmienione, nie dokonujemy ich lematyzacji, tylko bierzemy każde słowo w takiej formie, jakiej ono występuje. Mamy wtedy do czynienia z siedmioma przypadkami w różnych liczbach i rodzajach. To powoduje, że wielokrotnie mniej będzie tych przykładów na których możemy ten model językowy wytrenować. Z jednej strony mamy po prostu mniej danych, ponieważ mniej ludzi mówi po polsku, a z drugiej strony w tym mniejszym korpusie językowym jest jeszcze mniej przykładów na których możemy się de facto czegoś nauczyć. Dalej ten problem komplikuje kwestia homonimii, czyli tego że mamy wieloznaczność słów, które mają tą samą formę ortograficzną, na przykład mamy zamek jako budynek, czy zamek u drzwi.
Mamy admirała, który może być motylem, a może być też rangą w marynarce. Każde z tych słów ma własną odmianę, która częściowo się pokrywa, a częściowo nie, więc powoduje to że jeszcze trudniej nam zidentyfikować jakie jest to rdzenne słowo, jaki jest ten lemat. Jeśli chcemy uczyć model na podstawie konkretnych form, to te lematy i wzorce odmiany będą się przeplatać, co jakby nie ułatwia potem wykorzystania tego modelu w praktyce. Innym przykładem są trudności języka polskiego. Występuje w nim swobodny szyk zdania, czyli możemy wypowiedzieć to samo zdanie na wiele różnych sposobów, nie tylko, np. Jan kocha Anię, ale możemy powiedzieć, że Anię kocha Jan.
Niektóre z tych wzorców są być może dziwne, ale jeśli weźmiemy pod uwagę, na przykład poezję, to jest to całkowicie dobre zdanie i może wystąpić w korpusie językowym. Natomiast język angielski jest dużo bardziej usztywniony pod tym względem. To powoduje praktyczny problem z przetwarzaniem języka polskiego, bo takie metody które zależą właśnie od kolejności słów w zdaniu, aby zrozumieć ich sens, tutaj nie bardzo się nadają dla polskiego. Przykładem mogą być ukryte modele Markowa, które biorą pod uwagę sekwencyjność od lewej do prawej. Tutaj one będą miały mniejsze znaczenie i to przekłada się bezpośrednio na złożoność obliczeniową.
Jeśli weźmiemy pod uwagę fleksję w języku polskim, to zadanie oznakowania morfosyntaktycznego, kiedy chcielibyśmy zidentyfikować interpretację gramatyczną danego słowa jest o rząd albo o dwa rzędy wielkości bardziej skomplikowane dla polskiego, niż dla angielskiego. Dzieje się tak dlatego, że opisanie wszystkich możliwych form gramatycznych słów w języku angielskim wymaga utworzenia taxetu, czyli takiego zbioru znaczników których do tego używamy i zawiera około 30, czy może 100, czy 200 takich znaczników. Dla polskiego teoretycznie możliwych znaczników jest ponad 4000, a w praktyce może i trochę mniej (około 1000, 2000). Jak już mówimy bezpośrednio technicznie, jeśli klasyfikator ma podjąć decyzję danego słowa jaki to jest znacznik, to będzie on miał 10 razy więcej możliwości, a to jak wiadomo przekłada się bezpośrednio na zwiększenie trudności działania takiego klasyfikatora o ten właśnie rząd wielkości.
Słyszałem o dwóch wymiarach, jeżeli chodzi o wyzwania. Pierwszy to złożoność języka, i tutaj akurat nic nie poradzimy, bo język po prostu jest złożony i akceptujemy to, a drugi wymiar to ilość osób jaka pracuje nad rozwiązaniem tego problemu, i tutaj pytanie: jakie instytucje i ośrodki badawcze zajmują się na poważnie NLP dla języka polskiego?
Na pewno ośrodek w którym sam pracuję, to znaczy Instytut Podstaw Informatyki w Warszawie. Również na pewno Politechnika Wrocławska, gdzie jest silna grupa zajmująca się przetwarzaniem języka polskiego. We Wrocławiu jest Uniwersytet Wrocławski, który współpracuje z politechniką. Mamy też Uniwersytet Łódzki, w którym prawdopodobnie trwają prace związane z przetwarzaniem mowy. Jest wiele projektów w ośrodku przetwarzania informacji, czy też w Polsko-Japońskiej Akademii Technik Komputerowych.
W dużej mierze są to instytucje, które funkcjonują w ramach konsorcjum Clarin. Jest to konsorcjum, które już od kilku lat pracuje nad przygotowaniem narzędzi do przetwarzania języka w różnych krajach i różnych języków narodowych. Więc to jest ważna inicjatywa, żeby nie tylko ten angielski królował. W ramach tego konsorcjum powstało wiele narzędzi, szczególnie z myślą o humanistach, o osobach które korzystają z tych narzędzi na zasadzie usługowej, to znaczy nie są to informatycy czy programiści, ale lingwiści, twórcy słowników, tłumacze którzy chcieliby mieć narzędzia, które im po prostu pomogą w codziennej pracy.
Przez samo to, że są dla języka lokalnego, regionalnego danego kraju, to nie cieszą się takim zainteresowaniem dużych firm. Mogą też być bardziej niszowe, ponieważ innego narzędzia potrzebuje twórca słownika, a innego tłumacz, innego recenzent, czy krytyk literacki. Więc to konsorcjum ma dużą wartość, żeby tego rodzaju narzędzia przygotowywać. Firmy zajmujące się zadaniami związanymi z przetwarzaniem języka polskiego, traktują ten rynek jako bardziej istotny dla siebie. Wiemy, że wielu takich asystentów, którzy są obecnie modni nie działa za dobrze, czy w ogóle nawet nie działa dla języka polskiego, ale prace trwają, więc takie firmy, jak Samsung, Amazon, czy Google nad tym pracują. Mamy też mniejsze firmy, czy polskie, czy oddziały poszczególnych firm zagranicznych które się tym zajmują, np. FindWise, Lingaro czy Applica, ale na pewno jest ich dużo więcej.
Jaki jest tego cel? Czy jest to bardziej akademickie badanie, czy też celem jest zastosowanie biznesowe, żeby faktycznie wynikiem pracy nie była kolejna publikacja, która leży gdzieś na szafce, tylko coś, co potrafi rozwiązać konkretny problem. Jak to odczuwasz?
Być może wciąż tak się kojarzą prace, które odbywają się w ośrodkach akademickich, ale to jest właśnie też coś, co mnie najbardziej interesuje. To znaczy, żeby z jednej strony pokazać w środowisku naukowym, jakie są istotne problemy w biznesie, i odwrotnie – pokazać biznesowi, że tutaj w nauce powstają też ciekawe rzeczy. Wydaje mi się, że już w tej chwili, w dużej mierze ta wymiana jest większa niż była kiedyś, i świadomość jest również większa niż kiedyś, i jest też konieczność korzystania wzajemnie ze swoich dokonań. Na przykład to, co w dużej mierze powstaje w zakresie przetwarzania języka naturalnego w ośrodkach akademickich to są zasoby. Zasoby w kontekście języka rozumiemy jako korpusy językowe, rozumiemy jako słowniki i różnego typu ontologie. Wiele tych zasobów nigdy by nie powstało w firmie prywatnej dlatego, że sam ten zasób bezpośrednio nic nie optymalizuje, nie przynosi przychodu, natomiast jest zupełnie podstawowym zasobem, dzięki któremu można, na przykład uczyć różnego rodzaju modele, czy budować inne rozwiązania, które z tych zasobów korzystają.
Firmy, które korzystają z przetwarzania języka polskiego z takich zasobów muszą, czy będą musiały skorzystać. To co powstaje w obrębie nauki jest udostępniane najczęściej w ogromnej większości na wolnych licencjach, przez co prawdopodobnie wiele firm posiada własne korpusy, ale są one ich prywatną własnością. Każdy ma własne, lokalne zasoby i posiada rolę miejsca w którym, po pierwsze robi się badania podstawowe, czyli te badania które są najbardziej długofalowe, najbardziej długoterminowe, te które przynoszą efekt za kilka lat, a nie za pół roku. Jest to coś, co nadal w wielu firmach nie występuje, ponieważ jeszcze mało firm myśli o takim horyzoncie inwestycyjnym w Polsce, a po drugie, czy tego rodzaju zasoby językowe są przydatne zarówno w nauce, jak i w biznesie.
Fajnie to ująłeś. Jeżeli chodzi o zasoby to faktycznie, przynajmniej w Polsce ciężko wyobrazić sobie firmę, która chciałaby wziąć się za przygotowanie podobnych słowników albo korpusów i potem podzielić się ze wszystkimi. Przydałoby się żeby ktoś, albo jakaś organizacja lub uczelnia podjęła się tego wyzwania. Bardzo to popieram i zadam pytanie: jakie zasoby są już teraz dostępne, ale również chciałbym się bardziej skupić na temacie, co już udało się osiągnąć w obszarze NLP i języka polskiego?
Jeśli chodzi o przetwarzanie języka naturalnego, zwykle kategoryzuje się to na różnego rodzaju zadania. Trudno powiedzieć, jaka ogólnie jest dokładność przetwarzania polskiego, z racji na aspekt. Można podzielić ją na lematyzację czy znakowanie morfosyntaktyczne. Natomiast są też inne jak, na przykład parsowanie zależnościowe, czy warstwowanie składniowe w którym chodzi o to, żeby poznać strukturę składniową zdania, czyli wiedzieć gdzie mamy podmiot, gdzie mamy orzeczenie, co określa co, aby móc wykorzystać tę informację później, na przykład w odpowiadaniu na pytania o co konkretnie chodzi. Innym przykładem zadania jest rozpoznawanie nazw własnych. Jeśli, na przykład mamy firmę która ma nazwę x,, to chcemy zidentyfikować w których wystąpieniach tego słowa x ktoś mówił o tej marce, a w których nie. Generalnie chodzi o to, żeby móc stwierdzić co jest nazwą własną, a co nią nie jest. Czyli może być to nazwa osoby (nazwisko i imię), może być nazwa organizacji. Jeśli mówimy o nazwach, to przez to często się rozumie wyrażenia temporalne czyli, na przykład środa, czwartek, czy styczeń, czy 15 stycznia o takiej godzinie.
To się właśnie bardzo przydaje w zadaniach ekstrakcji informacji, czy odpowiadania na pytania. Ktoś nam zadaje w takim chatbocie pytanie, czy państwa firma będzie otwarta 12 listopada. Musimy zidentyfikować, że 12 listopada to jest właśnie wrażenie temporalne i jeszcze z kontekstu ogólnego wywnioskować, że to będzie w roku 2018, z racji tego, że to jest rok bieżący. Jakimś innym przykładem zadania jest ujednoznacznienie sensu słów, czyli na przykład wspomniany wcześniej zamek, który jest albo budynkiem, albo możliwością zamykania drzwi. I teraz musimy zidentyfikować w którym znaczeniu to słowo wystąpiło. Możemy się tego dowiedzieć analizując kontekst, czyli jakie słowa wystąpiły w okolicy tego słowa. Teraz właśnie te zadania podstawowe, o których wspomniałem są oczywiście już podejmowane od wielu lat dla języka polskiego i lematyzację potrafimy robić, chociaż wciąż nie idealnie. Aktualna dokładność lematyzacji to ok. 95%. Te miary, które będę podawać pochodzą z ewaluacji na podstawowym korpusie dla języka polskiego, który się nazywa “Narodowy Korpus Języka Polskiego”. Ma on ponad 1000000 segmentów notowanych ręcznie przez lingwistów którzy sami oznaczyli jaka jest prawidłowa odpowiedź, czyli w tym przypadku jaki jest właściwy lemat.
Następnie my sprawdzamy, czy ta metoda automatyczna dobrze wykonuje znakowanie morfosyntaktyczne. Dokładność w tym przypadku wynosi około 94 – 95%. Parsowanie zależnościowe to 90%, czy rozpoznawanie nazw własnych też około 85%. To oczywiście nie są idealne wyniki, natomiast prace trwają i wspomniany wcześniej konkurs PolEval też pomaga w tej kwestii, aby nowe osoby zaczęły się interesować tymi zadaniami, czy też firmy ujawniły swoje rozwiązania które do tej pory były stosowane wewnętrznie. Ja jestem bardzo zadowolony z dotychczasowych edycji PolEvalu i tego, że w wielu z tych zadań udało się poprawić wyniki właśnie dzięki temu, że zostało to ogłoszone jako oficjalny konkurs i każdy mógł zgłosić swoje rozwiązanie.
Bardzo ciekawa inicjatywa. Tak jak wspomniałeś, aspekt psychologiczny również wchodzi w grę, ponieważ możliwość wygrania konkursu jest niezłym czynnikiem motywującym. Mógłbyś podać więcej informacji na temat edycji 2017 oraz tegorocznej, 2018? Co udało się osiągnąć i jakie są plany na kolejną edycję? Mam nadzieję, że się odbędzie.
Aktualnie pracujemy nad kolejną edycją. Wszystko zaczęło się w 2017 roku. Był to pomysł doktora Macieja Ogrodniczuka z naszego Instytutu, gdzie razem zorganizowaliśmy pierwszą edycję. Polegała ona na tym, że zaproponowaliśmy przygotowanie różnego rodzaju zadań w ramach przetwarzania języka polskiego. Wtedy tymi zadaniami było znakowanie morfosyntaktyczne i zadania z analizą sentymentu, które zostały przygotowane przez doktora Aleksandra Wawera, również z naszego Instytutu. Wiele zespołów zgłosiło się z rozwiązaniami obu tych zadań, i co było uderzające w tym roku, to że wszyscy zauważyli istotność głębokich sieci neuronowych i reprezentacji wektorowych języka naturalnego w kontekście polskiego. Jeśli chodzi o angielski, to ten boom już był troszeczkę wcześniej.
Dla polskiego to przyszło nieco później, ale mimo wszystko w roku 2017 udało się między innymi pobić dotychczasowe base line’y dla metod znakowania morfosyntaktycznego, i o ile kiedyś najlepszym wynikiem było około 90 – 91% dokładności, to dzięki wykorzystaniu głębokiego uczenia najlepszy tager miał 94,5% dokładności, czyli to było 3 punkty procentowe lepiej niż wcześniej.
W 2018 roku mieliśmy zadania związane z parsowaniem zależnościowym, z rozpoznawaniem jednostek nazewniczych i z budowaniem modeli językowych. W kontekście rozpoznawania jednostek nazewniczych zgłoszona została metoda, która pobiła dotychczasowy base line, i znowu jest to sposób korzystający z metody głębokiego uczenia, także bardzo się cieszymy z tego, że właśnie to co było do tej pory dzięki PolEval’owi okazało się, że już jest tylko dawnym base linem, ponieważ mamy nowocześniejsze metody i udostępniony został algorytm/kod tego rozwiązania. Także może to być wykorzystywane przez wiele innych zespołów do budowania jeszcze lepszych metod.
Aktualnie pracujemy nad PolEval 2019. Mogę zdradzić, że chcemy przesunąć termin, bo tak jak do tej pory konkurs właściwy odbywał się około czerwca, lipca co być może powodowało, że część osób nie mogła uczestniczyć z powodu okresu wakacyjnego, więc teraz chcemy żeby ten główny wysiłek osób, które zgłaszają swoje rozwiązania był w okolicy lutego, czyli rozpoczęcia nowego semestru akademickiego. Być może część osób realizujących projekty na uczelniach będzie mogła w tym uczestniczyć, i planujemy między innymi zadania związane z wyrażeniami temporalnym, czy zadania związane z lematyzacją, także zapraszam do tego, aby śledzić stronę poleval.pl, gdzie niedługo pojawią się szczegóły. A jeśliby ktoś miał ochotę, na przykład zgłosić własne zadanie, to znaczy być takim organizatorem zadania, czy osobiście czy firmowo, to zapraszamy do kontaktu i do współpracy. Wierzymy w to, że zadania powinny być zgłaszane z wielu różnych stron i co roku powinno być ich więcej.
Bardzo mnie cieszy, że istnieje taka inicjatywa. Zachęcam, jak ktoś ma jakiś pomysł, to naprawdę warto spróbować. Taka analogia przyszła mi do głowy, że jak ImageNet pojawił się w roku 2010, w 2012 był ten moment przełomowy kiedy pojawiła się sieć AlexNet i Computer Vision wtedy się odmienił. PolEval, jest co prawda takim naszym reprezentantem, tu w Polsce i z tego co widać, to robi taką lokalną rewolucję jeśli chodzi o łączenie tych metod jak, np. uczenie głębokie, itd. Ale do tego czasu nie ma firm, które potrafią to stosować, chyba że są takie jednostki, które nie do końca się do tego przyznają. Więc cieszę się, że ta inicjatywa się pojawiła i macie ambicje, żeby to dalej kontynuować.
Dzięki wielkie. Ja też mam nadzieję, że będzie to inicjatywa coroczna i coraz więcej osób będzie w to zaangażowanych. My tutaj coraz bardziej jesteśmy skromnymi koordynatorami, a tak naprawdę największy wysiłek polega na przygotowaniu zadań, to znaczy przygotowaniu opisu takiego zadania, struktury jak to będzie ewaluowane, na jakich danych będziemy uczyć te metody, na jakich testować. W przygotowanie zadania wchodzi wiele innych czynników, aby było ono obiektywne, żeby dawało wymierne rezultaty, które da się dobrze porównać i żeby były one istotne w dalszych pracach nad danym zadaniem.
Wspomniałeś o zasobach, które przygotowywane są w ośrodkach akademickich i chciałbym żebyś teraz je przedstawił. Z drugiej strony wiem, że osoby które dopiero z tym zaczynają, nie wiedzą gdzie dokładnie szukać. Przedstaw proszę możliwe zasoby lub narzędzia, które warto znać jeśli chciałoby się zająć NLP w języku polskim.
Myślę, że takim podstawowym zasobem są korpusy. Nie jest to tylko zbiór tekstów zebranych według jakiegoś klucza, ale też najczęściej są to teksty anotowane to znaczy te, które zawierają dodatkową warstwę informacji, na przykład informacje o interpretacji gramatycznej poszczególnych słów w tych tekstach, czy informacje składniową. Więc o tym jak są zbudowane zdania, czy w warstwie sentymentu, czy w warstwie jednostek nazewniczych, czy w warstwie sensu słów, i tak dalej. Wynikiem zastosowania metod rozwiązujących te problemy jest jakaś warstwa anotacji na korpusie, która może być utworzona automatycznie za pomocą tych metod, a może być również przygotowana ręcznie przez ludzi, przez lingwistów. Jeśli te warstwy są przygotowane przez lingwistów, to takie dane służą do tego żeby trenować metody uczenia maszynowego, i to jest właśnie ten kluczowy zasób, którego zawsze jest za mało i który wszystkim jest potrzebny żeby zrobić coś sensownego. Bo jeśli nie mam korpusu anotowanego w warstwie, na przykład morfosyntaktycznej, to trudno mi zrobić dobry …, który będzie to robił dla innych tekstów nieanotowanych.
Takim podstawowym zasobem są anotowane korpusy. Największym korpusem jest nadal Narodowy Korpus Języka Polskiego. Ma on dokładnie 1000200 segmentów anotowanych w różnych warstwach, ale jest też wersja miliardowa, anotowana automatycznie i ona może już mniej nadaje się do tego, żeby uczyć na niej inne metody uczenia maszynowego, ale przydaje się lingwistom żeby szukać w niej informacji, jako taki materiał bazowy czy porównawczy. I takie korpusy ma też Politechnika Wrocławska. Są też korpusy bardziej dziedzinowe, na przykład korpus parlamentarny, czyli korpus zbierany z zapisów posiedzeń w parlamencie, czy korpusy diachroniczne, czyli takie korpusy które mają określony czas zbierania tekstów, na przykład korpus XIX wieku, czy korpus tekstów barokowych. Dzięki nim możemy prowadzić analizy, czy uczyć się czegoś o języku danego okresu. Zasobami innego rodzaju są słowniki. Słowniki te należy rozumieć szeroko. Nie są to takie słowniki do jakich jesteśmy przyzwyczajeni w formie książkowej czy elektronicznej z których najczęściej korzystamy, tylko bardziej, na przykład ontologie, takie jak Słowosieć, które zawierają powiązania pomiędzy różnymi słowami, mają informacje o znaczeniach poszczególnych słów, o tym jaki jest typ ogólniejszy danego słowa.
Na przykład ogólniejszym typem dla psa jest ssak. Więc takie zasoby też pozwalają nam zrobić przetwarzanie automatyczne, ponieważ możemy mieć jako cechę właśnie taki ogólniejszy typ względem jakiegoś konkretnego słowa, co nam często uogólnia wnioski w naszym modelu. Innym przykładem zasobu jest słownik gramatyczny języka polskiego, który zawiera wszystkie możliwe prawidłowe odmiany słów. Jeśli chcemy zrobić lematyzację, albo znakowanie morfosyntaktyczne, określić jaka jest interpretacja danego słowa, to najpierw sięgamy do słownika, który nam mówi jakie są możliwości. To znaczy, jeśli widzimy formę “admirałowi”, to może być to celownik takiego i takiego słowa, czy motyla, czy admirała w marynarce. Mamy też takie zasoby, jak wytrenowane modele, na przykład wytrenowane na dużym zbiorze (miliardowym korpusie Narodowego Korpusu Języka Polskiego) czyli, tak zwane embeddingi, (dobrym tłumaczeniem tego słowa może być “zanurzenie”), które pozwalają szybko wykorzystać już istniejący wytrenowany model do tego, aby zrealizować jakieś swoje zadanie związane z NLP, bez konieczności trenowania tego samodzielnie.
Super! Bardzo dziękuję za wymienioną listę. Wszystko będzie w notatkach. Ostatnie pytanie na dzisiaj: jak można Ciebie znaleźć w sieci, kiedy ktoś chciałby się z Tobą skontaktować?
Zapraszam do kontaktu przez LinkedIn, czy na Twitterze @lkobylinski. W związku z tym, że zaprosiłeś mnie do podcastu, to mogę się pochwalić, że też jestem współprowadzącym podcastu, który się nosi nazwę “Stacja IT”. Pod adresem stacja.it również można znaleźć podcast, który ja z kolei prowadzę, i który mówi o zagadnieniach związanych z IT i możliwych ścieżkach kariery. Może nie jesteśmy tak bardzo sprofilowani na sztucznej inteligencji, ale wiele tych tematów również się tam pojawia.
Dziękuję Ci bardzo za znalezienie czasu i podzielenie się wiedzą, jak również za to, że pomagasz oraz współorganizujesz takie przedsięwzięcie jak PolEval.
Dziękuję za zaproszenie.
Jeden Komentarz
Maciej Gawinecki
PolEval ma jeszcze jeden plus. Pozwala porównać wydajność polskich narzędzi do NLP, bo ustala wspólne kryteria oceny, dane wejściowe, wyjściowe, etc. Coś, czego potrzebuje każda dziedzina.