Extrageți automat concepte și cuvinte cheie dintr-un text (Partea a II-a: abordare semantică)
Publicat: 2022-09-20Acest articol este o continuare a primei părți despre extragerea automată a cuvintelor cheie dintr-un text. Articolul anterior s-a ocupat de așa-numita abordare „tradițională” de a extrage cuvinte cheie dintr-un text: bazate pe statistici sau bazate pe grafice.
Aici, vom explora metode cu o abordare mai semantică . În primul rând, vom introduce încorporarea cuvintelor și transformatoarele , adică încorporarea contextuală. Apoi vom împărtăși un exemplu cu același text despre albumul lui John Coltrane, Impressions (sursa francemusique.fr) bazat pe modelul BERT. În cele din urmă vom prezenta câteva metode de evaluare precum P@k
, f1-score
precum și benchmark-uri din ultima tehnică.
Spre deosebire de abordarea tradițională, abordarea semantică vă permite să legați cuvinte care aparțin unui câmp lexical similar, chiar dacă sunt diferite. Ideea din spatele acestei abordări este de a renunța la calcularea frecvențelor de apariție a cuvintelor în text pentru a extrage cuvintele care au cel mai mult sens, cu alte cuvinte cele care oferă cele mai relevante informații în raport cu textul.
Înglobare de cuvinte
Această metodă datează din 2013 odată cu introducerea unui model numit word2vec. Este o arhitectură „simple” de rețea neuronală artificială – spre deosebire de așa-numitele arhitecturi „Deep Learning” – care își propun să reprezinte setul de cuvinte ale unui vocabular ca vectori. Cu alte cuvinte, fiecare cuvânt este reprezentat de o linie de numere. Acest set de vectori reprezintă câmpul semantic al vocabularului, având capacitatea de a compara acești vectori între ei. Măsurând distanța dintre acești vectori, putem spune dacă cuvintele sunt similare din punct de vedere semantic . Reprezentarea cuvintelor ca o matrice de numere se numește încorporare .
Odată ce aveți reprezentarea vectorială a setului de cuvinte, puteți compara aceste cuvinte între ele. Două cuvinte vor avea un sens apropiat dacă cei doi vectori au un unghi foarte mic între ei: aceasta este distanța semantică – o valoare între -1 și 1. Cu cât valoarea este mai aproape de 1, cu atât cuvintele au un „asemănător”. sens. O valoare apropiată de -1, dimpotrivă, va indica semnificații „opuse”, de exemplu „bun” și „rău”.
Obiectivul acestui model este de a „fabrica” aceste celebre înglobări dintr-o cantitate deloc neglijabilă de documente text. Să presupunem că aveți câteva sute de mii de texte, modelul va învăța să prezică un cuvânt pe baza cuvintelor care sunt similare cu acesta.
Modelul va lua ca intrare mai multe grupuri de cuvinte – de dimensiunea 5 de exemplu – și va încerca să găsească cele mai bune alternative la <mask>
. În corpus dumneavoastră, există expresii sau grupuri de cuvinte similare; vom putea găsi cuvintele: „jazz”, „rock”, „clasic” sau „reggae” de exemplu. Astfel, toate aceste cuvinte vor avea vectori destul de similari. Astfel, modelul poate reuni concepte și cuvinte care se află într-un câmp lexical similar.
[Studiu de caz] Găsiți și remediați problemele de indexare
Pe de altă parte, pot exista ambiguități pentru un cuvânt care are aceeași ortografie, dar nu are același sens în context: acestea sunt cuvinte omografe.
De exemplu:
- Se aşeză lângă malul râului Sena.
- Ea a depus banii la banca Chase.
Aceasta este o limitare a acestui tip de model: cuvântul va avea aceeași reprezentare vectorială indiferent de context.
Transformatoare
O abordare mai recentă a apărut în principal în 2017, cu Google Attention Is All You Need. Acolo unde metodele word2vec s-au luptat să reprezinte două cuvinte identice care nu aveau același înțeles, modelele de tip transformatoare sunt capabile să distingă sensul unui cuvânt în funcție de contextul său . Rețineți că există și modele NLP capabile să țină cont de secvențe de cuvinte precum RNN sau LSTM, dar nu le vom aborda în acest articol.
Transformers vor populariza un nou concept în arhitectura rețelelor neuronale: mecanismul atenției . Acest lucru vă permite să găsiți, într-o secvență de cuvinte, de exemplu o propoziție, modul în care fiecare cuvânt este legat de celelalte.
Modelul BERT, creat de Google în 2018, este un model puternic și popular. Avantajul acestor modele lingvistice este că se bazează pe un model pre-instruit , adică modelul a fost deja instruit pe o cantitate semnificativă de texte în engleză, franceză etc. Este posibil apoi să-l folosească pe baza unui analiză mai detaliată. Apoi, este posibil să îl utilizați ca atare pentru a compara text, pentru a genera răspunsuri de la întrebări, pentru a face o analiză a sentimentelor, pentru a face reglaj fin pe un corp de text mai specific etc.
Imaginea a fost generată cu instrumentul de vizualizare exBERT . Putem vedea că cuvântul selectat „bani” este strâns legat de „ depus ” și „ bancă ”. Atunci este mai ușor pentru model să elimine ambiguitatea de pe cuvântul „ bancă ” datorită contextului.
În cazul KeyBERT, este un model derivat din BERT numit Sentence-BERT care ne permite să comparăm cu ușurință propozițiile semantic.
Dacă doriți să aflați mai multe despre toate modelele open source și pre-antrenate disponibile, puteți vizita hub-ul Huggingface care este specializat în stocarea și partajarea seturilor de date și modelelor legate de NLP (dar și mai recent de audio și imagine).
Extragerea cuvintelor cheie cu KeyBERT
Deci, cum putem folosi transformatoare pentru a extrage cuvinte cheie relevante dintr-un text? Există mai multe proiecte, inclusiv KeyBERT: Extracție minimă de cuvinte cheie cu BERT, o bibliotecă Python open source care utilizează modelul BERT.
KeyBERT va folosi, în mod implicit, transformatorii de propoziție bazați pe BERT pentru a reprezenta o propoziție, mai degrabă decât un singur cuvânt, ca vector. Acesta este un mod foarte eficient de a compara propoziții sau grupuri de cuvinte. Principiul algoritmului KeyBERT este destul de simplu. Să ne uităm la un exemplu de text, apoi:
- Codul va extrage toate cuvintele unice din text. În acest pas, cuvintele oprite sunt adesea eliminate.
- Sunt calculate înglobarile întregului text și ale fiecărui cuvânt.
- Putem calcula apoi distanța semantică dintre vectorii care provin din cuvinte și vectorul care reprezintă textul în întregime.
Odată ce toate distanțele au fost calculate, putem extrage cuvintele care sunt strâns legate de sensul general al textului: acestea vor fi cuvintele cheie selectate de algoritm.
Mai mult, KeyBERT vă oferă posibilitatea de a selecta lungimea frazelor cheie : putem de fapt să luăm fie cuvinte simple, fie perechi sau chiar triple de cuvinte. Mai mult, codul oferă o modalitate de implementare a metodei „Relevanță marginală maximă” (MMR) pentru a crește diversitatea rezultatelor. Acest lucru vă ajută să evitați repetarea unui termen, care poate fi relevant în ceea ce privește conținutul documentului, dar care este prea des prezent în rezultate, de exemplu: „concert jazz”, „muzică jazz”, „stil jazz” , etc.
În concluzie, este posibil să folosiți și alte modele NLP pentru KeyBERT, cum ar fi modele de la spaCy sau flair.
Ca și în articolul precedent, iată un exemplu de cuvinte cheie extrase de KeyBERT din același articol despre albumul lui John Coltrane, Impressions:
„impresii coltrane”, „cvartet de muzică”, „comoara de jazz”, „concert de John”, „secvență de perle”, „repertoriu graz”, „saxofoane tenoare”
Metode de evaluare
În acest articol și în cel precedent am prezentat mai multe metode folosite pentru extragerea cuvintelor cheie dintr-un document: RAKE, Yake, TextRank și KeyBERT. Cu toate acestea, este important să-l poți alege pe cel potrivit în funcție de contextul tău.
Prin urmare, este relevant să ne uităm la metodele de evaluare pentru a compara rezultatele unei metode cu alta. Din datele (document, keywords)
în care cuvintele cheie au fost definite și validate de oameni, este posibil să se compare rezultatele unui model cu această „ realitate ”. Avem metrici precum precizia, rechemarea și scorul f1 care sunt adesea folosite în problemele de clasificare . Prin urmare, putem construi o matrice de confuzie știind dacă un anumit cuvânt cheie extras de model se află într-adevăr în lista de cuvinte cheie relevante.
Deoarece modelele pot extrage o serie de cuvinte cheie, adesea comparăm primele k cuvinte cheie cu adevărul de bază . Deoarece rezultatele pot varia în funcție de numărul de cuvinte cheie pe care dorim să le comparăm, evaluăm modelul de mai multe ori în funcție de valoarea k . Aceste valori se numesc Precision@k
, ceea ce înseamnă: „Calculez Precizia pe partea de sus-k”.
[Ebook] Cum afectează schema ta de conectare internă Inrank
Precizie
Acesta este numărul de cuvinte cheie corecte în top-k dintre toate cuvintele cheie prezise .
Amintiți-vă
Acesta este numărul de cuvinte cheie corecte în top-k din totalul cuvintelor cheie ale adevărului de bază.
scor f1
Este o combinație a celor două valori anterioare – sau, cu alte cuvinte, o medie armonioasă între precizie și reamintire:
HARTĂ @ k
Precizie medie medie
Primul pas pentru a calcula MAP este de a calcula Precizia medie. Vom lua toate cuvintele cheie găsite de model și vom calcula P@k
pentru fiecare cuvânt cheie relevant găsit de model. De exemplu, pentru a calcula AP@5
cu 3 cuvinte cheie relevante din cele 5 propuse:
cuvinte cheie: concert jazz muzică saxofon radio relevante: 1 0 1 1 0 P@k: 1/1 2/3 3/4 AP: 1/3 (1 + 2/3 + 3/4) ~= 0,80
Remarcăm aici că poziția cuvintelor cheie relevante este importantă. De fapt, AP -ul nu va avea același scor dacă primele trei cuvinte cheie din cele cinci nu sunt relevante (respectiv relevante).
Apoi, pentru fiecare (document, keywords)
, vom calcula media tuturor AP -urilor pentru a obține în final MAP-ul.
Rețineți că aceste valori diferite sunt, de asemenea, utilizate pe scară largă pentru a evalua modelele de clasare sau sistemele de recomandare.
O mică critică la adresa unora dintre aceste valori se referă la numărul de cuvinte cheie relevante pentru adevărul de bază, care pot varia în funcție de set de date și de document.
- De exemplu,
recall@k
: scorul poate depinde foarte mult de dimensiunea cuvintelor cheie relevante ale adevărului de bază. Dacă aveți până la 20 de cuvinte cheie relevante, pentru unrecall@10
veți compara primele 10 cuvinte cheie din acest set de 20 de cuvinte cheie. În cel mai bun caz, dacă toate cuvintele cheie propuse de model sunt relevante, scorul de reamintire nu va depăși 0,5. - Pe de altă parte, dacă numărul de cuvinte cheie relevante pentru adevărul terenului este foarte scăzut în comparație cu cele propuse de model, nu veți putea obține scoruri bune
precision@k
. Pentru cinci cuvinte cheie relevante pentru adevărul de bază,precision@10
va avea în cel mai bun caz un scor de 0,5, dar nu mai mult.
Oricare ar fi metricile utilizate pentru evaluarea rezultatelor, este necesar să existe un set de date (text, cuvinte cheie) în care cuvintele cheie au fost definite anterior de oameni – autorii textelor, cititori, editori etc. Există mai multe seturi de date, în principal în Engleză și pe diferite subiecte: articole științifice, rezumate, știri, IT etc. De exemplu, iată acest depozit Github KeywordExtractor-Datasets care listează aproximativ douăzeci de seturi de date.
Benchmark-uri
Dincolo de această prezentare a diferitelor metode de evaluare, aș dori să vă ofer și un „rezumat” al unor lucrări de cercetare care propun repere.
Primul este de către cercetătorii care au implementat Yake! metoda din lucrare, „YAKE! Extragerea cuvintelor cheie din documente individuale folosind mai multe caracteristici locale”. Ei și-au analizat metoda pe aproximativ douăzeci de seturi de date diferite: PubMed, WikiNews, SemEval2010 și KDD pentru cele mai cunoscute, folosind majoritatea parametrilor descriși mai sus: P@k
, recall@k
, etc. Yake! va fi comparat cu alte zece metode, inclusiv Rake, Text Rank, etc. Prin consolidarea tuturor seturilor de date disponibile și calculând precizia și retragerea , Yake! metoda este fie mai bună, fie foarte apropiată de metodele de ultimă generație. De exemplu, pentru f1@10
:
Setul de date | Yake! | Cel mai bun sau al doilea |
---|---|---|
WikiNews | 0,450 | 0,337 |
KDD | 0,156 | 0,115 |
Inspect | 0,316 | 0,378 |
Yake! este adesea cu până la 50-100% mai bună, ceea ce este aproape de metoda principală.
Într-o altă lucrare, mai recentă, „TNT-KID: Tagger neuronal bazat pe transformator pentru identificarea cuvintelor cheie”, comparăm și metodele tradiționale și cele bazate pe transformator . Metodele de extracție cu ajutorul transformatoarelor funcționează mai bine. Fii atent totuși, deoarece acestea sunt așa-numitele metode „supravegheate”, spre deosebire de Rake, KeyBERT și Yake, care nu trebuie să fie instruite pe un corp de date pentru a produce rezultate.
În cele din urmă, să aruncăm o privire la alte două repere:
- Extragerea simplă nesupravegheată a frazelor cheie folosind Sentence Embeddings folosește încorporarea cuvintelor și funcționează bine în comparație cu TextRank pe seturi de date precum Inspec și DUC.
- O postare pe blog care compară 7 algoritmi (în Python): Extragerea cuvintelor cheie — Un etalon de 7 algoritmi în Python. Autorul compară performanța în termeni de timp de calcul în cadrul metodelor KeyBERT, RAKE, Yake, precum și numărul de cuvinte relevante pe care le poate extrage fiecare metodă.
Concluzie
După cum ați văzut în aceste două articole, există într-adevăr o multitudine de moduri foarte diferite de a extrage cuvinte cheie relevante dintr-un text. Privind diferitele benchmark-uri, veți fi observat că nu există niciunul care să le depășească cu adevărat pe toate celelalte în ceea ce privește metrica. Va depinde de text și de context. Mai mult, așa cum a subliniat autorul articolului de blog despre cei 7 algoritmi de extracție, ne putem baza și pe timpul de procesare al unui algoritm atunci când ne confruntăm cu un text lung.
Acest timp va fi cu siguranță un factor atunci când vine vorba de punerea în acțiune a unui algoritm și procesarea a sute de mii de documente. În cazul KeyBERT, ar trebui să luați în considerare o infrastructură cu GPU pentru a crește radical timpul de procesare. De fapt, această metodă se bazează pe Transformers care au o arhitectură Deep Learning care necesită mult calcul.
Dacă ar fi să fac o alegere, cu siguranță ar fi între KeyBERT și Yake. Primul pentru transformatoare și aspectul semantic , cel din urmă pentru eficiența și viteza de execuție.
Referințe bibliografice
- Atenție este tot ce ai nevoie, 2017
- BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding, 2019
- Preluare auto-supravegheată contextuală a cuvintelor cheie și a frazelor cheie cu autoetichetare. Sharma P. și Li Y. (2019)
- Explorarea diferitelor extractoare de cuvinte cheie — Metrici și strategii de evaluare