Czym jest przetwarzanie języka naturalnego (NLP)? I jak zacząć?

NLP

– Tato, a jak to jest, że telefon rozumie co mówię i pokazuje mi na mapach Googla to, czego szukam? – spytał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ę 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 w jaki sposób podkręcę swoje umiejętności, aby bardziej zgłębić temat 🙂. Ale zacznijmy od samego początku…

Co to jest przetwarzanie języka naturalnego?

Przetwarzanie języka naturalnego (ang. Natural Language Processing), 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ą następujących popularnych firm, aplikacji czy stron:

  • Firmy takie jak Google czy Yahoo filtrują i klasyfikują Twoje e-maile za pomocą NLP analizując tekst w e-mailach, które przepływają przez ich serwery i zatrzymując spam, zanim jeszcze wiadomość dotrze do Twojej skrzynki odbiorczej.
  • Wyszukiwarki internetowe takie jak Yandex czy Google używają NLP do jak najlepszego dopasowania wyników stron z informacjami, których szukasz.
  • Edytory tekstu, takie jak Microsoft Word i Grammarly wykorzystują NLP do sprawdzania poprawności gramatycznej tekstów.
  • Amazon Comprehend Medical jest przykładem usługi, która wykorzystuje NLP do wyciągania informacji z dokumentów. Wyodrębniania stany chorobowe, leki i wyniki leczenia z notatek pacjentów, raportów z badań klinicznych i innych elektronicznych dokumentów medycznych.
  • Wrocławska firma Brand24 wykorzystuje NLP do analizy sentymentu. Dzięki temu automatycznie dostarcza informacji o komentarzach czy opiniach klientów na temat produktów, czy usług. Same informacje wydobywane są ze źródeł takich jak media społecznościowe czy strony internetowe.
  • Interaktywne aplikacje Voice Response (IVR) wykorzystywane w call center w celu odpowiadania na żądania niektórych użytkowników.
  • Aplikacje osobistego asystenta, takie jak OK Google, Siri, Cortana i Alexa.
  • NLP jest również wykorzystywane zarówno w fazie poszukiwania, jak i selekcji i rekrutacji talentów.
  • Aplikacje do tłumaczeń językowych, takie jak Tłumacz Google.
  • Zbieranie informacji i automatyczne analizowanie o czym mówią i piszą ludzie, może być bardzo cenne dla traderów finansowych. NLP ułatwia im śledzenie wiadomości, raportów i komentarzy w aplikacjach na temat możliwych fuzji między firmami.

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.

nlp - problem kontekst

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 wygasł, 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.

embeddings

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ć:

  • Lematyzacja: polega na zredukowaniu różnych odmienionych form słowa do jednej formy w celu łatwej analizy.
  • Segmentacja morfologiczna: to proces odpowiadający za podzielenie słów na pojedyncze jednostki zwane morfemami.
  • Segmentacja słów: polega na podzieleniu dużego fragmentu ciągłego tekstu na odrębne jednostki.
  • Tokenizacja: to proces pocięcia tekstu na kawałki zwane tokenami, a jednocześnie odrzucenie pewnych znaków, np. interpunkcji.
  • Parsing: polega na przeprowadzeniu analizy gramatycznej podanego zdania.
  • Steeming: proces odpowiadający za przycięcie odmienionych słów do ich rdzenia.

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:

  • Rozpoznawanie nazwanych jednostek (NER): polega na określeniu części tekstu, które można zidentyfikować i skategoryzować we wstępnie ustawione grupy. Przykładami takich grup są nazwiska i nazwy miejscowości.
  • Ujednoznacznienie sensu słowa: polega na nadaniu znaczenia słowu na podstawie kontekstu.
  • Generowanie języka naturalnego: polega na wykorzystaniu baz danych do wyprowadzenia intencji semantycznych i przekształcenia ich na język ludzki.

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:
  • Rozpoznawanie mowy (spech recognition) – rozpoznawanie mowy jest jednym z najtrudniejszych zadań. W większości języków mówionych dźwięki reprezentujące kolejne litery łączą się ze sobą w procesie zwanym koartykulacją, więc konwersja sygnału analogowego na znaki dyskretne jest bardzo trudnym procesem. Ponadto, biorąc pod uwagę, że słowa w tym samym języku są wypowiadane przez ludzi z różnymi akcentami, oprogramowanie do rozpoznawania mowy musi być w stanie rozpoznać szeroką gamę danych wejściowych jako identycznych pod względem ich tekstowego odpowiednika.
  • Segmentacja mowy (speach segmentation) – zadanie polegające na podzieleniu pliku dźwiękowego na osoby mówiące.
  • Text-to-speech – polega na przekształceniu napisanego tekstu w wypowiadany dźwięk.
  • Zarządzanie dialogiem (dialogue management) – systemy komputerowe przeznaczone do rozmowy z człowiekiem.
Związane z procesowaniem tekstu
  • OCR (Optical Character Recognition) – polega na wyciąganiu z obrazka tekstu.
  • Rozpoznawanie tematów (topic modeling) – polega na wzięciu pod uwagę fragment tekstu, a następnie podzieleniu go na segmenty, z których każdy jest poświęcony innemu tematowi.
  • Automatyczne podsumowanie (automatioc summarization) – zadanie dotyczące podsumowania fragmentu tekstu. Często używane do dostarczania streszczeń tekstów znanego typu, takich jak artykuły naukowe czy artykuły w dziale finansowym.
  • Analiza dokumentów (document analysis) –  NLP ułatwia analizowanie dokumentów pod różnymi względami, np. do szukania ukrytych informacji dla prawników lub  księgowych
  • Korekcja błędów gramatycznych (Grammatical error correction) – wykrywanie i korekcja błędów gramatycznych obejmuje szeroki zakres problemów na wszystkich poziomach analizy językowej (ortografia, morfologia, składnia, semantyka czy pragmatyka). Korekcja błędów gramatycznych ma duże znaczenie. Jeśli mówimy na przykład o języku angielskim to dotyczy miliardów ludzi, którzy używają lub przyswajają angielski jako drugi język.
  • Tłumaczenie maszynowe (machine translation) – polega na automatycznym tłumaczeniu tekstu z jednego języka na drugi. Jest to jeden z trudniejszych problemów do rozwiązania wymagających wszystkich zakresów wiedzy, którą posiadają ludzie (gramatyka, semantyka, fakty dotyczące świata rzeczywistego itp.).
  • Rozumienie języka naturalnego (Natural Language Understanding): jest to zadanie konwertowania fragmentów tekstu na bardziej formalne reprezentacje, takie jak struktury logiczne pierwszego rzędu, którymi łatwiej manipulować maszynom.
Pozostałe zadania:
  • Analiza sentymentów (sentyment analysis) – dotyczy wyciągnięcia informacji zwykle z zestawu dokumentów, często korzystając z recenzji online w celu określenia „polaryzacji” w odniesieniu do określonych obiektów. Jest szczególnie przydatny do identyfikacji trendów opinii publicznej w mediach społecznościowych czy do marketingu.
  • Generowanie języka naturalnego (Natural Language Generation): polega na konwertowaniu informacji z komputerowych baz danych na czytelny język ludzki.
  • Odpowiadanie na pytania (question answering) – dla zapisanego pytania model służący do odpowiedzi na nie.  Jest to zadanie znacznie prostsze w przypadku pytań zamkniętych, jak na przykład: „Kiedy urodził się Joe Biden.” niż w przypadku pytań otwartych: „Co sprawia, że jesteś szczęsliwy?

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ć!

Jak zacząć swoją przygodę z NLP?

Złożoność ludzkiego języka powoduje, że NLP jest jednym z najtrudniejszych działów w uczeniu maszynowym. Dla mnie na razie przetwarzanie języka naturalnego jest czymś, co znam jedynie w niewielkim zakresie. Ale chcę to zmienić, ponieważ wiem, że lepsza znajomość NLP otworzy mi duży wachlarz możliwości w rozwiązywaniu problemów związanych z tekstem.

Aby zrealizować ten cel już jakiś czas temu zapisałem się na kurs „PRZETWARZANIE JĘZYKA NATURALNEGO” organizowanego przez DataWorkshop, który startuje już 13 września 2021.

Dlaczego wybrałem ten kurs? Bo mam do nich zaufanie! Ich inny kurs „Praktyczne uczenie maszynowe” wprowadził mnie w świat data science, co umożliwiło mi zmianę w karierze i rozpoczęcie przygody z ukochanym AI. A dodatkowo:

  • kurs skoncentrowany jest na praktycznym podejściu, a nie ogólnej teorii,
  • dostanę przefiltrowaną wiedzę i informacje, które muszę umieć w pracy z tekstem,
  • poznam najnowsze trendy i standardy w NLP,
  • eksperymentuję na skonfigurowanych serwerach, więc nie mam problemu z instalacjami pakietów,
  • będę poznawał świat NLP przez 6 tygodni!

Jeśli Ty również chcesz wejść w świat NLP to mam dla Ciebie niespodziankę! Kod rabatowy -15%. Wystarczy, że podczas zakupów wpiszesz kod NLP_Mirek i otrzymasz zniżkę.

Możesz też bezpośrednio wejść do kupna TUTAJ i zobaczyć ile zaoszczędzisz.

Jeśli chcesz to zapraszam do wspólnej przygody z poznawaniem NLP 🙂

A jeśli nie czujesz się na siłach i wolisz rozpocząć od kursu „Praktyczne uczenie maszynowe” (startuje 4.10.2021), to również możesz skorzystać z kodu rabatowego -15%. Wystarczy, że wpiszesz MIREK_POLECA lub skorzystasz z linku TUTAJ.

Jeżeli interesuje Cię moja droga do data science to zapraszam do lektury artykułu „Od analityka do data scientist!„, gdzie opisałem swoje początki.

Pozdrawiam z całego serducha,

podpis Mirek

Photo from develandoo

.

2 Comments on “Czym jest przetwarzanie języka naturalnego (NLP)? I jak zacząć?”

  1. Czy „analiza sentymentu” jest nazwą poprawną? Czym w języku polskim jest „sentyment”? Dla mnie to bardzo brzydka kalka z angielskiego i sugeruję używanie stwierdzenia „analiza wydźwięku”?

    Poza tym bardzo ciekawy i rzeczowy artykuł wprowadzający w temat, pozdrawiam serdecznie!

    1. Hej Kornel. Dzięki za komentarz! 🙂
      Odnośnie pojęcia „analiza sentymentu” nie mam pojęcia czy poprawna to jest nazwa, czy jak nazwałeś to brzydka kalka językowa.
      Natomiast widziałem ją w kilku źródłach na polskich stronach czy w materiałach z polskich uczelni.
      Właśnie sprawdziłem, że „analiza wydźwięku” też jest stosowana, ale znacznie rzadziej. Pewnie więc można przyjąć, że oba pojęcia są synonimami chodzi o to samo 🙂

Comments are closed.