Jak uczymy algorytmy mówić? Wszystko o NLP
18.07.2024
W tekście solidna porcja informacji na temat przetwarzania języka naturalnego. Dowiedz się, dlaczego to dziedzina przyszłości.
NLP (ang. Natural Language Processing) czyli przetwarzanie języka naturalnego to dziedzina na pograniczu informatyki i językoznawstwa. Ma ona bardzo duże znaczenie w tworzeniu technologii wykorzystujących sztuczną inteligencję oraz rozwiązań w zakresie Intelligent Assistance (inteligencji asystującej człowiekowi). NLP pełni ważną rolę w komunikacji na linii człowiek-technologia. Im lepiej algorytmy i programy są w stanie przetwarzać języki naturalne, tym bardziej stają się intuicyjne w obsłudze i przyjazne użytkownikowi. W jaki sposób umożliwiamy oprogramowaniu naukę ludzkiego języka i jakie kluczowe wyzwania składają się na NLP? O tym wszystkim piszemy w kolejnych akapitach.
Przetwarzanie i synteza mowy
To bardzo istotny zakres NLP, który znajduje zastosowania na wielu polach — w automatycznych tłumaczach głosowych, botach posługujących się głosem i syntezatorach. Podstawowym zadaniem przetwarzania mowy jest zamiana sygnału dźwiękowego na konkretne dźwięki mowy (tzw. fonemy), a syntezy — zamiana tekstu pisanego na dźwięk. Dochodzą do tego poboczne aspekty komunikacji głosowej, takie jak akcent, ton głosu, emocje, indywidualne cechy mówiącego, a także rola pauz w mowie (np. pauzy między wyrazami w jednym zdaniu są dużo krótsze niż pauzy między zdaniami). Przetwarzanie mowy jest złożoną dziedziną — łączy wiedzę w zakresie informatyki, akustyki i fonologii.
Segmentacja tekstu
Kolejny filar NLP stanowi segmentacja tekstu, czyli jego podział na mniejsze części, nie tylko wyrazy, ale także zdania składowe czy poszczególne wyrażenia skoncentrowane wokół jednego tematu. Wbrew pozorom nie jest to wcale łatwe zadanie, zwłaszcza w przypadku tekstów pisanych językiem potocznym. Segmentacja to bardzo ważny proces, ponieważ odpowiedni podział tekstu na części to pierwszy krok do jego analizy na dalszych poziomach (składniowym, znaczeniowym). Dzięki segmentacji możliwe jest dokonywanie automatycznych streszczeń, podsumowań, wyodrębnianie punktów, a także konkretnych obszarów tematycznych.
Analiza składniowa
Choć termin analiza składniowa nie brzmi szczególnie fascynująco i kojarzy nam się z rozbiorem zdania na lekcjach języka polskiego, to jednak w przypadku NLP stanowi bardzo ważny i ciekawy aspekt. Żeby to zrozumieć, musimy przypomnieć sobie, czym właściwie jest składnia. Otóż składnia to nic innego jak reguły łączenia wyrazów, a zatem to właściwie cała logika danego języka. Dopiero rozumiejąc tę logikę algorytm jest w stanie generować i rozumieć zdania, a zatem skutecznie porozumiewać się w danym języku. W jaki sposób uczyć składni algorytmy? Są na to różne metody. Można przypisać konkretne funkcje wybranym formom wyrazów (np. czasownik zakończony na -ę będzie prawdopodobnie oznaczał czynność w pierwszej osobie, rzeczownik zakończony na -ek będzie oznaczał coś małego lub drobnego, (np. kotek). Można też, posługując się dużym zbiorami tekstów, policzyć powiązania między wyrazami i ustalić, które najczęściej występują obok siebie (np. przymiotnik często będzie stał obok rzeczownika). Kombinacja zróżnicowanych metod oraz ręczne oznaczanie reguł umożliwia implementację większości mechanizmów składniowych.
Ważnym procesem w ramach analizy składniowej jest też lematyzacja — czyli sprowadzanie odmienionych wyrazów do form podstawowych, tzw. lematów. Dzięki temu algorytm może łatwiej rozpoznać znaczenie przypisane do danego wyrazu. Pamiętajmy, że dla komputera wyraz to po prostu ciąg znaków, dlatego bez odpowiedniego modelu i reguł odmiany wyrazowej, nie będzie w stanie połączyć wyrazu odmienionego z nieodmiennym.
Analiza semantyczna
To obszar, którego głównym zadaniem jest przypisywanie konkretnych znaczeń wyrazom, wyrażeniom i całym zdaniom. Dużym problemem jest tu wieloznaczność słów (np. zamek może oznaczać budowlę oraz rodzaj zapięcia. Dwa zupełnie odrębne znaczenia są tu reprezentowane przez identyczny ciąg znaków). Z pomocą przychodzi analiza wyrazów w kontekście. Jeśli w danym tekście inne słowa odnoszą się do obszaru budownictwa lub architektury, to z dużym prawdopodobieństwem będziemy mieli do czynienia z zamkiem-budowlą.
Dużym wyzwaniem w ramach przetwarzania języków naturalnych jest tworzenie sieci semantycznych. To duże, hierarchiczne modele wyrazów połączonych relacjami znaczeniowymi, które mogą odwzorowywać struktury pojęciowe i sposób postrzegania rzeczywistości przez człowieka. Przykładem polskiej sieci semantycznej jest Słowosieć. Wordnety bywają bardzo pomocne w tworzeniu wyszukiwarek kontekstowych i automatycznych systemów tłumaczeniowych. Niżej prezentujemy fragment polskiej sieci semantycznej.

Analiza sentymentu
Analiza sentymentu polega na ocenie emocjonalnego wydźwięku opinii klientów o produkcie lub marce przy pomocy sztucznej inteligencji. Duże zbiory opinii (np.komentarze w sieci) są analizowane przez specjalny algorytm, który potrafi rozpoznać emocje w tekście. Następnie obliczana jest procentowa zawartość wyrazów o nacechowaniu pozytywnym, negatywnym i neutralnym (zarówno na poziomie pojedynczych opinii, jak i całego ich zbioru).
Skąd algorytm wie, jakie wyrazy są nacechowane pozytywnie lub negatywnie? Oczywiście musi skądś dostać listy wyrazów z opisem wydźwięku emocjonalnego, by na ich podstawie można było trenować modele. Najdroższym, najbardziej czasochłonnym (choć zarazem najbardziej precyzyjnym) sposobem pozyskania takiej listy jest zatrudnienie anotatorów, którzy będą opisywać słowa, według ustalonych kryteriów. Można skorzystać z gotowych zbiorów danych będących częścią frameworków AI, np. Keras lub podpiąć algorytm do sieci semantycznej.
Do czego wykorzystuje się analizę wydźwięku? Przede wszystkim do szybkiego poznania opinii konsumentów na temat nowego produktu, usługi lub marki. Analiza wydźwięku ułatwia też tworzenie systemów rekomendacji konsumenckiej (by polecane były produkty pozytywnie oceniane). Może też być przydatna w zapobieganiu kryzysom i wspieraniu pracy działów supportu poprzez wybieranie najbardziej negatywnie nacechowanych komunikatów.
Systemy dialogowe
Systemy dialogowe łączą osiągnięcia przetwarzania tekstu i mowy. Muszą działać na wysokim poziomie abstrakcji, zarówno procesując komunikaty podane przez użytkownika na wejściu, jak i generując odpowiedzi na wyjściu. Schemat działania najczęściej jest następujący:
interpretacja zapytania użytkownika → decyzja dotycząca następnego kroku → generowanie odpowiedzi w języku naturalnym
Dobry system dialogowy powinien być w stanie interpretować również nietypowe struktury językowe, np. rozumieć mowę spontaniczną, potoczne wyrażenia, a także umieć przejmować inicjatywę, kiedy użytkownik milczy. Modele dialogu znajdują zastosowanie w chatbotach, infoliniach telefonicznych oraz systemach wsparcia osób z niepełnosprawnościami. Są często wykorzystywane również przy tworzeniu asystentów AI oraz interfejsów głosowych.
Najpopularniejsze problemy w NLP
Język naturalny jest żywym tworem, który nieustannie się zmienia i jest modelowany przez człowieka, zawiera w sobie wiele spontaniczności i wyjątków. Ze względu na to liczne zjawiska językowe trudno w 100% przełożyć na uniwersalne reguły czy język liczb. Trudności w interpretacji stale sprawiają wyrażenia potoczne (w mowie nie jest dla nas naturalnego posługiwanie się pełnymi zdaniami). Problematyczne są też wypowiedzi, których znaczenie jest silnie zależne od kontekstu sytuacyjnego (np. bardzo trudno dokładnie zrozumieć zdanie Podaj mi to bez znajdowania się w tym samym otoczeniu, co osoba używająca zaimka to i wskazująca przy tym na konkretny przedmiot). Dużym wyzwaniem jest także wykrywanie ironii, w przypadku której zdanie zawierające słowa nacechowane pozytywnie wyraża ocenę negatywną.
Choć modele językowe działają coraz sprawniej i coraz lepiej naśladują język użytkowników, to jednak dziedzina NLP nadal stoi przed wieloma wyzwaniami. Warto interesować się tym zagadnieniem z kilku powodów. Po pierwsze technologie AI potrzebują modeli językowych do skutecznej komunikacji z użytkownikiem. Po drugie zmiany społeczno-demograficzne pozwalają przypuszczać, że algorytmy przetwarzające język będą stawały się coraz powszechniejsze. Jesteśmy społeczeństwem starzejącym się, z racji wieku coraz więcej osób może potrzebować intuicyjnych interfejsów do komunikowania się oprogramowaniem. Precyzyjne, rozbudowane modele językowe mają też znaczenie w asystowaniu osobom z niepełnosprawnościami, co jest istotne dla społeczeństwa dążącego do promowania idei równych szans. Pamiętajmy również o postępującej cyfryzacji i rosnącej popularności e-usług (również w sektorze publicznym). Jeśli interesujesz się tematyką NLP, sprawdź nasz kurs ML&AI, w ramach którego uczymy również podstawowych aspektów przetwarzania języka naturalnego.