Czym jest przetwarzanie języka naturalnego (NLP)?

Caroline Eppright | Strateg ds. treści | 25 marca 2021 r.

Definicja przetwarzania języka naturalnego (NLP)

Przetwarzanie języka naturalnego (Natural Language Processing, NLP) to gałąźsztucznej inteligencji (SI), która umożliwia komputerom zrozumienie języka ludzkiego, tworzenie go i manipulowanie nim. Przetwarzanie języka naturalnego ma możliwość przetworzenia danych zawierających naturalny tekst lub głos. Jest to również nazywane „językiem wejściowym”. Większość konsumentów prawdopodobnie korzystała z NLP, nie zdając sobie z tego sprawy. NLP jest na przykład podstawową technologią umożliwiającą istnienie asystentów wirtualnych, takich jak ODA (Oracle Digital Assistant), Siri, Cortana lub Alexa. Kiedy zadajemy pytania tym wirtualnym asystentom, NLP pozwala im nie tylko zrozumieć słowa użytkownika, ale także odpowiedzieć w naturalnym języku. NLP ma zastosowanie zarówno do tekstu pisanego, jak i mowy i może być stosowane do wszystkich języków ludzkich. Inne przykłady narzędzi korzystających z NLP to wyszukiwanie w Internecie, filtrowanie spamu e-mailowego, automatyczne tłumaczenie tekstu lub mowy, podsumowywanie dokumentów, analiza nastrojów oraz sprawdzanie gramatyki i pisowni. Niektóre programy poczty e-mail mogą na przykład automatycznie sugerować właściwą odpowiedź na wiadomość w oparciu o jej zawartość. Takie programy korzystają z NLP do odczytywania, analizowania i odpowiadania na wiadomość.

Istnieje kilka innych terminów, które są mniej więcej synonimem NLP. Zrozumienie języka naturalnego (Natural Language Understanding, NLU) i generowanie języka naturalnego (Natural Language Generation, NLG) odnoszą się do zastosowania komputerów do rozumienia (NLU) i wytwarzania (NLG) języka ludzkiego. NLG ma możliwość dostarczenia werbalnego opisu tego, co się stało. Jest to również nazywane „wyjściem językowym” poprzez podsumowanie znaczących informacji w tekście za pomocą pojęcia znanego jako „gramatyka grafiki”.

W praktyce, skrót NLU jest używany do oznaczania NLP. Zrozumienie struktury i znaczenia wszystkich języków ludzkich przez komputery, umożliwiające twórcom i użytkownikom interakcję z komputerami przy użyciu naturalnej komunikacji i zdąń. jLingwistyka komputerowa (Computational Linguistics, CL) to dziedzina naukowa badająca obliczeniowe aspekty języka ludzkiego. NLP jest dyscypliną inżynieryjną zajmującą się budowaniem artefaktów obliczeniowych, które rozumieją ludzki język, generują go lub nim manipulują.

Badania nad NLP rozpoczęły się wkrótce po wynalezieniu komputerów cyfrowych w 1950 roku. NLP opiera się zarówno na językoznawstwie, jak i sztucznej inteligencji (SI). Jednak najważniejsze przełomy z ostatnich kilku lat zostały osiągnięte dzięki uczeniu maszynowemu, które jest gałęzią sztucznej inteligencji rozwijającą systemy uczące się i generalizujące na podstawie danych. Uczenie głębokie (deep learning) to rodzaj uczenia maszynowego, który może się nauczyć bardzo złożonych wzorców z dużych zbiorów danych, dzięki czemu doskonale się nadaje do poznawania złożoności języka naturalnego ze zbiorów danych pozyskanych z Internetu.

Zastosowania przetwarzania języka naturalnego

Automatyzacja rutynowych zadań: Boty czatowe korzystające z NLP mogą przetwarzać wiele rutynowych zadań, obecnie obsługiwanych przez ludzkich agentów, umożliwiając pracownikom skupienie się nad bardziej złożonymi i ciekawszymi zadaniami. Boty czatowe i asystenci cyfrowi mogą na przykład rozpoznawać różne żądania użytkowników, dopasowywać je do odpowiedniego wpisu w firmowej bazie danych i formułować odpowiednie odpowiedzi.

Ulepszanie wyszukiwania: NLP może poprawić wyszukiwanie słów kluczowych w celu zidentyfikowania dokumentów i często zadawanych pytań poprzez wyodrębnienie znaczeń słów na podstawie kontekstu (na przykład „nośnik” oznacza coś innego w kontekście biomedycznym i przemysłowym), dopasowywanie synonimów (na przykład pobieranie dokumentów zawierających słowo „samochód” w przypadku wyszukiwania słowa „auto”) oraz uwzględnianie zmian morfologicznych (co jest ważne w przypadku zapytań w różnych językach). Skuteczne system wyszukiwania akademickiego oparte na NLP mogą znacznie poprawić dostęp do odpowiednich, najnowocześniejszych badań dla lekarzy, prawników i innych specjalistów.

Optymalizacja wyszukiwarek: NLP jest doskonałym narzędziem do podniesienia rankingu firmy w sieciowych wyszukiwarkach, dzięki analizie przeprowadzanych wyszukiwań w celu optymalizacji publikowanej treści. Wyszukiwarki wykorzystują NLP, aby uporządkowania swoich wyników – znajomość skutecznego wykorzystania tych technik ułatwia zajęcie w ich rankingu miejsca ponad konkurentami. Spowoduje to zwiększenie widoczności firmy.

Analizowanie i organizowanie dużych kolekcji dokumentów: Techniki NLP, takie jak klastrowanie dokumentów i modelowanie tematów, upraszczają zadanie zrozumienia różnorodności zawartości dużych kolekcji dokumentów, takich jak raporty firmowe, artykuły prasowe czy dokumenty naukowe. Techniki te są często stosowane podczas badań w kontekście prawa.

Analiza mediów społecznościowych: NLP może analizować opinie klientów oraz komentarze w mediach społecznościowych, co pozwala lepiej przetworzyć i zrozumieć ogromne ilości informacji. Analiza odczuć identyfikuje pozytywne i negatywne komentarze w strumieniu komentarzy w mediach społecznościowych, zapewniając bezpośrednią miarę odczuć klientów w czasie rzeczywistym. Może to prowadzić do ogromnych sukcesów w późniejszym terminie, na przykład zwiększenia zadowolenia klientów i przychodów.

Informacje o rynku: Dzięki analizie języka klientów biznesowych za pomocą NLP, można lepiej określić, czego chcą, a także lepiej poznać sposoby komunikowania się z nimi. Analiza nastrojów skupiona na aspekcie wykrywa odczucia związane z konkretnymi aspektami lub produktami w mediach społecznościowych (na przykład „klawiatura jest świetna, ale ekran jest zbyt ciemny ”), dostarczając bezpośrednio praktycznych informacji przydatnych w projektowaniu produktów i marketingu.

Moderowanie treści: Jeśli firma przyciąga duże ilości komentarzy użytkowników lub klientów, NLP pozwala moderować wypowiedzi w celu utrzymania jakości i kultury wypowiedzi, analizując nie tylko słowa, ale także ton i intencje komentarzy.

Branże korzystające z przetwarzania języka naturalnego

NLP upraszcza i automatyzuje szeroki wachlarz procesów biznesowych, zwłaszcza tych, które wymagają dużej ilości nieustrukturyzowanych tekstów, takich jak wiadomości e-mail, ankiety, konwersacje w mediach społecznościowych itp. Dzięki NLP firmy lepiej analizują swoje dane, co pomaga im podejmować właściwe decyzje. Oto kilka przykładów praktycznych zastosowań NLP:

  • Opieka zdrowotna: W miarę przechodzenia systemów opieki zdrowotnej na całym świecie na elektroniczneą dokumentację medyczną, napotykają one na duże ilości nieustrukturyzowanych danych. Można wykorzystać NLP do przeanalizowania i sformułowania nowych spostrzeżeń dotyczących zapisów dotyczących zdrowia.
  • Prawo: Aby przygotować się do sprawy, prawnicy często muszą spędzać czas na sprawdzaniu dużych zbiorów dokumentów i wyszukiwaniu materiałów istotnych dla konkretnego przypadku. Technologia NLP może zautomatyzować proces badania prawa, ograniczając ilośc wymaganego czasu i popełnianych błędów ludzkich dzięki przesiewaniu dużej liczby dokumentów.
  • Finanse: Świat finansowy zmienia się bardzo szybko, a każda przewaga nad konkurencją ma duże znaczenie. W dziedzinie finansów inwestorzy korzystają z technologii NLP, aby automatycznie wydobyć informacje z dokumentów i powiadomień korporacyjnych w celu wyodrębnienia informacji istotnych dla ich portfeli i decyzji handlowych.
  • Obsługa klientów: Wiele dużych firm używa wirtualnych asystentów lub botów czatowych do udzielania odpowiedzi na podstawowe pytania klientów i prośby o informacje (takie jak często zadawane pytania), przekazując bardziej złożone zapytania ludziom, o ile jest to potrzebne.
  • Ubezpieczenia: Duże firmy ubezpieczeniowe używają NLP do przeszukiwania dokumentów i raportów dotyczących roszczeń w celu usprawnienia własnej działalności.

Przegląd technologii NLP

Modele uczenia maszynowego dla NLP: Wspomniano wcześniej, że nowoczesne NLP w dużym stopniu bazuje na podejściu do sztucznej inteligencji, zwanym uczeniem maszynowym. Uczenie maszynowe generuje przewidywania za pomocą generalizowania na podstawie przykładów w zbiorze danych. Ten zbiór danych jest nazywany danymi próbnymi lub szkoleniowymi, a algorytmy uczenia maszynowego trenują za pomocą tych danych w celu stworzenia modelu uczenia maszynowego, który służy do realizacji zadania docelowego.

Dane szkoleniowe analizy odczuć składają się na przykład ze zdań wraz z powiązanymi z nimi odczuciami (np. pozytywnymi, negatywnymi lub neutralnymi). Algorytm uczenia maszynowego odczytuje ten zbiór danych i tworzy model, który przyjmuje zdania jako dane wejściowe i zwraca związane z nimi odczucia. Tego rodzaju model, który przyjmuje zdania lub dokumenty jako dane wejściowe i zwraca dla nich etykietę, jest nazywany modelem klasyfikacji dokumentów. Klasyfikatory dokumentów mogą być również używane do klasyfikowania dokumentów według wymienionych w nich tematów (np. sport, finanse, polityka itp.).

Inny rodzaj modelu jest używany do rozpoznawania i klasyfikowania jednostek w dokumentach. Dla każdego słowa w dokumencie model przewiduje, czy to słowo jest częścią jednostki, a jeśli tak, to jaki jest to rodzaj jednostki. Na przykład w tekście „akcje XYZ sprzedawane wczoraj za PLN 28”, „XYZ” jest jednostką firmy, „PLN 28” jest kwotą w walucie, a „wczoraj” jest datą. Dane szkoleniowe do rozpoznawania jednostki są zbiorem tekstów, w których każde słowo jest oznaczone etykietą rodzajów jednostek, do których się odnosi. Ten rodzaj modelu, który tworzy etykietę dla każdego słowa w danych wejściowych, nazywany jest modelem etykietowania sekwencji.

Modele seq2seq to najnowszy dodatek do rodziny modeli używanych w NLP. Model sekwencji do sekwencji (seq2seq) przyjmuje całe zdanie lub dokument jako dane wejściowe (jak w klasyfikatorze dokumentów), ale generuje zdanie lub inną sekwencję (na przykład program komputerowy) jako dane wyjściowe. (Klasyfikator dokumentów tworzy tylko jeden symbol jako dane wyjściowe). Przykładowe zastiowania modeli seq2seq obejmują tłumaczenie maszynowe, które na przykład przyjmuje zdanie angielskie jako wejście i zwraca zdanie francuskie jako wyjście; podsumowanie dokumentów (gdzie dane wyjściowe są podsumowaniem danych wejściowych); analizę semantyczną (gdzie dane wejściowe są zapytaniami lub żądaniami w języku angielskim, a dane wyjściowe to program komputerowy realizujący to żądanie).

Uczenie głębokie, wstępnie przeszkolone modele i uczenie transferowe: Uczenie głębokie jest najczęściej używanym rodzajem uczenia maszynowego w NLP. W latach 1980-tych naukowcy opracowali sieci neuronowe, w których duża liczba prymitywnych modeli uczenia maszynowego łączy się w jedną sieć: przez analogię do mózgów, proste modele uczenia maszynowego są czasami nazywane „neuronami”. Te neurony są zorganizowane w warstwy, a głęboka sieć neuronowa to taka, która składa się z wielku takich warstw. Uczenie głębokie to uczenie maszynowe z użyciem modeli głębokiej sieci neuronowej.

Ze względu na ich złożoność do szkolenia głębokiej sieci neuronowej zazwyczaj potrzeba dużych ilości danych, a ich przetwarzanie pochłania dużo mocy obliczeniowej i czasu. Nowoczesne, modele NLP głębokiej sieci neuronowe są szkolone za pomocą różnorodnych źródeł, takich jak Wikipedia i dane wyodrębnione z Internetu. Dane szkoleniowe mogą mieć wielkość rzędu 10 lub więcej GB, a szkolenie głębokiej sieci neuronowej może zająć tydzień lub więcej w klastrze o wysokiej wydajności. (Badacze uważają, że szkolenie nawet głębszych modele z nawet większych zbiorów danych ma jeszcze większą wydajność, dlatego obecnie istnieje wyścig polegający na trenowaniu coraz większych modeli z coraz większych zbiorów danych).

Żarłoczne wymagania głębokich sieci neuronowych w zakresie danych i obliczeń teoretycznie mogłyby poważnie ograniczyć ich przydatność. Szkolenie transferowe umożliwia jednak dalsze szkolenie przeszkolonej głębokiej sieci neuronowej w celu wykonywania nowego zadania, przy znacznie mniejszych nakładach danych szkoleniowych i mocy obliczeniowych. Najprostszy rodzaj szkolenia transferowego nazywany jest precyzyjnym dostrajaniem. Składa się po prostu z pierwszego szkolenia modelu w dużym ogólnym zbiorze danych (na przykład z Wikipedii), a następnie dalszego szkolenia („precyzyjnego dostrajania”) modelu na znacznie mniejszym zbiorze danych, który jest związany z rzeczywistym zadaniem docelowym. Zbiory danych do precyzyjnego dostrajania mogą być o dziwo bardzo małe, zawierając jedynie setki, a może nawet tylko dziesiątki przykładów szkolenia. Precyzyjne dostrajanie wymaga także zaledwie kilku minut pracy jednego procesora. Szkolenie transferowe ułatwia wdrażanie modeli uczenia głębokiego w całym przedsiębiorstwie.

Obecnie istnieje cały ekosystem dostawców oferujących wstępnie przeszkolone modele uczenia maszynowego, przeszkolone w zakresie różnych kombinacji języków, zbiorów danych i zadań przedszkoleniowych. Te wstępnie przeszkolone modele można pobierać i precyzyjnie dostrajać dla różnych zadań docelowych.

Dowiedz się, jak utworzenie centrum doskonalenia rozwiązań związanych ze sztuczną inteligencją (CoE) może przyczynić się do lepszego wykorzystania technologii NLP. W naszym e-booku znajdziesz wskazówki dotyczące tworzenia takiego centrum CoE i efektywnego korzystania z zaawansowanych modeli uczenia maszynowego.

Przykład technik przetwarzania wstępnego NLP

Tokenizacja: Tokenizacja dzieli nieprzetworzony tekst (na przykład zdanie lub dokument) na sekwencję tokenów, takich jak słowa lub fragmenty słowa podrzędnego. Tokenizacja jest często pierwszym krokiem w procesie przetwarzania NLP. Tokeny są często powtarzającymi się sekwencjami tekstu traktowanymi jako jednostki cząstkowe w późniejszym przetwarzaniu. Mogą to być słowa, podjednostki słowa wzane morfemami (na przykład prefiksy takie jak „na-” lub sufiksy takie jak „-ek” w języku polskim), a nawet pojedyncze znaki.

Modele „worka słów” (bag-of-words): Modele „worka słów” traktują dokumenty jako nieuporządkowane zbiory tokenów lub słów (worek jest jak zestaw, za wyjątkiem tego, że śledzi liczbę wystąpień każdego zawartego elementu). Ponieważ całkowicie ignorują one porządek słów, modele worka słów mylą zdanie takie jak "psy gryzą koty" ze zdaniem "koty gryzą psy". Jednak są często używane ze względu na wydajność przy zadaniach pobierania dużych informacji, takich jak na przykład wyszukiwarka internetowa. Umożliwiają uzyskanie prawie najlepszych możliwych wyników w przypadku dłuższych dokumentów.

Usunięcie słów ze stop-listy: Słowo ze stop-listy to token, który jest ignorowany podczas późniejszego przetwarzania. Są to zwykle krótkie, często spotykane słowa, takie jak „to” lub „że”. Modele worka słów i wyszukiwarki często ignorują słowa ze stop-listy w celu skrócenia czasu przetwarzania i przechowywania w bazie danych. Głębokie sieci neuronowe zazwyczaj biorą pod uwagę kolejność słów (czyli nie są modelami worka słów) i nie usuwają słów ze stop-listy, ponieważ słowa takie mogą przekazać subtelne różnice w znaczeniu (na przykład frazy „tamta utrata pakietu” i „to utrata pakietu” nie oznaczają tego samego, nawet jeśli będą takie same po usunięciut słów ze stop-listy) .

Stemming i lematyzacja: Morfemy to najmniejsze zawierające znaczenie elementy języka. Zazwyczaj morfemy są mniejsze od słów. Na przykład „przerąbany” składa się z prefiksu „prze-”, rdzenia „-rąba-” i sufiksu rodzaju męskiego „-ny”. Stemming i lematyzacja odwzorowują słowa do ich wersji podstawowej (np. „przerąbać” + rodzaj męski). Stemming i lematyzacja są kluczowymi krokami w modelach uczenia przegłębokiego, ale modele uczenia głębokiego zazwyczaj uczą się tych prawidłowości z danych szkoleniowych, więc nie wymagają wyraźnych kroków stemmingu lub lematyzacji.

Znakowanie i analiza składniowa części mowy: Znakowanie części mowy to proces etykietowania każdego słowa zgodnie z jego przynależnością do danych części mowy (na przykład rzeczownik, czasownik, przymiotnik itp.). Analizator składni określa sposób łączenia wyrazów we frazy, zdania podrzędne i całych zdania. Znakowanie części mowy jest zadaniem etykietowania sekwencji, a analiza składniowa jest rozszerzonym zadaniem etykietowania sekwencji. Głębokie sieci neuralne są najlepszą dostępną technologią dla obydwu tych zadań. Przed nadejściem uczenia głębokiego, znakowanie części mowy i analiza składni były niezbędnymi krokami w celu zrozumienia zdania. Jednak nowoczesne modele NLP uczenia głębokiego zazwyczaj odnoszą niewielki (lub żadne) korzyści z informacji o częściach mowy lub składni, więc znakowanie części mowy i analiza składniowa nie są szeroko stosowane w NLP uczenia głębokiego.

Języki programowania NLP

Python:

Biblioteki i zestawy narzędzi NLP są ogólnie dostępne w języku Python. Z tego powodu zdecydowana większość projektów NLP jest opracowywana w tym języku. Interaktywne środowisko programistyczne języka Python ułatwia tworzenie i testowanie nowego kodu.

Java i C++:

W przypadku przetwarzania dużych ilości danych często preferowane są środowiska C++ i Java, ponieważ obsługują one bardziej wydajny kod.

Biblioteki i środowiska programistyczne NLP

Oto przykłady popularnych bibliotek NLP.

TensorFlow i PyTorch: Są to dwa najbardziej popularne zestawy narzędzi uczenia głębokiego. Są one ogólnie dostępne do celów badawczych i komercyjnych. Pomimo tego, że obsługują wiele języków, ich głównym językiem jest Python. Zawierają duże biblioteki gotowych składników, dzięki czemu nawet bardzo zaawansowane modele NLP uczenia głębokiego często wymagają jedynie ich połączenia. Obsługują także wysokowydajną infrastrukturę obliczeniową, taką jak klastry maszyn z akceleratorami procesorów graficznych (GPU). Oferują doskonałą dokumentację i samouczki.

AllenNLP: To biblioteka zaawansowanych składników NLP (na przykład z prostych botów czatowych), implementowanych w językach PyTorch i Python. Jego dokumentacja jest doskonała.

HuggingFace: Ta firma rozprowadza setki różnych wstępnie przeszkolonych modeli NLP uczenia głębokiego, a także zestaw narzędzi z oprogramowaniem typu plug-and-play dla TensorFlow i PyTorch, które umożliwiają programistom szybką ocenę wydajności wykonywania określonych zadań przez różne wstępnie przeszkolone modele.

Spark NLP: Spark NLP to biblioteka open source do przetwarzania tekstu dla zaawansowanego NLP w językach programowania Python, Java i Scala. Jego celem jest zapewnienie interfejsu programowania aplikacji (API) dla ciągów procesów przetwarzania języka naturalnego. Oferuje wstępnie przeszkolone modele sieci neuronowych, procesy i możliwości osadzania, a także obsługę szkolenia niestandardowych modeli.

SpaCy NLP: SpaCy to darmowa biblioteka open source dla zaawansowanego NLP w języku Python, zaprojektowana z myślą o tworzeniu aplikacji, które mogą przetwarzać i rozumieć duże ilości tekstu. SpaCy jest bardzo intuicyjna i może obsługiwać wiele zadań wymaganych do realizacji powszechnie spotykanych projektów NLP.

Podsumowując, przetwarzanie języka naturalnego jest ekscytującym obszarem rozwoju sztucznej inteligencji, zasilającym szeroką gamę nowych produktów, takich jak wyszukiwarki, boty czatowe, systemy rekomendacji i systemy przetwarzania mowy na tekst. Wraz z dalszym odchodzeniem ludzkich interfejsów komputerowych od przycisków, formularzy i specyficznych dla domeny języków, zapotrzebowanie na rozwój przetwarzania języka naturalnego będzie wciąż rosło. Z tego powodu Oracle Cloud Infrastructure dokłada wszelkich starań, aby zapewnić lokalną wydajność, korzystając z naszych zoptymalizowanych pod kątem wydajności wariantów i narzędzi obliczeniowych dla NLP. Oracle Cloud Infrastructure oferuje wachlarz wariantów GPU, które można wdrożyć w ciągu kilku minut i zacząć eksperymentować z NLP.