nlp poniżej 10 linii kodu okładka

NLP poniżej 10 linii kodu. Klasyfikacja tekstu z przykładami: sentyment, emocje i zero-shot

NLP state-of-the-art models demo

Czasy się zmieniły, nie trzeba już być ekspertem od sieci neuronowych, żeby korzystać z głębokich modeli uczenia maszynowego, a przynajmniej się nimi pobawić. A to między innymi dzięki nowemu standardowi wyznaczonemu przez HuggingFaces, które stworzyły wysokopoziomowy, wspólny interfejs dla modeli typu Transformer. Dzięki niemu ten sam sposób pobierzesz, wykorzystasz i dotrenujesz tysiące modeli autorstwa zarówno gigantów z FAANG, jak i pojedynczych kontrybutorów. Jeśli jeszcze nie słyszałeś o HugginFaces, a zajmujesz się przetwarzaniem języka naturalnego albo rozpoznawaniem obrazów, to przeczytaj poprzedni artykuł, który naświetli Ci, dlaczego powinieneś znać to narzędzie.

Wstęp do kodu

Jak zaraz zobaczysz, każdy z przykładów to zaledwie kilka linii kodu, a to za sprawą abstrakcji najwyższego poziomu z biblioteki Transformers – pipeline. Pipeline zawiera w sobie tokenizer i model oraz łączy je ze sobą. W efekcie wystarczy podać rodzaj zadania, a następnie przekazać tekst i voilà – właśnie użyłeś modelu prosto z linii produkcyjnej Google czy Facebooka, które spędzały sen z powiek grupom badawczym.

TEN ARTYKUŁ JEST PRZEDSTAWIENIEM SIŁY I PROSTOTY HUGGINGFACES, A NIE WYRAFINOWANYM INSTRUKTAŻEM DOTYCZĄCYM PRZETWARZANIA JĘZYKA NATURALNEGO

Wszystkie przykłady, które tu zobaczysz, oraz kilka dodatkowych możesz znaleźć w repozytorium, do którego link znajduje się na końcu wpisu. 

Szerokie zastosowanie klasyfikacji tekstu

Klasyfikacja tekstu to technika uczenia maszynowego, która przypisuje zestaw kategorii do dowolnego zlepku słów – od badań medycznych przez fraszki Kochanowskiego do komentarzy na Facebooku. Zapewne wiesz, że każdy komentarz czy to na Youtube, czy na Facebooku przechodzi najpierw przez wiele filtrów określających jego toksyczność, aby w konsekwencji nie dopuścić do jego publikacji. Klasyfikacja tekstu jest wszechobecna w social mediach i właśnie na emocjach oprzemy pierwsze dwa przykłady. Ostatni natomiast pokaże Ci, że model może klasyfikować dowolne kategorie, nawet te, których nie widział w trakcie trenowania.

Analiza sentymentu

Ten model przewiduje, czy tekst jest pozytywny czy negatywny, oraz przypisuje rozpoznanej etykiecie wynik – im wyższy, tym większe nasycenie emocjonalne.

Przygotowanie

Demonstracja

Zauważ, jak model znakomicie rozpoznał sarkazm i zaklasyfikował drugi tekst jako ten z negatywnym wydźwiękiem.

Jak rozumieć nazwę modelu distilbert-base-uncased-finetuned-sst-2-english?

Klasyfikacja emocji

Kolejny model oceni tekst pod względem sześciu emocji. Warto podkreślić, że domyślnie model zwraca wyniki z użyciem funkcji softmax, czyli otrzymamy rozkład prawdopodobieństwa. Oznacza to, że suma zwróconych wartości dla wszystkich emocji sumuje się do 1. Innymi słowy, nawet jałowy tekst, który nie ma potencjału, aby wywołać w  Tobie jakiekolwiek uczucia, model przedstawi jako wartości, które po dodaniu dadzą właśnie 1.

Przygotowanie

Demonstracja

Tym razem w formie tabeli. Model wydaje się działać jednostronnie. Dla każdego tekstu wykrywa dominującą emocję i przypisuje jej wynik ponad 99%. Zwróć uwagę, że o ile w  pierwszym wierszu model znów dobrze rozpoznał sarkazm, o tyle w trzecim widzimy kardynalną pomyłkę. 

Klasyfikacja dowolnych etykiet metodą zero-shot

Metoda zero-shot pozwala nam klasyfikować dane według wybranych przez nas etykiet, nawet tych, które nie zostały użyte w trakcie trenowania modelu. Ostatnio, szczególnie w NLP, pojęcie to jest używane znacznie szerzej i oznacza skłonienie modelu do zrobienia czegoś, do czego nie został on wyraźnie wytrenowany. Pokazuje to, że ekstremalnie duże modele językowe mogą osiągać konkurencyjne wyniki w zadaniach niższego rzędu (jak klasyfikacja czy rozpoznawanie encji) przy znacznie mniejszej ilości danych dla tego konkretnego zadania, niż wymagałyby tego mniejsze modele przeznaczone do pracy nad danym problemem.

Przygotowanie

Demonstracja

Zobacz, jak bezbłędnie model przyporządkował fragmenty do szkolnych przedmiotów. 

Podsumowanie

Przykłady klasyfikacji tekstu można mnożyć. Wykrywanie zdań zawierających satyrę czy plagiat również można zaliczyć do tej kategorii zadań NLP. Więcej przykładów możesz znaleźć na stronie paperswithcode.com, żeby szerzej poznać spektrum możliwości.

Jeśli interesują Cię również inne zastosowania przetwarzania języka naturalnego, to podobny wpis znajdziesz tutaj.

Zrób to sam

Wszystkie przykłady możesz odtworzyć sam, pobierając i uruchamiając kod z tego repozytorium:

Udostępnij ten wpis


Dobrnąłeś do końca. Jeśli ten artykuł był dla Ciebie wartościowy i chcesz otrzymywać informacje o kolejnych, to zapraszam Cię do zapisania się do listy mailingowej. Gwarantuję zero spamu.

Radek.

Inne artykuły