Przejdź do treści

Translatory, autokorekta, automatyczne sugestie tagów, podpowiedzi wyszukiwarki czy asystent głosowy… to tylko kilka przykładów rozwiązań, które bazują na NLP.

A co kryje się pod tym tajemniczym skrótem?

Natural Language Processing, czyli przetwarzanie języka naturalnego to jedno z ciekawszych zagadnień uczenia maszynowego. Odpowiednia analiza i nieustannie uczące się algorytmy pozwalają na wydobycie z tekstu wielu ciekawych informacji, takich jak np. tematyka czy nacechowanie emocjonalne.

Jednak aby wyspecjalizowane algorytmy działały jak najskuteczniej, należy wcześniej odpowiednio przygotować analizowane dane. Służą do tego różne transformacje, spośród których postaram się przybliżyć te najważniejsze.

No to zaczynamy!

W przykładach posłużę się fragmentami powieści Andrzeja Sapkowskiego “Sezon Burz”.

Tokenizacja

Jest to najprostszy mechanizm polegający na podzieleniu analizowanego tekstu na tzw. tokeny, którymi mogą być: zdania, słowa, części słów.

Przykład:

Wiedźmin rzucił się w jej stronę, w skoku dobywając miecza.

podział tekstu

na słowa

Wiedźmin
rzucił 
się
w 
jej 
stronę
w
skoku
dobywając
miecza

Taki podział pozwala m.in.: na grupowanie słów wg różnych kategorii, takich jak: części mowy, części zdania czy inne bardziej zaawansowane analizy znaczeniowe.
Tak naprawdę żaden algorytm NLP nie obędzie się bez tokenizacji, tak więc warto zapamiętać to hasło 🧠.

Stemming

To już nieco trudniejszy proces, polegający na wydobyciu ze słowa jego rdzenia, czyli części stałej, która nie zmienia się – bez względu na odmianę przez osoby, przypadki czy liczby. Jak łatwo się domyślić, dla każdego języka działa to nieco inaczej, a nasz ojczysty (nie)stety pozostaje w czołówce tych najtrudniejszych do analizy ze względu na swoją bardzo rozbudowaną fleksyjność.

Celem stemmingu jest więc obcięcie końcówki fleksyjnej i pozostawienie części nieodmiennej, która często jest tylko fragmentem poprawnego słowa istniejącego w słowniku.

Przykład:

Teraz 
przeszywająco 
krzyczała 
kobieta

stemming

słów

teraz
przeszywa
krzy
kobiet

Lematyzacja

Często mylona ze stemmingiem ze względu na to, że w wielu przypadkach zwraca podobne rezultaty. Jednak lematyzacja to wydobycie ze słowa jego formy podstawowej (tzw. lematu), która nie jest odmieniona przez żadne przypadki, osoby czy formy czasu, np. dla czasowników zwracane będą bezokoliczniki, dla rzeczowników – ich bazowe wersje w liczbie pojedynczej.

Do prawidłowego działania lematyzatora potrzebne są więc słowniki, na podstawie których można powiązać rózne formy tego samego słowa.

Przykład:

Teraz 
przeszywająco 
krzyczała 
kobieta

lematyzacja

teraz
przeszywać
krzyczeć
kobieta

Wektoryzacja

Tutaj nie będę rozpisywać się nadmiernie, bo na temat algorytmów wektoryzacji można napisać niejeden doktorat 😁. Opowiem jednak w kilku słowach o podstawowych założeniach tego mechanizmu.

Wektoryzacja to po prostu zamiana tekstu na wektory liczb rzeczywistych, na podstawie których dużo łatwiej przeprowadzać kolejne analizy. Istnieje wiele różnych metod wektoryzacji, wszystko zależy od potrzeb konkretnego algorytmu. Najbardziej znane techniki to:

  • Bag of words,
  • TF-IDF,
  • Word2Vec
  • GloVe
  • FutureText

Bag of words

To najprostsza z technik wektoryzacji, która polega na stworzeniu słownika wszystkich unikalnych słów występujących w tekście, a następnie opisaniu każdego zdania wektorem przypisującym każdemu ze słów wartość 0 lub 1, w zależności od jego wystąpienia.

Przykład:

1. Tekst podzielony na zdania

Piętnastka obrócił się szybko. 

Nie dość szybko. 

Dostał raz.

Złożył się do ciosu, wtedy dostał drugi raz .

Zwalił się na wózek pełen ryb. 

Wózek potoczył się. 

Piętnastka zsunął się na bruk.

2. Unikalne słowa posortowane alfabetycznie

['bruk', 
'ciosu', 
'do', 
'dostał', 
'dość', 
'drugi', 
'na', 
'nie', 
'obrócił', 
'pełen', 
'piętnastka', 
'potoczył', 
'raz', 
'ryb', 
'się', 
'szybko', 
'wtedy', 
'wózek', 
'zsunął', 
'zwalił', 
'złożył']

3. Wektory zdań

[
 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0], 
 [0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0], 
 [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], 
 [0, 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 2, 0, 1, 1, 0, 1, 1], 
 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0], 
 [1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0]
]

Poza pojedynczymi słowami można też tworzyć tzw. n-gramy, czyli połączone zbiory n słów (np. bigramy, trigramy itp.).

TF-IDF

TF-IDF, czyli Term Frequency – Inverse Document Frequency to nieco ulepszona wersja Bag of Words, bowiem skupia się ona na ważności danego słowa w ramach całego tekstu. Ten algorytm pozwala wyeliminować podstawowy błąd, jakim są powtarzające się zaimki, przyimki czy spójniki, które nie mają większego wpływu na znaczenie tekstu.

Nie będę skupiać się na szczegółach wzoru, na podstawie którego obliczana jest waga każdego słowa w TF-IDF, więcej szczegółów możecie znaleźć tutaj, warto jednak wiedzieć o istnieniu tej metody.

Word2Vec

Tutaj mamy już do czynienia z sieciami neuronowymi, które czynią ten algorytm bardziej “inteligentnym” niż jego poprzednicy. Co czyni Word2Vec tak wyjątkowym? Otóż skupia się on nie tylko na istotności danego słowa, ale też jego kontekście, na podstawie którego łatwiej jest określić znaczenie i tematykę tekstu.

W przypadku tego algorytmu słowa analizowane są nie pojedynczo, lecz grupami, w ramach których weryfikowane są najczęściej występujące powiązania nadające tekstom konkretnego znaczenia. Dzięki nim tworzone są np. sugestie słów, które mogą otaczać dane hasło.

Dokładny opis działania Word2Vec znajdziecie tutaj.

Dzięki technikom transformacji oraz wektoryzacji możemy przygotować nasze teksty do bardziej zaawansowanej analizy i tworzyć aplikacje przetwarzające dowolne teksty na miliony różnych sposóbów.

Chcesz wiedzieć więcej? Sprawdź te strony:

NLP to niekończąca się opowieść pełna wielu tajemnic, które tylko czekają na odkrycie.

Macie jakieś doświadczenia w tym temacie?

Podzielcie się w komenarzach swoimi przemyśleniami, pytaniami i sugestiami 🙂

Jesteśmy tu dla Was.

5 1 vote
Article Rating
guest
2 komentarzy
najstarszy
najnowszy oceniany
Inline Feedbacks
View all comments
Agnieszka
Agnieszka
8 miesięcy temu

Witam, w przykładzie dotycżącym lematyzacji podano, najprawdopodobnie błędnie, “stemming słów”. Pozdrawiam, Agnieszka