Estrarre automaticamente concetti e parole chiave da un testo (Parte II: approccio semantico)
Pubblicato: 2022-09-20Questo articolo è un seguito alla prima parte sull'estrazione automatica di parole chiave da un testo. Il precedente articolo trattava dell'approccio cosiddetto “tradizionale” per estrarre parole chiave da un testo: basato su statistiche o su grafico.
Qui, esploreremo i metodi con un approccio più semantico . In primo luogo, introdurremo incorporamenti di parole e trasformatori , ovvero incorporamenti contestuali. Quindi condivideremo un esempio con lo stesso testo sull'album di John Coltrane, Impressions (fonte francemusique.fr) basato sul modello BERT. Infine presenteremo alcuni metodi di valutazione come P@k
, f1-score
e benchmark dall'ultimo stato dell'arte.
A differenza dell'approccio tradizionale, l'approccio semantico consente di collegare parole che appartengono a un campo lessicale simile, anche se diverso. L'idea alla base di questo approccio è di rinunciare al calcolo delle frequenze di occorrenza delle parole nel testo per estrarre le parole che hanno più senso, in altre parole quelle che forniscono le informazioni più rilevanti in relazione al testo.
Incorporamenti di parole
Questo metodo risale al 2013 con l'introduzione di un modello chiamato word2vec. Si tratta di una “semplice” architettura di rete neurale artificiale – a differenza delle cosiddette architetture “Deep Learning” – che si propongono di rappresentare l'insieme delle parole di un vocabolario come vettori. In altre parole, ogni parola è rappresentata da una linea di numeri. Questo insieme di vettori rappresenta il campo semantico del vocabolario, con la possibilità di confrontare questi vettori tra loro. Misurando una distanza tra questi vettori, possiamo dire se le parole sono semanticamente simili . La rappresentazione delle parole come un array di numeri è chiamata embedding .
Una volta che hai la rappresentazione vettoriale del tuo set di parole, puoi confrontare queste parole tra loro. Due parole avranno un significato stretto se i due vettori hanno un angolo molto piccolo tra loro: questa è la distanza semantica – un valore compreso tra -1 e 1. Più il valore è vicino a 1, più le parole hanno un "simile" significato. Un valore vicino a -1 al contrario indicherà significati “opposti”, ad esempio “buono” e “cattivo”.
L'obiettivo di questo modello è quello di “fabbricare” questi famosi incastri a partire da una quantità non trascurabile di documenti di testo. Diciamo che hai qualche centinaio di migliaia di testi, il modello imparerà a predire una parola in base alle parole che le sono simili.
Il modello prenderà in input diversi gruppi di parole – di dimensione 5 per esempio – e cercherà di trovare le migliori alternative a <mask>
. All'interno del tuo corpus, ci sono frasi o gruppi di parole simili; potremo trovare le parole: “jazz”, “rock”, “classical” o “reggae” per esempio. Pertanto, tutte queste parole avranno vettori abbastanza simili. Pertanto, il modello può riunire concetti e parole che si trovano in un campo lessicale simile.
[Case Study] Trova e risolvi i problemi di indicizzazione
D'altra parte, possono esserci ambiguità per una parola che ha la stessa ortografia ma non ha lo stesso significato nel contesto: si tratta di parole omografiche.
Per esempio:
- Si sedette accanto alla riva del fiume Senna.
- Ha depositato i soldi presso la banca Chase.
Questa è una limitazione di questo tipo di modello: la parola avrà la stessa rappresentazione vettoriale indipendentemente dal contesto.
Trasformatori
Un approccio più recente è emerso principalmente nel 2017 con Attention Is All You Need di Google. Laddove i metodi word2vec faticavano a rappresentare due parole identiche che non avevano lo stesso significato, i modelli di tipo Transformers sono in grado di distinguere il significato di una parola in base al suo contesto . Si noti che esistono anche modelli NLP in grado di tenere conto di sequenze di parole come RNN o LSTM, ma non le affronteremo in questo articolo.
I trasformatori renderanno popolare un nuovo concetto nell'architettura delle reti neurali: il meccanismo dell'attenzione . Ciò consente di trovare, all'interno di una sequenza di parole, ad esempio una frase, come ciascuna parola è correlata alle altre.
Il modello BERT, creato da Google nel 2018, è un modello potente e popolare. Il vantaggio di questi modelli linguistici è che si basano su un modello pre-addestrato , ovvero il modello è già stato formato su una quantità significativa di testi in inglese, francese, ecc. È quindi possibile utilizzarlo sulla base di un analisi più dettagliata. È quindi possibile utilizzarlo così com'è per confrontare il testo, generare risposte da domande, eseguire analisi del sentimento, eseguire la messa a punto su un corpo di testo più specifico, ecc.
L'immagine è stata generata con lo strumento di visualizzazione exBERT . Possiamo notare che la parola scelta “denaro” è fortemente legata a “ depositato ” e “ banca ”. È quindi più facile per il modello rimuovere l'ambiguità sulla parola " banca " grazie al contesto.
Nel caso di KeyBERT, si tratta di un modello derivato da BERT chiamato Sentence-BERT che ci permette di confrontare facilmente le frasi semanticamente.
Se vuoi saperne di più su tutti i modelli open source e pre-addestrati disponibili, puoi visitare l'hub Huggingface specializzato nell'archiviazione e condivisione di set di dati e modelli relativi alla PNL (ma anche, più recentemente, all'audio e alle immagini).
Estrazione di parole chiave con KeyBERT
Quindi, come possiamo utilizzare i trasformatori per estrarre parole chiave pertinenti da un testo? Esistono diversi progetti tra cui KeyBERT: estrazione di parole chiave minime con BERT, una libreria Python open source che utilizza il modello BERT.
KeyBERT, per impostazione predefinita, utilizzerà i trasformatori di frasi basati su BERT per rappresentare una frase, anziché una singola parola, come vettore. Questo è un modo molto efficiente per confrontare frasi o gruppi di parole. Il principio dell'algoritmo KeyBERT è abbastanza semplice. Diamo un'occhiata a un testo di esempio, quindi:
- Il codice estrarrà tutte le parole univoche dal testo. In questo passaggio, le stopword vengono spesso eliminate.
- Vengono calcolati gli incastri dell'intero testo e di ogni parola.
- Possiamo quindi calcolare la distanza semantica tra i vettori provenienti dalle parole e il vettore che rappresenta il testo nella sua interezza.
Una volta calcolate tutte le distanze, possiamo estrarre le parole che sono strettamente legate al significato complessivo del testo: queste saranno le parole chiave selezionate dall'algoritmo.
KeyBERT, inoltre, ti dà la possibilità di selezionare la lunghezza delle keyphrases : possiamo infatti prendere sia singole parole, sia coppie o anche triple di parole. Inoltre, il codice fornisce un modo per implementare il metodo di "rilevanza marginale massima" (MMR) al fine di aumentare la diversità dei risultati. Questo aiuta ad evitare la ripetizione di un termine, che può essere rilevante rispetto al contenuto del documento, ma che troppo spesso è presente nei risultati, ad esempio: “concerto jazz”, “musica jazz”, “stile jazz” , eccetera.
Per concludere, è possibile utilizzare anche altri modelli NLP per KeyBERT come i modelli di spaCy o flair.
Come nell'articolo precedente, ecco un esempio delle parole chiave estratte da KeyBERT dallo stesso articolo sull'album di John Coltrane, Impressions:
“coltrane impressions”, “music quartet”, “jazz Treasure”, “john concert”, “pearl sequence”, “graz repertoire”, “sassofoni tenore”
Metodi di valutazione
In questo articolo e nel precedente abbiamo presentato diversi metodi utilizzati per estrarre le parole chiave da un documento: RAKE, Yake, TextRank e KeyBERT. Tuttavia, è importante essere in grado di scegliere quello giusto in base al proprio contesto.
È quindi importante esaminare i metodi di valutazione per confrontare i risultati di un metodo con un altro. Dai dati (document, keywords)
in cui le parole chiave sono state definite e validate dall'uomo, è possibile confrontare i risultati di un modello con questa “ realtà ”. Abbiamo parametri come precisione, richiamo e punteggio f1 che vengono spesso utilizzati nei problemi di classificazione . Possiamo quindi costruire una matrice di confusione sapendo se una determinata parola chiave estratta dal modello è effettivamente nell'elenco delle parole chiave rilevanti.
Poiché i modelli possono estrarre una serie di parole chiave, spesso confrontiamo le prime k parole chiave con la verità fondamentale . Poiché i risultati possono variare in base al numero di parole chiave che desideriamo confrontare, valutiamo il modello più volte in base al valore k . Queste metriche sono chiamate Precision@k
che significa: "calcolo la precisione sulla k superiore".
[Ebook] In che modo il tuo schema di collegamento interno influisce su Inrank
Precisione
Questo è il numero di parole chiave corrette nella top-k di tutte le parole chiave previste .
Richiamare
Questo è il numero di parole chiave corrette nella parte superiore del totale delle parole chiave della verità fondamentale.
punteggio f1
È una combinazione delle due metriche precedenti, o in altre parole una media armoniosa tra precisione e ricordo:
MAPPA @ k
Precisione media media
Il primo passo per calcolare la MAP è calcolare la Precisione Media. Prenderemo tutte le parole chiave trovate dal modello e calcoleremo il P@k
per ogni parola chiave rilevante trovata dal modello. Ad esempio, per calcolare AP@5
con 3 parole chiave rilevanti delle 5 proposte:
parole chiave: musica jazz da concerto sassofono radio rilevante: 1 0 1 1 0 P@k: 1/1 3/3 3/4 PA: 1/3 (1 + 2/3 + 3/4) ~= 0,80
Notiamo qui che la posizione delle parole chiave rilevanti è importante. Infatti, l' AP non avrà lo stesso punteggio se le prime tre parole chiave delle cinque non sono rilevanti (rispettivamente rilevanti).
Quindi, per ciascuno (document, keywords)
, calcoleremo la media di tutti gli AP per ottenere finalmente la MAP.
Si noti che queste diverse metriche sono ampiamente utilizzate anche per valutare i modelli di classificazione o i sistemi di riferimento.
Una piccola critica ad alcune di queste metriche riguarda il numero di parole chiave della verità fondamentale, che possono variare in base al set di dati e al documento.
- Ad esempio il
recall@k
: il punteggio può dipendere molto dalla dimensione delle parole chiave rilevanti della verità di base. Se hai fino a 20 parole chiave pertinenti, per unrecall@10
confronterai le prime 10 parole chiave in questo set di 20 parole chiave. Nel migliore dei casi, se tutte le parole chiave proposte dal modello sono rilevanti, il punteggio di richiamo non sarà superiore a 0,5. - D'altra parte, se il numero di parole chiave ground truth rilevanti è molto basso rispetto a quelle proposte dal modello, non sarai in grado di ottenere buoni punteggi
precision@k
. Per cinque parole chiave relative alla verità fondamentale,precision@10
avrà al massimo un punteggio di 0,5 ma non di più.
Qualunque sia la metrica utilizzata per valutare i risultati, è necessario disporre di un set di dati (testo, parole chiave) in cui le parole chiave sono state precedentemente definite da persone: autori dei testi, lettori, editori, ecc. Esistono diversi set di dati, principalmente in Inglese e su argomenti diversi: articoli scientifici, abstract, notizie, IT, ecc. Ad esempio, ecco questo repository Github KeywordExtractor-Datasets che elenca una ventina di set di dati.
Punti di riferimenti
Oltre a questa presentazione dei vari metodi di valutazione, vorrei anche fornirvi un “riassunto” di alcuni documenti di ricerca che propongono dei benchmark.
Il primo è dei ricercatori che hanno implementato Yake! metodo nel documento, “YAKE! Estrazione di parole chiave da singoli documenti utilizzando più funzionalità locali”. Hanno analizzato il loro metodo su una ventina di diversi dataset: PubMed, WikiNews, SemEval2010 e KDD per i più noti, utilizzando la maggior parte delle metriche sopra descritte: P@k
, recall@k
, ecc. Yake! verrà confrontato con una decina di altri metodi tra cui Rake, Text Rank, ecc. Consolidando tutti i set di dati disponibili e calcolando precisione e richiamo , Yake! metodo è migliore o molto vicino ai metodi più avanzati. Ad esempio, per f1@10
:
Set di dati | Yake! | Migliore o 2° |
---|---|---|
WikiNotizie | 0,450 | 0,337 |
KDD | 0,156 | 0,115 |
Ispezionare | 0,316 | 0,378 |
Yake! è spesso fino al 50-100% migliore, che è vicino al metodo principale.
In un altro documento più recente "TNT-KID: tagger neurale basato su Transformer per l'identificazione delle parole chiave" confrontiamo anche i metodi tradizionali e quelli basati su Transformer . I metodi di estrazione utilizzando Transformers funzionano meglio. Fai attenzione però, poiché questi sono i cosiddetti metodi "supervisionati" a differenza di Rake, KeyBERT e Yake che non hanno bisogno di essere addestrati su un corpo di dati per produrre risultati.
Infine, diamo un'occhiata ad altri due benchmark:
- La semplice estrazione non supervisionata di frasi chiave utilizzando Sentence Embeddings utilizza incorporamenti di parole e si comporta bene rispetto a TextRank su set di dati come Inspec e DUC.
- Un post sul blog che confronta 7 algoritmi (in Python): Keyword Extraction — Un benchmark di 7 algoritmi in Python. L'autore confronta le prestazioni in termini di tempo di calcolo tra i metodi KeyBERT, RAKE, Yake e il numero di parole rilevanti che ciascun metodo può estrarre.
Conclusione
Come hai visto in questi due articoli, ci sono davvero una moltitudine di modi molto diversi per estrarre parole chiave pertinenti da un testo. Osservando i diversi benchmark, avrai notato che non ce n'è uno che superi davvero tutti gli altri in termini di metriche. Dipenderà dal testo e dal contesto. Inoltre, come ha sottolineato l'autore dell'articolo del blog sui 7 algoritmi di estrazione, possiamo anche fare affidamento sul tempo di elaborazione di un algoritmo di fronte a un testo lungo.
Questa volta sarà sicuramente un fattore determinante quando si tratta di mettere in atto un algoritmo ed elaborare centinaia di migliaia di documenti. Nel caso di KeyBERT, dovresti considerare un'infrastruttura con GPU per aumentare radicalmente il tempo di elaborazione. In effetti, questo metodo si basa su Transformers che hanno un'architettura di Deep Learning che richiede molta elaborazione.
Se dovessi fare una scelta, sarebbe sicuramente tra KeyBERT e Yake. Il primo per i trasformatori e l'aspetto semantico , il secondo per la sua efficienza e velocità di esecuzione.
Riferimenti bibliografici
- L'attenzione è tutto ciò di cui hai bisogno, 2017
- BERT: Pre-formazione di trasformatori bidirezionali profondi per la comprensione del linguaggio, 2019
- Recupero contestuale di parole chiave e frasi chiave autocontrollato con etichettatura automatica. Sharma P. & Li Y. (2019)
- Esplorazione di diversi estrattori di parole chiave: metriche e strategie di valutazione