Foto di Mikechie Esparagóza
Ogni giorno, abbiamo a che fare per la maggior parte del tempo con testo senza etichetta e gli algoritmi di apprendimento supervisionato non possono essere utilizzati affatto per estrarre informazioni dai dati. Un sottocampo del linguaggio naturale può rivelare la struttura sottostante in grandi quantità di testo. Questa disciplina si chiama Topic Modeling, cioè è specializzata nell'estrarre argomenti dal testo.
In questo contesto, gli approcci convenzionali, come la Latent Dirichlet Allocation e la Non-Negative Matrix Factorization, hanno dimostrato di non catturare bene le relazioni tra le parole poiché si basano su bag-of-word.
Per questo motivo, ci concentreremo su due approcci promettenti, Top2Vec e BERTopic, che affrontano questi inconvenienti sfruttando modelli linguistici pre-addestrati per generare argomenti. Iniziamo!
Top2Vec è un modello in grado di rilevare automaticamente argomenti dal testo utilizzando vettori di parole pre-addestrati e creando argomenti, documenti e vettori di parole incorporati significativi.
In questo approccio, la procedura per estrarre gli argomenti può essere suddivisa in diverse fasi:
- Crea incorporamento semantico: vengono creati documenti incorporati congiuntamente e vettori di parole. L'idea è che documenti simili dovrebbero essere più vicini nello spazio di incorporamento, mentre documenti dissimili dovrebbero essere distanti tra loro.
- Ridurre la dimensionalità dell'incorporamento del documento: L'applicazione dell'approccio di riduzione della dimensionalità è importante per preservare la maggior parte della variabilità dell'incorporamento dei documenti riducendo allo stesso tempo lo spazio dimensionale elevato. Inoltre, consente l'identificazione di aree dense, in cui ogni punto rappresenta un vettore di documento. UMAP è il tipico approccio di riduzione della dimensionalità scelto in questo passaggio perché è in grado di preservare la struttura locale e globale dei dati ad alta dimensione.
- Identificare gruppi di documenti: HDBScan, un approccio di clustering basato sulla densità, viene applicato per trovare aree dense di documenti simili. Ad ogni documento viene assegnato un rumore se non si trova in un cluster denso, o un'etichetta se appartiene a un'area densa.
- Calcola i centroidi nello spazio di incorporamento originale: Il baricentro è calcolato considerando lo spazio dimensionale elevato, invece dello spazio di inclusione ridotto. La strategia classica consiste nel calcolare la media aritmetica di tutti i vettori di documenti appartenenti ad un'area densa, ottenuta nel passo precedente con HDBSCAN. In questo modo, viene generato un vettore di argomento per ogni cluster.
- Trova le parole per ogni vettore di argomento: i vettori parola più vicini al vettore documento sono semanticamente i più rappresentativi.
Esempio di Top2Vec
In questo tutorial, analizzeremo le recensioni negative di McDonald's da un set di dati disponibile su dati.mondo. Individuare gli argomenti da queste recensioni può essere prezioso per la multinazionale per migliorare i prodotti e l'organizzazione di questa catena di fast food nelle località USA fornite dai dati.
import pandas as pd
from top2vec import Top2Vec file_path = "McDonalds-Yelp-Sentiment-DFE.csv"
df = pd.read_csv( file_path, usecols=["_unit_id", "city", "review"], encoding="unicode_escape",
)
df.head()
docs_bad = df["review"].values.tolist()
In una singola riga di codice, eseguiremo tutti i passaggi del top2vec spiegato in precedenza.
topic_model = Top2Vec( docs_bad, embedding_model="universal-sentence-encoder", speed="deep-learn", tokenizer=tok, ngram_vocab=True, ngram_vocab_args={"connector_words": "phrases.ENGLISH_CONNECTOR_WORDS"},
)
Gli argomenti principali di Top2Vec sono:
- docs_bad: è un elenco di stringhe.
- universal-sentence-encoder: è il modello di incorporamento pre-addestrato scelto.
- deep-learn: è un parametro che determina la qualità del vettore del documento prodotto.
topic_model.get_num_topics() #3
topic_words, word_scores, topic_nums = topic_model.get_topics(3) for topic in topic_nums: topic_model.generate_topic_wordcloud(topic)
Più
Dalle nuvole di parole, possiamo dedurre che l'argomento 0 riguarda lamentele generali sul servizio in McDonald, come "servizio lento", "servizio orribile" e "ordine sbagliato", mentre l'argomento 1 e 2 si riferiscono rispettivamente al cibo della colazione ( McMuffin, biscotto, uovo) e caffè (caffè freddo e tazza di caffè).
Ora proviamo a cercare i documenti utilizzando due parole chiave, sbagliate e lente:
( documents, document_scores, document_ids,
) = topic_model.search_documents_by_keywords( keywords=["wrong", "slow"], num_docs=5
)
for doc, score, doc_id in zip(documents, document_scores, document_ids): print(f"Document: {doc_id}, Score: {score}") print("-----------") print(doc) print("-----------") print()
Produzione:
Document: 707, Score: 0.5517634093633295
-----------
horrible.... that is all. do not go there.
----------- Document: 930, Score: 0.4242547340973836
-----------
no drive through :-/
----------- Document: 185, Score: 0.39162203345993046
-----------
the drive through line is terrible. they are painfully slow.
----------- Document: 181, Score: 0.3775083338082392
-----------
awful service and extremely slow. go elsewhere.
----------- Document: 846, Score: 0.35400602635951994
-----------
they have bad service and very rude
-----------
"BERTopic è una tecnica di modellazione degli argomenti che sfrutta i trasformatori e c-TF-IDF per creare cluster densi che consentono argomenti facilmente interpretabili mantenendo le parole importanti nelle descrizioni degli argomenti."
Come suggerisce il nome, BERTopic utilizza potenti modelli di trasformatore per identificare gli argomenti presenti nel testo. Un'altra caratteristica di questo algoritmo di modellazione dell'argomento è l'uso di una variante di TF-IDF, chiamata variazione basata sulla classe di TF-IDF.
Come Top2Vec, non ha bisogno di conoscere il numero di argomenti, ma estrae automaticamente gli argomenti.
Inoltre, analogamente a Top2Vec, è un algoritmo che prevede diverse fasi. I primi tre passaggi sono gli stessi: creazione di documenti incorporati, riduzione della dimensionalità con UMAP e clustering con HDBScan.
Le fasi successive iniziano a divergere da Top2Vec. Dopo aver trovato le aree dense con HDBSCAN, ogni argomento viene tokenizzato in una rappresentazione bag-of-words, che tiene conto se la parola compare o meno nel documento. Dopo che i documenti appartenenti a un cluster sono considerati un documento unico e viene applicato TF-IDF. Quindi, per ogni argomento, identifichiamo le parole più rilevanti, che dovrebbero avere il più alto c-TF-IDF.
Esempio di BERTopic
Ripetiamo l'analisi sullo stesso set di dati.
Estrarremo gli argomenti dalle recensioni utilizzando BERTopic:
model_path_bad = 'model/bert_bad'
topic_model_bad = train_bert(docs_bad,model_path_bad)
freq_df = topic_model_bad.get_topic_info()
print("Number of topics: {}".format( len(freq_df)))
freq_df['Percentage'] = round(freq_df['Count']/freq_df['Count'].sum() * 100,2)
freq_df = freq_df.iloc[:,[0,1,3,2]]
freq_df.head()
La tabella restituita dal modello fornisce informazioni sui 14 argomenti estratti. L'argomento corrisponde all'identificatore dell'argomento, ad eccezione di tutti i valori anomali ignorati che sono etichettati come -1.
Passiamo ora alla parte più interessante riguardante la visualizzazione dei nostri argomenti in grafici interattivi, come la visualizzazione dei termini più rilevanti per ogni argomento, la mappa della distanza intertopica, la rappresentazione bidimensionale dello spazio di incorporamento e la gerarchia degli argomenti.
Cominciamo a mostrare i grafici a barre per i primi dieci argomenti. Per ogni argomento, possiamo osservare le parole più importanti, ordinate in ordine decrescente in base al punteggio c-TF-IDF. Più una parola è rilevante, più il punteggio è alto.
Il primo argomento contiene parole generiche, come posizione e cibo, argomento 1 ordine e attesa, argomento 2 peggiore e servizio, argomento 3 luogo e sporco, e così via.
Dopo aver visualizzato i grafici a barre, è il momento di dare un'occhiata alla mappa della distanza intertopica. Riduciamo la dimensionalità del punteggio c-TF-IDF in uno spazio bidimensionale per visualizzare gli argomenti in una trama. In basso è presente uno slider che permette di selezionare l'argomento che verrà colorato in rosso. Possiamo notare che gli argomenti sono raggruppati in due diversi cluster, uno con tematiche generiche come cibo, pollo e location, e uno con diversi aspetti negativi, come peggior servizio, sporco, luogo e freddo.
Il grafico successivo permette di vedere la relazione tra le recensioni e gli argomenti. In particolare, può essere utile capire perché una recensione è assegnata a un argomento specifico ed è allineata con le parole più rilevanti trovate. Ad esempio, possiamo concentrarci sul cluster rosso, corrispondente all'argomento 2 con alcune parole sul peggior servizio. I documenti all'interno di questa area densa sembrano piuttosto negativi, come "Servizio clienti terribile e cibo ancora peggiore".
A prima vista, questi approcci hanno molti aspetti in comune, come trovare automaticamente il numero di argomenti, nessuna necessità di pre-elaborazione nella maggior parte dei casi, l'applicazione di UMAP per ridurre la dimensionalità dei documenti incorporati e, quindi, HDBSCAN viene utilizzato per modellando questi incorporamenti di documenti ridotti, ma sono fondamentalmente diversi quando si osserva il modo in cui assegnano gli argomenti ai documenti.
Top2Vec crea rappresentazioni di argomenti trovando parole situate vicino al centroide di un cluster.
A differenza di Top2Vec, BERTopic non tiene conto del centroide del cluster, ma considera tutti i documenti di un cluster come un documento unico ed estrae le rappresentazioni dei topic utilizzando una variazione class-based di TF-IDF.
Top2Vec | BERTopic |
La strategia per estrarre gli argomenti in base ai centroidi del cluster. | La strategia per estrarre argomenti basati su c-TF-IDF. |
Non supporta la modellazione dinamica degli argomenti. | Supporta la modellazione dinamica degli argomenti. |
Crea nuvole di parole per ogni argomento e fornisce strumenti di ricerca per argomenti, documenti e parole. | Permette di costruire grafici di visualizzazione interattiva, consentendo l'interpretazione degli argomenti estratti. |
Il Topic Modeling è un campo in crescita dell'elaborazione del linguaggio naturale e ci sono numerose possibili applicazioni, come recensioni, audio e post sui social media. Come è stato mostrato, questo articolo fornisce una panoramica di Topi2Vec e BERTopic, che sono due approcci promettenti, che possono aiutarti a identificare gli argomenti con poche righe di codice e interpretare i risultati attraverso visualizzazioni di dati. Se hai domande su queste tecniche o hai altri suggerimenti su altri approcci per rilevare argomenti, scrivilo nei commenti.
Eugenia Anello è attualmente assegnista di ricerca presso il Dipartimento di Ingegneria dell'Informazione dell'Università di Padova. Il suo progetto di ricerca è incentrato sull'apprendimento continuo combinato con il rilevamento delle anomalie.
- Distribuzione di contenuti basati su SEO e PR. Ricevi amplificazione oggi.
- Platoblockchain. Web3 Metaverse Intelligence. Conoscenza amplificata. Accedi qui.
- Fonte: https://www.kdnuggets.com/2023/01/topic-modeling-approaches-top2vec-bertopic.html?utm_source=rss&utm_medium=rss&utm_campaign=topic-modeling-approaches-top2vec-vs-bertopic
- 1
- 10
- 100
- 7
- a
- capace
- Chi siamo
- Il mio account
- Ad
- indirizzo
- Dopo shavasana, sedersi in silenzio; saluti;
- algoritmo
- Algoritmi
- Allineati
- Tutti
- assegnazione
- Consentire
- consente
- importi
- .
- analizzare
- ed
- rilevamento anomalie
- Un altro
- Applicazioni
- applicazioni
- applicato
- approccio
- approcci
- RISERVATA
- aree
- argomenti
- articolo
- aspetti
- addetto
- Audio
- automaticamente
- disponibile
- Vasca
- bar
- basato
- perché
- fra
- Parte inferiore
- Colazione
- Costruzione
- costruisce
- calcolo
- detto
- non può
- capace
- catturare
- casi
- catena
- caratteristica
- Grafici
- scelto
- Città
- classico
- Chiudi
- più vicino
- Cluster
- il clustering
- codice
- Caffè
- combinato
- Commenti
- Uncommon
- reclami
- considerato
- considerando
- contiene
- contesto
- convenzionale
- Corrispondente
- corrisponde
- creare
- creato
- crea
- Creazione
- creazione
- Coppa
- Attualmente
- cliente
- Servizio clienti
- dati
- giorno
- trattare
- dimostrato
- Shirts Department
- rivelazione
- determina
- diverso
- distanza
- lontano
- Divergere
- documento
- documenti
- non
- inconvenienti
- guidare
- guidare attraverso
- dinamico
- ogni
- facilmente
- altrove
- incorporato
- Ingegneria
- Anche
- esempio
- Tranne
- ha spiegato
- estratto
- estratti
- estremamente
- FAST
- compagno
- pochi
- campo
- Trovare
- ricerca
- Nome
- Focus
- concentrato
- cibo
- essere trovato
- da
- fondamentalmente
- Generale
- generare
- generato
- ottenere
- globali
- Go
- andando
- grafico
- grafici
- Crescita
- Aiuto
- gerarchia
- Alta
- superiore
- massimo
- HTTPS
- idea
- Identificazione
- identificatore
- identificare
- identificazione
- importare
- importante
- competenze
- in
- informazioni
- invece
- interattivo
- interessante
- interpretazione
- IT
- Italia
- KDnuggets
- conservazione
- Sapere
- Discografica
- Lingua
- grandi
- apprendimento
- leveraggi
- linea
- Linee
- Lista
- locale
- collocato
- località
- posizioni
- Guarda
- cerca
- Principale
- molti
- carta geografica
- Matrice
- MCDONALD
- significativo
- Media
- modello
- modellismo
- modellismo
- modelli
- Scopri di più
- maggior parte
- multinazionale
- Nome
- Naturale
- Linguaggio naturale
- Elaborazione del linguaggio naturale
- Bisogno
- negativo.
- GENERAZIONE
- Rumore
- numero
- numerose
- osservare
- ottenuto
- ONE
- minimo
- organizzazione
- i
- Altro
- panda
- parametro
- parte
- particolare
- percentuale
- eseguire
- Frasi
- posto
- Platone
- Platone Data Intelligence
- PlatoneDati
- punto
- possibile
- Post
- potente
- presenti
- precedente
- in precedenza
- lavorazione
- Prodotto
- Prodotti
- progetto
- promettente
- purché
- fornisce
- qualità
- Domande
- ragione
- Rosso
- ridurre
- Ridotto
- riducendo
- per quanto riguarda
- rapporto
- Relazioni
- pertinente
- ripetere
- rappresentazione
- rappresentante
- rappresenta
- riparazioni
- Risultati
- rivelare
- recensioni
- Recensioni
- stesso
- Cerca
- ricerca
- Selezione
- servizio
- dovrebbero
- mostrare attraverso le sue creazioni
- mostrato
- Vista
- simile
- Allo stesso modo
- da
- singolo
- cursore
- rallentare
- So
- Social
- Social Media
- Post sui social media
- alcuni
- lo spazio
- specializzata
- specifico
- dividere
- step
- Passi
- Strategia
- La struttura
- tale
- suggerisce
- apprendimento supervisionato
- supporto
- supporti
- tavolo
- Fai
- prende
- tecniche
- carnagione
- condizioni
- I
- Là.
- tre
- Attraverso
- tempo
- a
- token
- strumenti
- top
- Top ten
- argomento
- Argomenti
- trasformatori
- lezione
- tipico
- sottostante
- capire
- unico
- Università
- USA
- uso
- Prezioso
- Valori
- Variante
- visualizzazione
- aspettare
- quale
- while
- Mentre
- volere
- entro
- Word
- parole
- Salsiccia di assorbimento
- scrivere
- Wrong
- zefiro