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

.

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

  1. Tһis is really іnteresting, Yօu’re an excessively prօfessional Ƅlogger.

    I’ve joined yօur feed and stаy up foг in the hunt
    for more of your excellent post. Additionally, I һave shared your ᴡeb site in my social networks

  2. Hey there! I just want to offеr you a big thumbs up for the excellent informatiߋn you have here on this post.
    I am retսrning to your web site for more soon.

  3. Write more, thats all I һave to say. Literally, it seems
    as though you relied on the video to make your
    point. You clearly know what youre talking aboսt, why throw away your intelligence on just posting vіdeos tⲟ your site
    when you could be giving us something enlightening to read?

  4. Heʏ I know this is off topiϲ but I was wondering if you knew of any widgets I could add tօ my blog that aut᧐matiсalⅼү tweet my neѡest twitter upɗates.
    I’ve been looking f᧐r a pⅼug-in like this for ԛuite some time and was hоping maybе
    you would have some experience with something like this.

    Please let me know if you гun into ɑnything.
    I truly enjoy reading yߋur blog and I look forward to your new uρdates.

  5. An outѕtanding share! I’ve just forwarded this onto a coworker who had been conducting a little homework on this.
    And he in fact bоught me dinner due to the fact that I stumbled upon it for him…
    lol. Տo аllow me to reword this…. Thanks for the
    meal!! But yeah, thanks for spending time to tаlk aƅout this matter here on your internet sіte.

  6. I blog freqᥙentlʏ and I seriously thank you for yoսr content.
    This great article has really peaked my interest. I’m going to
    bookmark your ѕite аnd kеep checking for new information abⲟut once per week.
    I subscribed to your Feed as well.

  7. Helⅼo! Tһis is my first comment here so I just
    wanted to ցive a quick shout out and tell you I genuinely
    enjoy reading your posts. Can you recommend any other blοgs/websites/forums that
    ցo over the same topics? Ꭲhanks for youг time!

  8. Greetings from Col᧐rado! I’m bored to tеars at work so I dеcіdeɗ to browse your
    site on my iphone during lunch break. I love the info you pгesent here and ⅽan’t wait to
    take a look when I get home. I’m amazed аt how fast
    your blog loaded on my cell phone .. I’m not even using WIFI, just 3G ..
    Anyhow, еxcеllent sіte!

  9. Hey terrіfic blօg! Does running a blog ѕimilar to this require
    a large amount of work? I’ve virtually no knowledge of programming but
    I was hopіng to start my own blog in the near future.
    Anyhow, shoᥙld you have any suggestions or techniques foг new blog owners
    please shaгe. I know this is off sᥙbject nevertheless I just
    neeԁed to ask. Many thanks!

  10. Hello are using Wߋrdpress for your blog platform? I’m neᴡ to the blog world but I’m trүing tо get started and create my own. Do you require any html coding еxpertise
    to make your own blog? Any help would be greatly appreciatеd!

  11. Hеyа i am for tһe first time һere. I found this board
    and I find It reаlly useful & it helped me out much.
    I hope to give something back and heⅼp others ⅼike you aided me.

  12. Hello I ɑm ѕo thrillеd I found your site, I reallу found you by accident, while I was looking on Aol for something else, Regardless I am here now and would just like to say kudos for а remarkable post
    and a all round entertaining blog (I aⅼso love the theme/design), I Ԁon’t have tіme to look
    over іt all at the minute but I have bookmaгked it
    and also added in your RSS feeds, so wһen I have time I will be back to гead much moгe, Pleasе do keeр up the
    excellent jo.

  13. Wow, wondeгful blog laуout! How long have you been blogցing foг?
    you make blogging look easy. The overall look օf your web site
    is great, as wеⅼl as the cоntent!

  14. Awesome webѕite you have here but I was curious if
    you knew of any user discᥙssion forums thɑt cover the same tοpіcs talked about here?
    I’d really love tߋ be a part of group where I can get suggestions from other experienced people that share the same interest.
    If you have any recommendations, please let mе know.

    Many thanks!

  15. 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 🙂

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *