Automatycznie wyodrębnij pojęcia i słowa kluczowe z tekstu (Część II: podejście semantyczne)
Opublikowany: 2022-09-20Ten artykuł jest kontynuacją pierwszej części dotyczącej automatycznego wyodrębniania słów kluczowych z tekstu. Poprzedni artykuł dotyczył tak zwanego „tradycyjnego” podejścia do wyodrębniania słów kluczowych z tekstu: opartego na statystykach lub opartego na wykresie.
Tutaj zbadamy metody z bardziej semantycznym podejściem. Najpierw wprowadzimy osadzenia słów i transformatory , czyli osadzenia kontekstowe. Następnie podzielimy się przykładem z tym samym tekstem o albumie Johna Coltrane'a Impressions (źródło francemusique.fr) opartym na modelu BERT. Na koniec przedstawimy kilka metod oceny, takich jak P@k
, f1-score
oraz benchmarki z najnowszego stanu techniki.
W przeciwieństwie do podejścia tradycyjnego, podejście semantyczne umożliwia łączenie słów należących do podobnego pola leksykalnego, nawet jeśli są różne. Ideą tego podejścia jest rezygnacja z obliczania częstotliwości występowania słów w tekście, aby wyodrębnić słowa, które mają największy sens, innymi słowy te, które dostarczają najistotniejszych informacji w odniesieniu do tekstu.
Osadzanie słów
Ta metoda sięga 2013 roku wraz z wprowadzeniem modelu o nazwie word2vec. Jest to „prosta” architektura sztucznej sieci neuronowej – w przeciwieństwie do tak zwanych architektur „głębokiego uczenia” – która proponuje reprezentowanie zbioru słów słownika jako wektorów. Innymi słowy, każde słowo jest reprezentowane przez wiersz liczb. Ten zestaw wektorów reprezentuje pole semantyczne słownictwa, z możliwością porównania tych wektorów ze sobą. Mierząc odległość między tymi wektorami, możemy stwierdzić, czy słowa są semantycznie podobne . Reprezentacja słów jako tablica liczb nazywana jest osadzaniami .
Gdy masz już wektorową reprezentację swojego zestawu słów, możesz porównać te słowa ze sobą. Dwa słowa będą miały zbliżone znaczenie, jeśli dwa wektory mają między sobą bardzo mały kąt: jest to odległość semantyczna – wartość od -1 do 1. Im wartość jest bliższa 1, tym więcej słów ma „podobny” oznaczający. Natomiast wartość bliska -1 wskaże „przeciwne” znaczenia, np. „dobry” i „zły”.
Celem tego modelu jest „wyprodukowanie” tych słynnych osadzeń z dużej ilości dokumentów tekstowych. Załóżmy, że masz kilkaset tysięcy tekstów, model nauczy się przewidywać słowo na podstawie słów, które są do niego podobne.
Model weźmie jako dane wejściowe kilka grup słów – na przykład o rozmiarze 5 – i spróbuje znaleźć najlepsze alternatywy dla <mask>
. W twoim korpusie znajdują się podobne frazy lub grupy słów; znajdziemy na przykład słowa: „jazz”, „rock”, „klasyka” czy „reggae”. Zatem wszystkie te słowa będą miały dość podobne wektory. W ten sposób model może łączyć pojęcia i słowa, które są w podobnym polu leksykalnym.
[Studium przypadku] Znajdź i napraw problemy z indeksowaniem
Z drugiej strony mogą istnieć niejasności dla słowa, które ma tę samą pisownię, ale nie ma tego samego znaczenia w kontekście: są to słowa homografu.
Na przykład:
- Usiadł nad brzegiem Sekwany.
- Złożyła pieniądze w banku Chase.
Jest to ograniczenie tego typu modelu: słowo będzie miało taką samą reprezentację wektorową niezależnie od kontekstu.
Transformatory
Nowsze podejście pojawiło się głównie w 2017 r. dzięki Uwaga to wszystko, czego potrzebujesz Google. Tam, gdzie metody word2vec miały problemy z reprezentowaniem dwóch identycznych słów, które nie miały tego samego znaczenia, modele typu transformatorów są w stanie odróżnić znaczenie słowa na podstawie jego kontekstu . Zwróć uwagę, że istnieją również modele NLP zdolne do uwzględniania sekwencji słów, takich jak RNN lub LSTM, ale nie zajmiemy się nimi w tym artykule.
Transformatory spopularyzują nową koncepcję w architekturze sieci neuronowych: mechanizm uwagi . Pozwala to znaleźć, w sekwencji słów, np. zdaniu, jak każde słowo jest powiązane z innymi.
Model BERT, stworzony przez Google w 2018 roku, jest potężnym i popularnym modelem. Zaletą tych modeli językowych jest to, że opierają się na modelu wstępnie wytrenowanym , tj. model został już przeszkolony na znacznej ilości tekstów w języku angielskim, francuskim itp. Możliwe jest następnie wykorzystanie go na podstawie bardziej szczegółowa analiza. Następnie można go używać w taki sam sposób, jak porównywanie tekstu, generowanie odpowiedzi na pytania, przeprowadzanie analizy sentymentu, dostrajanie bardziej szczegółowego tekstu itp.
Obraz został wygenerowany za pomocą narzędzia do wizualizacji exBERT . Widzimy, że wybrane słowo „pieniądze” jest silnie powiązane z „ wpłacanymi ” i „ bankowymi ”. Dzięki temu modelowi łatwiej jest usunąć niejednoznaczność słowa „ bank ” dzięki kontekstowi.
W przypadku KeyBERT jest to model wywodzący się z BERT o nazwie Sentence-BERT, który pozwala na łatwe semantyczne porównywanie zdań.
Jeśli chcesz dowiedzieć się więcej o wszystkich dostępnych modelach open source i wstępnie wytrenowanych, możesz odwiedzić centrum Huggingface, które specjalizuje się w przechowywaniu i udostępnianiu zestawów danych i modeli związanych z NLP (ale ostatnio także z dźwiękiem i obrazem).
Wyodrębnianie słów kluczowych za pomocą KeyBERT
Jak więc wykorzystać transformatory do wyodrębnienia odpowiednich słów kluczowych z tekstu? Istnieje kilka projektów, w tym KeyBERT: Minimalna ekstrakcja słów kluczowych za pomocą BERT, biblioteki Pythona o otwartym kodzie źródłowym, która wykorzystuje model BERT.
KeyBERT domyślnie używa transformatorów zdań opartych na BERT do reprezentowania zdania, a nie pojedynczego słowa jako wektora. To bardzo skuteczny sposób porównywania zdań lub grup słów. Zasada działania algorytmu KeyBERT jest dość prosta. Spójrzmy na przykładowy tekst, a następnie:
- Kod wyodrębni wszystkie unikalne słowa z tekstu. Na tym etapie często eliminowane są słowa stop.
- Obliczane są osadzenia całego tekstu i każdego słowa.
- Możemy wtedy obliczyć odległość semantyczną między wektorami pochodzącymi ze słów a wektorem reprezentującym tekst w całości.
Po obliczeniu wszystkich odległości możemy wyodrębnić słowa, które są ściśle związane z ogólnym znaczeniem tekstu: będą to słowa kluczowe wybrane przez algorytm.
Co więcej, KeyBERT daje możliwość wyboru długości fraz kluczowych: możemy w rzeczywistości wziąć albo pojedyncze słowa, albo pary, a nawet trzy słowa. Ponadto kod zapewnia sposób na zaimplementowanie metody „Maximal Marginal Relevance” (MMR) w celu zwiększenia różnorodności wyników. Pomaga to uniknąć powtórzenia terminu, który może mieć znaczenie w odniesieniu do treści dokumentu, ale który zbyt często pojawia się w wynikach, na przykład: „koncert jazzowy”, „muzyka jazzowa”, „styl jazzowy” itp.
Podsumowując, możliwe jest również użycie innych modeli NLP dla KeyBERT, takich jak modele spaCy lub flair.
Podobnie jak w poprzednim artykule, oto przykład słów kluczowych wyodrębnionych przez KeyBERT z tego samego artykułu o albumie Johna Coltrane'a Impressions:
„Impresje coltrane”, „kwartet muzyczny”, „skarb jazzowy”, „koncert John”, „sekwencja perłowa”, „repertuar graz”, „saksofony tenorowe”
Metody oceny
W tym i poprzednim artykule przedstawiliśmy kilka metod służących do wyodrębniania słów kluczowych z dokumentu: RAKE, Yake, TextRank i KeyBERT. Jednak ważne jest, aby móc wybrać właściwy w zależności od kontekstu.
Dlatego istotne jest przyjrzenie się metodom oceny w celu porównania wyników jednej metody z drugą. Na podstawie danych (document, keywords)
gdzie słowa kluczowe zostały zdefiniowane i zweryfikowane przez ludzi, możliwe jest porównanie wyników z modelu z tą „ rzeczywistością ”. Dysponujemy metrykami, takimi jak precyzja, przypomnienie i wynik f1, które są często wykorzystywane w problemach z klasyfikacją . Możemy zatem zbudować macierz pomyłek, wiedząc, czy dane słowo kluczowe wyodrębnione przez model rzeczywiście znajduje się na liście odpowiednich słów kluczowych.
Ponieważ modele mogą wyodrębnić serię słów kluczowych, często porównujemy pierwsze k słów kluczowych z podstawową prawdą . Ponieważ wyniki mogą się różnić w zależności od liczby słów kluczowych , które chcemy porównać, oceniamy model kilka razy zgodnie z wartością k . Te metryki nazywają się Precision@k
, co oznacza: „obliczam Dokładność na najwyższym k”.
[Ebook] Jak twój wewnętrzny schemat linkowania wpływa na Inrank
Precyzja
Jest to liczba poprawnych słów kluczowych w pierwszej k spośród wszystkich przewidywanych słów kluczowych .
Przypomnienie sobie czegoś
Jest to liczba poprawnych słów kluczowych w pierwszej kolejności spośród wszystkich słów kluczowych podstawowej prawdy.
f1-score
Jest to połączenie dwóch poprzednich wskaźników – lub innymi słowy harmonijna średnia między precyzją a przypomnieniem:
MAPA @ k
Średnia średnia precyzja
Pierwszym krokiem do obliczenia MAP jest obliczenie średniej precyzji. Weźmiemy wszystkie słowa kluczowe znalezione przez model i obliczymy P@k
dla każdego odpowiedniego słowa kluczowego znalezionego przez model. Jako przykład, aby obliczyć AP@5
z 3 odpowiednimi słowami kluczowymi z 5 proponowanych:
słowa kluczowe: koncert jazzowy muzyka saksofonowe radio istotne: 1 0 1 1 0 P@k: 1/1 2/3 3/4 AP: 1/3 (1 + 2/3 + 3/4) ~= 0,80
Zwracamy tutaj uwagę, że ważna jest pozycja odpowiednich słów kluczowych. W rzeczywistości AP nie będzie miał tego samego wyniku, jeśli pierwsze trzy słowa kluczowe z pięciu nie są odpowiednie (odpowiednie).
Następnie dla każdego (document, keywords)
obliczymy średnią wszystkich AP , aby ostatecznie uzyskać MAP.
Pamiętaj, że te różne metryki są również szeroko stosowane do oceny modeli rankingowych lub systemów skierowań.
Jedna mała krytyka niektórych z tych wskaźników dotyczy liczby odpowiednich słów kluczowych prawdy podstawowej, które mogą się różnić w zależności od zestawu danych i dokumentu.
- Na przykład
recall@k
: wynik może w dużej mierze zależeć od rozmiaru odpowiednich słów kluczowych podstawowej prawdy. Jeśli masz do 20 trafnych słów kluczowych, w przypadkurecall@10
porównasz pierwsze 10 słów kluczowych z tego zestawu 20 słów kluczowych. W najlepszym przypadku, jeśli wszystkie słowa kluczowe zaproponowane przez model są trafne, wynik przypominania nie przekroczy 0,5. - Z drugiej strony, jeśli liczba odpowiednich słów kluczowych prawdy podstawowej jest bardzo niska w porównaniu z tymi proponowanymi przez model, nie będziesz w stanie uzyskać dobrych wyników w zakresie
precision@k
. W przypadku pięciu trafnych słów kluczowych,precision@10
będzie miała co najwyżej wynik 0,5, ale nie więcej.
Niezależnie od metryk użytych do oceny wyników, konieczne jest posiadanie zbioru danych (tekst, słowa kluczowe), w którym słowa kluczowe zostały wcześniej zdefiniowane przez ludzi – autorów tekstów, czytelników, redaktorów itp. Istnieje kilka zbiorów danych, głównie w Angielski i na różne tematy: artykuły naukowe, streszczenia, wiadomości, IT itp. Na przykład tutaj jest to repozytorium Github KeywordExtractor-Datasets, które zawiera około dwudziestu zestawów danych.
Benchmarki
Poza prezentacją różnych metod ewaluacji, chciałbym również przedstawić „streszczenie” niektórych prac badawczych, które proponują punkty odniesienia.
Pierwsza z nich to badacze, którzy wdrożyli Yake! w artykule „YAKE! Ekstrakcja słów kluczowych z pojedynczych dokumentów przy użyciu wielu funkcji lokalnych”. Przeanalizowali swoją metodę na około dwudziestu różnych zestawach danych: PubMed, WikiNews, SemEval2010 i KDD dla najbardziej znanych, używając większości metryk opisanych powyżej: P@k
, recall@k
, itd. Yake! zostanie porównany z około dziesięcioma innymi metodami, w tym Rake, Text Rank itp. Dzięki konsolidacji wszystkich dostępnych zestawów danych oraz precyzji obliczeniowej i przywołania Yake! metoda jest albo lepsza, albo bardzo zbliżona do najnowocześniejszych metod. Na przykład dla f1@10
:
Zbiór danych | Jake! | Najlepszy lub drugi |
---|---|---|
WikiWiadomości | 0,450 | 0,337 |
KDD | 0,156 | 0,115 |
Sprawdź | 0,316 | 0,378 |
Jake! jest często do 50-100% lepsza, co jest zbliżone do wiodącej metody.
W innym, nowszym artykule „TNT-KID: Transformer-based neural tagger do identyfikacji słów kluczowych” porównujemy również metody tradycyjne i oparte na transformatorze . Lepiej sprawdzają się metody ekstrakcji za pomocą transformatorów . Bądź jednak ostrożny, ponieważ są to tak zwane „nadzorowane” metody, w przeciwieństwie do Rake, KeyBERT i Yake, które nie muszą być szkolone na zbiorze danych, aby uzyskać wyniki.
Na koniec przyjrzyjmy się dwóm innym benchmarkom:
- Proste nienadzorowane wyodrębnianie fraz kluczowych przy użyciu osadzania zdań wykorzystuje osadzanie słów i działa dobrze w porównaniu z TextRank w zestawach danych, takich jak Inspec i DUC.
- Wpis na blogu porównujący 7 algorytmów (w Pythonie): Ekstrakcja słów kluczowych — wzorzec 7 algorytmów w Pythonie. Autor porównuje wydajność pod względem czasu obliczeń w metodach KeyBERT, RAKE, Yake, a także liczbę odpowiednich słów, które każda metoda może wyodrębnić.
Wniosek
Jak widzieliście w tych dwóch artykułach, istnieje naprawdę wiele bardzo różnych sposobów wyodrębniania odpowiednich słów kluczowych z tekstu. Patrząc na różne testy porównawcze, zauważysz, że nie ma takiego, który naprawdę przewyższa wszystkie inne pod względem wskaźników. Będzie to zależało od tekstu i kontekstu. Co więcej, jak wskazał autor artykułu na blogu o 7 algorytmach ekstrakcji, możemy również polegać na czasie przetwarzania algorytmu w obliczu długiego tekstu.
Ten czas z pewnością będzie czynnikiem, jeśli chodzi o uruchomienie algorytmu i przetwarzanie setek tysięcy dokumentów. W przypadku KeyBERT powinieneś rozważyć infrastrukturę z GPU, aby radykalnie wydłużyć czas przetwarzania. W rzeczywistości ta metoda opiera się na transformatorach, które mają architekturę głębokiego uczenia, która wymaga dużej ilości obliczeń.
Gdybym miał dokonać wyboru, z pewnością byłby to między KeyBERT a Yake. Ten pierwszy za transformatory i aspekt semantyczny , drugi za sprawność i szybkość wykonania.
Odniesienia bibliograficzne
- Uwaga to wszystko, czego potrzebujesz, 2017
- BERT: Wstępne szkolenie z głębokich dwukierunkowych transformatorów do zrozumienia języka, 2019
- Samonadzorowane wyszukiwanie kontekstowych słów kluczowych i fraz kluczowych z samoopisywaniem. Sharma P. i Li Y. (2019)
- Eksploracja różnych ekstraktorów słów kluczowych — metryki i strategie oceny