Site icon Mirosław Mamczur

Czym jest przetwarzanie języka naturalnego (NLP)?

– Tato, a jak to jest, że telefon rozumie, co mówię i pokazuje mi na mapach Googla to, czego szukam? – zapytała z czystej ciekawości Jagódka.

–  Nie tak dawno temu naukowcy wymyślili, jak można nauczyć komputer mówić – odpowiedziałem.

–  Chyba to łatwe było, bo każdy człowiek umie mówić.

– To, co dla nas jest łatwe, niekoniecznie musi takie być dla maszyn. Powiedziałbym, że to było bardzo, ale to bardzo trudne zadanie.

– A też umiesz nauczyć maszyny mówić? – zapytała Jagódka.

– Na razie tylko troszeczkę. Na szczęście niedługo to się zmieni, bo mam nadzieję, że się tego nauczę.

Przetwarzanie języka naturalnego to technologia wykorzystywana do wspomagania komputerów w zrozumieniu języka naturalnego człowieka. W tym artykule opiszę ogólnie czym jest NLP (ang. Natural Language Processing), do czego jest wykorzystywane, jakie są główne rodzaje i jak to się wszystko zaczęło 🙂. Ale zacznijmy od samego początku…

Co to jest przetwarzanie języka naturalnego?

Przetwarzanie języka naturalnego, zwykle w skrócie nazywane NLP, to dziedzina sztucznej inteligencji (AI), która sprawia, że język ludzki jest zrozumiały dla maszyn.

NLP łączy moc lingwistyki, informatyki i matematyki do badania zasad i struktury języka. Po co? By móc stworzyć inteligentne systemy działające w oparciu o uczenie maszynowe i algorytmy NLP zdolne do rozumienia, analizowania i wydobywania znaczenia z tekstu i mowy.

Powiedziałbym, że ostatecznym celem NLP jest czytanie ze rozumieniem ludzkich języków.

Gdzie można zastosować NLP?

Jak już wiesz, NLP reprezentuje automatyczną obsługę naturalnego języka ludzkiego, takiego jak mowa lub tekst. I chociaż sama koncepcja jest fascynująca, to prawdziwa wartość tej technologii pochodzi z przypadków użycia w biznesie!

Przetwarzanie języka naturalnego jest siłą napędową wielu popularnych firm, aplikacji czy stron, m.in:

i wiele, wiele innych!

Dlaczego NLP jest takie trudne dla maszyn?

Przetwarzanie języka naturalnego jest uważane za dość trudny problem do rozwiązania. Główną tego przyczyną jest natura języka ludzkiego.

Zasady, których używamy na co dzień do komunikacji nie są łatwe do zrozumienia dla komputerów. Niektóre z tych reguł mogą być bardzo ogólne lub abstrakcyjne.

Pomyśl na przykład o sarkaźmie – jak go wyjaśnić maszynie?

Aby dobrze zrozumieć ludzki język należy jednocześnie zrozumieć znaczenie słów jak i kontekst, w jakim słowa zostały użyte.

Chociaż ludzie mogą z łatwością opanować język, to niejednoznaczność i nieprecyzyjne cechy języków naturalnych sprawiają, że NLP jest trudne do wdrożenia przez maszyny.

Historia, czyli kiedy wszystko się zaczęło?

Przetwarzanie języka naturalnego ma swoje korzenie w latach pięćdziesiątych. Wszystko zaczęło się w 1950 roku, kiedy Alan Turing opublikował artykuł zatytułowany „Computing Machinery and Intelligence”, w którym jako kryterium inteligencji zaproponował to, co obecnie nazywa się testem Turinga.

Jest to zadanie polegające na automatycznej interpretacji i generowaniu języka naturalnego. W tamtym czasie było to oderwane od pojęcia sztucznej inteligencji, które wtedy jeszcze nie istniało.

Całą historię NLP można podzielić na 3 okresy.

Symboliczne NLP (lata 50. – początek lat 90.)

W tym czasie w domenie NLP niewiele się właściwie działo. Głównie eksperymentowano z implementacją rozwiązań NLP na podstawie ręcznie pisanych reguł.

Jednym z bardziej znanych wydarzeń w tamtych czasach był tak zwany eksperyment w Georgetown z 1954 roku. Obejmował on w pełni automatyczne tłumaczenie ponad sześćdziesięciu rosyjskich zdań na angielski. Autorzy twierdzili, że w ciągu pięciu lat tłumaczenie maszynowe będzie rozwiązanym problemem… Jednak rzeczywiste postępy z tą nową dziedziną nauki były znacznie wolniejsze niż się spodziewano. W raporcie ALPAC (Automatic Language Processing Advisory Committee) z 1966 roku stwierdzono, że dziesięcioletnie badania nie spełniły oczekiwań, dlatego fundusze na tłumaczenie maszynowe zostały drastycznie zmniejszone.

Niewiele dalszych badań nad tłumaczeniem maszynowym przeprowadzono aż do późnych lat 80′, kiedy opracowano pierwsze statystyczne systemy tłumaczenia maszynowego.

Natomiast w tym okresie był jeden sukces, który wzbudził ogromny entuzjazm naukowców. Był to system języka naturalnego SHRDLU z lat ’60, który działał początkowo z ograniczonym słownictwem. Entuzjazm niestety również szybko zgasł, gdy system zderzył się z bardziej realnymi sytuacjami i prawdziwą złożonością oraz dwuznacznością słów.

Statystyczne NLP (1990-2010)

Do lat ’80 większość systemów przetwarzania języka naturalnego opierała się na złożonych zestawach ręcznie pisanych reguł. W tym samym czasie komputery zaczęły być coraz szybsze. Widoczny był wzrost mocy obliczeniowej! I wtedy nastąpiła rewolucja wraz z wprowadzeniem algorytmów uczenia maszynowego do przetwarzania języka. Równocześnie zaczęto rozwijać coraz bardziej lingwistykę korpusową, dzięki której łatwo było implementować rozwiązania za pomocą uczenia maszynowego.

Neuronowe NLP (2010+)

Od 2010 roku zaczęto wykorzystywać do uczenia się reprezentacji głębokich sieci neuronowych, które stały się powszechne w przetwarzaniu języka naturalnego. Od tego momentu nastąpił prawdziwy boom w NLP, podczas którego naukowcy (szczególnie jak zauważam w ostatnich latach 2019+) z miesiąca na miesiąc prześcigają się w nowych odkryciach z tego zakresu.

Jak działa przetwarzanie języka naturalnego?

Przetwarzanie języka naturalnego pociąga za sobą zastosowanie algorytmów do identyfikacji i wyodrębniania reguł języka naturalnego tak, aby nieustrukturyzowane dane językowe były przekształcane do postaci zrozumiałej dla komputerów.

W pierwszym kroku dane należy oczyścić i uprościć, aby ich zrozumienie było prostszym zadaniem.

W drugim kroku słowa zamieniane są na liczby. Dlaczego? Powiem to krótko i brutalnie – komputery nienawidzą tekstu, ale za to kochają liczby. Z tego powodu najchętniej działają na macierzach.

Dlatego zamieniamy słowa na liczby wykorzystując tzw. zanurzenie (ang. embeddings). Polega ono na osadzeniu słowa w przestrzeni wielowymiarowej. Słowa o podobnym znaczeniu powinny być w przestrzeni obok siebie.

Następnie za pomocą różnych technik NLP uczy się rozumieć połączenie różnych słów przedstawione za pomocą wektorów.

Jakie techniki stosuje się w NLP?

Głównymi technikami używanymi do przetwarzania języka naturalnego jest analiza składniowa i analiza semantyczna. Wyjaśnijmy sobie niektóre z najczęściej używanych algorytmów w NLP.

a. Analiza składni

Składnia (ang. sytax) odnosi się do ułożenia słów w zdaniu w taki sposób, aby miały sens gramatyczny. W NLP analiza składniowa służy do oceny zgodności języka naturalnego z regułami gramatycznymi. Algorytmy komputerowe służą do stosowania reguł gramatycznych do grupy słów i wyprowadzania z nich znaczenia. Oto kilka technik, których można użyć:

b. Analiza semantyki

Semantyka odnosi się do znaczenia, jakie przekazuje tekst. Analiza semantyczna jest jednym z trudnych aspektów przetwarzania języka naturalnego, który nie został jeszcze w pełni rozwiązany. Polega na zastosowaniu algorytmów komputerowych w celu zrozumienia znaczenia i interpretacji słów oraz struktury zdań. Oto kilka technik analizy semantycznej:

Główne zadania związane z przetwarzaniem języka

Poniżej znajduje się lista niektórych z najczęściej badanych zadań w przetwarzaniu języka naturalnego. Niektóre z tych zadań mają bezpośrednie zastosowania w świecie rzeczywistym, podczas gdy inne częściej służą jako podzadania, które są używane do pomocy w rozwiązywaniu większych zadań.

Związane z procesowaniem mowy:
Związane z procesowaniem tekstu
Pozostałe zadania:

Gdzie szukać pomocy eksperów NLP?

Jeśli szukasz ciekawego miejsca, gdzie jest wiele osób z dużą wiedzą NLP to polecam kanał #rozmowy-nlp na Discordzie grupy Polish ML Community. Grupa została utworzona przez znakomitego eksperta NLP Krzysztofa Sopyle, którego również polecam obserwować!

Pozdrawiam z całego serducha,

Photo from develandoo

Exit mobile version