Foto: Mikechie Eparagoza
Varje dag sysslar vi för det mesta med omärkt text och övervakade inlärningsalgoritmer kan inte användas alls för att extrahera information från data. Ett delfält av naturligt språk kan avslöja den underliggande strukturen i stora mängder text. Denna disciplin kallas Topic Modeling, som är specialiserad på att extrahera ämnen från text.
I detta sammanhang visade konventionella tillvägagångssätt, som latent Dirichlet-allokering och icke-negativ matrisfaktorisering, att de inte fångar relationerna mellan ord på ett bra sätt eftersom de är baserade på ordsäck.
Av denna anledning kommer vi att fokusera på två lovande tillvägagångssätt, Top2Vec och BERTopic, som tar itu med dessa nackdelar genom att utnyttja förutbildade språkmodeller för att skapa ämnen. Låt oss börja!
Top2Vec är en modell som kan detektera automatiskt ämnen från texten genom att använda förtränade ordvektorer och skapa meningsfulla inbäddade ämnen, dokument och ordvektorer.
I detta tillvägagångssätt kan proceduren för att extrahera ämnen delas upp i olika steg:
- Skapa semantisk inbäddning: gemensamt inbäddade dokument- och ordvektorer skapas. Tanken är att liknande dokument ska vara närmare i inbäddningsutrymmet, medan olika dokument ska vara långt mellan dem.
- Minska dimensionaliteten för dokumentinbäddningen: Tillämpningen av tillvägagångssättet för dimensionsreducering är viktigt för att bevara det mesta av variationen i inbäddningen av dokument samtidigt som det stora dimensionella utrymmet minskas. Dessutom tillåter det identifiering av täta områden, där varje punkt representerar en dokumentvektor. UMAP är det typiska tillvägagångssättet för dimensionsreducering som valts i detta steg eftersom det kan bevara den lokala och globala strukturen för högdimensionella data.
- Identifiera kluster av dokument: HDBScan, en densitetsbaserad klustringsmetod, används för att hitta täta områden med liknande dokument. Varje dokument tilldelas som brus om det inte är i ett tätt kluster, eller en etikett om det tillhör ett tätt område.
- Beräkna tyngdpunkter i det ursprungliga inbäddningsutrymmet: Tyngdpunkten beräknas genom att beakta det högdimensionella utrymmet, istället för det minskade inbäddningsutrymmet. Den klassiska strategin består i att beräkna det aritmetiska medelvärdet av alla dokumentvektorer som tillhör ett tätt område, erhållna i föregående steg med HDBSCAN. På detta sätt genereras en ämnesvektor för varje kluster.
- Hitta ord för varje ämnesvektor: de ordvektorer som ligger närmast dokumentvektorn är semantiskt de mest representativa.
Exempel på Top2Vec
I den här handledningen kommer vi att analysera de negativa recensionerna av McDonald's från en datauppsättning tillgänglig på data.världen. Att identifiera ämnena från dessa recensioner kan vara värdefullt för det multinationella företaget att förbättra produkterna och organisationen av denna snabbmatskedja på platser i USA som tillhandahålls av data.
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()
I en enda kodrad kommer vi att utföra alla steg i top2vec som förklarats tidigare.
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"},
)
De viktigaste argumenten för Top2Vec är:
- docs_bad: är en lista med strängar.
- universal-sentence-encoder: är den valda förutbildade inbäddningsmodellen.
- deep-learn: är en parameter som bestämmer kvaliteten på den producerade dokumentvektorn.
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)
Det viktigaste
Från ordmolnen kan vi dra slutsatsen att ämne 0 handlar om allmänna klagomål på tjänsten i McDonald, som "långsam service", "hemsk service" och "beställ fel", medan ämne 1 och 2 hänvisar till frukostmat respektive ( McMuffin, kex, ägg) och kaffe (iskaffe och kopp kaffe).
Nu försöker vi söka i dokument med två nyckelord, fel och långsamt:
( 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()
Produktion:
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 är en ämnesmodelleringsteknik som utnyttjar transformatorer och c-TF-IDF för att skapa täta kluster som möjliggör lätttolkbara ämnen samtidigt som viktiga ord behålls i ämnesbeskrivningarna."
Som namnet antyder använder BERTopic kraftfulla transformatormodeller för att identifiera de ämnen som finns i texten. En annan egenskap hos denna ämnesmodelleringsalgoritm är användningen av en variant av TF-IDF, kallad klassbaserad variant av TF-IDF.
Precis som Top2Vec behöver den inte veta antalet ämnen, men den extraherar automatiskt ämnena.
Dessutom, i likhet med Top2Vec, är det en algoritm som involverar olika faser. De första tre stegen är desamma: skapande av inbäddningsdokument, dimensionsminskning med UMAP och klustring med HDBScan.
De successiva faserna börjar avvika från Top2Vec. Efter att ha hittat de täta områdena med HDBSCAN, tokeniseras varje ämne till en påse med ord-representation, som tar hänsyn till om ordet förekommer i dokumentet eller inte. Efter att dokument som tillhör ett kluster anses vara ett unikt dokument och TF-IDF tillämpas. Så för varje ämne identifierar vi de mest relevanta orden, som bör ha högsta c-TF-IDF.
Exempel på BERTopic
Vi upprepar analysen på samma dataset.
Vi kommer att extrahera ämnena från recensionerna med hjälp av 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()
Tabellen som returneras av modellen ger information om de 14 ämnen som extraherats. Ämnet motsvarar ämnesidentifieraren, förutom alla extremvärden som ignoreras och som är märkta som -1.
Nu ska vi gå över till den mest intressanta delen angående visualiseringen av våra ämnen till interaktiva grafer, såsom visualiseringen av de mest relevanta termerna för varje ämne, intertopic avståndskartan, den tvådimensionella representationen av inbäddningsutrymmet och ämneshierarkin.
Låt oss börja visa stapeldiagrammen för de tio bästa ämnena. För varje ämne kan vi observera de viktigaste orden, sorterade i fallande ordning baserat på c-TF-IDF-poängen. Ju mer ett ord är relevant, desto mer blir poängen högre.
Det första ämnet innehåller generiska ord, som plats och mat, ämne 1 beställ och vänta, ämne 2 värsta och service, ämne 3 plats och smutsigt, annons så vidare.
Efter att ha visualiserat stapeldiagrammen är det dags att ta en titt på intertopic distanskartan. Vi reducerar dimensionaliteten av c-TF-IDF poäng till ett tvådimensionellt utrymme för att visualisera ämnena i en plot. Längst ner finns en skjutreglage som gör det möjligt att välja ämne som ska färgas i rött. Vi kan märka att ämnena är grupperade i två olika kluster, ett med generiska teman som mat, kyckling och plats, och ett med olika negativa aspekter, som sämsta service, smutsigt, plats och kyla.
Nästa graf tillåter att se förhållandet mellan recensionerna och ämnena. I synnerhet kan det vara användbart att förstå varför en recension tilldelas ett specifikt ämne och är anpassad till de mest relevanta orden som hittats. Vi kan till exempel fokusera på det röda klustret, motsvarande ämne 2 med några ord om den sämsta servicen. Dokumenten inom detta täta område verkar ganska negativa, som "Fruktansvärd kundservice och ännu värre mat".
Vid första anblicken har dessa tillvägagångssätt många aspekter gemensamma, som att automatiskt hitta antalet ämnen, ingen nödvändighet av förbearbetning i de flesta fall, tillämpningen av UMAP för att minska dimensionaliteten av dokumentinbäddningar och sedan används HDBSCAN för modellering av dessa reducerade dokumentinbäddningar, men de är fundamentalt annorlunda när man tittar på hur de tilldelar dokumenten ämnena.
Top2Vec skapar ämnesrepresentationer genom att hitta ord som ligger nära ett klusters tyngdpunkt.
Till skillnad från Top2Vec tar BERTopic inte hänsyn till klustrets tyngdpunkt, men det betraktade alla dokument i ett kluster som ett unikt dokument och extraherar ämnesrepresentationer med en klassbaserad variant av TF-IDF.
Top2Vec | BERTopic |
Strategin för att extrahera ämnen baserade på klustrets tyngdpunkter. | Strategin för att extrahera ämnen baserade på c-TF-IDF. |
Det stöder inte Dynamic Topic Modeling. | Den stöder Dynamic Topic Modeling. |
Den bygger ordmoln för varje ämne och tillhandahåller sökverktyg för ämnen, dokument och ord. | Det gör det möjligt att bygga interaktiva visualiseringsdiagram, vilket möjliggör tolkning av de extraherade ämnena. |
Ämnesmodellering är ett växande område inom naturlig språkbehandling och det finns många möjliga tillämpningar, som recensioner, ljud och inlägg på sociala medier. Som det har visat sig ger den här artikeln en översikt över Topi2Vec och BERTopic, som är två lovande tillvägagångssätt, som kan hjälpa dig att identifiera ämnen med några rader kod och tolka resultaten genom datavisualiseringar. Om du har frågor om dessa tekniker eller om du har andra förslag om andra metoder för att upptäcka ämnen, skriv det i kommentarerna.
Eugenia Anello är för närvarande forskare vid institutionen för informationsteknik vid universitetet i Padova, Italien. Hennes forskningsprojekt är fokuserat på kontinuerligt lärande kombinerat med anomalidetektion.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. Tillgång här.
- Källa: 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
- Able
- Om oss
- Konto
- Ad
- adress
- Efter
- algoritm
- algoritmer
- Justerat
- Alla
- fördelning
- tillåta
- tillåter
- mängder
- analys
- analysera
- och
- avvikelse av anomali
- Annan
- Ansökan
- tillämpningar
- tillämpas
- tillvägagångssätt
- tillvägagångssätt
- OMRÅDE
- områden
- argument
- Artikeln
- aspekter
- delad
- audio
- automatiskt
- tillgänglig
- Badrum
- bar
- baserat
- därför att
- mellan
- Botten
- Frukost
- Byggnad
- bygger
- beräkning
- kallas
- kan inte
- kapabel
- fånga
- fall
- kedja
- karakteristiska
- Diagram
- valda
- Stad
- klassiska
- Stänga
- närmare
- kluster
- klustring
- koda
- Kaffe
- kombinerad
- kommentarer
- Gemensam
- klagomål
- anses
- med tanke på
- innehåller
- sammanhang
- konventionell
- Motsvarande
- motsvarar
- skapa
- skapas
- skapar
- Skapa
- skapande
- Cup
- För närvarande
- kund
- Kundservice
- datum
- dag
- som handlar om
- demonstreras
- Avdelning
- Detektering
- bestämd
- olika
- avstånd
- Avlägsen
- Avvika
- dokumentera
- dokument
- inte
- nackdelar
- driv
- kör igenom
- dynamisk
- varje
- lätt
- annorstädes
- inbäddade
- Teknik
- Även
- exempel
- Utom
- förklarade
- extrahera
- extrakt
- extremt
- SNABB
- Kompis
- få
- fält
- hitta
- finna
- Förnamn
- Fokus
- fokuserade
- livsmedelsproduktion
- hittade
- från
- fundamentalt
- Allmänt
- generera
- genereras
- skaffa sig
- Välgörenhet
- Go
- kommer
- diagram
- grafer
- Odling
- hjälpa
- hierarkin
- Hög
- högre
- högsta
- HTTPS
- Tanken
- Identifiering
- identifierare
- identifiera
- identifiera
- importera
- med Esport
- förbättra
- in
- informationen
- istället
- interaktiva
- intressant
- tolkning
- IT
- Italien
- KDnuggets
- hålla
- Vet
- etikett
- språk
- Large
- inlärning
- hävstångs
- linje
- rader
- Lista
- lokal
- belägen
- läge
- platser
- se
- du letar
- Huvudsida
- många
- karta
- Matris
- MCDONALD
- meningsfull
- Media
- modell
- modellering
- modellering
- modeller
- mer
- mest
- multinationell
- namn
- Natural
- Naturligt språk
- Naturlig språkbehandling
- Behöver
- negativ
- Nästa
- Brus
- antal
- talrik
- observera
- erhållna
- ONE
- beställa
- organisation
- ursprungliga
- Övriga
- pandor
- parameter
- del
- särskilt
- procentuell
- utföra
- fraser
- Plats
- plato
- Platon Data Intelligence
- PlatonData
- Punkt
- möjlig
- inlägg
- den mäktigaste
- presentera
- föregående
- tidigare
- bearbetning
- producerad
- Produkter
- projektet
- lovande
- förutsatt
- ger
- kvalitet
- frågor
- Anledningen
- Red
- minska
- Minskad
- reducerande
- om
- relation
- Förhållanden
- relevanta
- upprepa
- representation
- representativ
- representerar
- forskning
- Resultat
- avslöjar
- översyn
- Omdömen
- Samma
- Sök
- söka
- väljer
- service
- skall
- show
- visas
- Syn
- liknande
- Liknande
- eftersom
- enda
- reglaget
- långsam
- So
- Social hållbarhet
- sociala medier
- Sociala medier inlägg
- några
- Utrymme
- specialiserad
- specifik
- delas
- Steg
- Steg
- Strategi
- struktur
- sådana
- Föreslår
- övervakad inlärning
- stödja
- Stöder
- bord
- Ta
- tar
- tekniker
- tio
- villkor
- Smakämnen
- Där.
- tre
- Genom
- tid
- till
- befogenhetsbeskrivas
- verktyg
- topp
- Topp tio
- ämne
- ämnen
- transformatorer
- handledning
- typisk
- underliggande
- förstå
- unika
- universitet
- USA
- användning
- Värdefulla
- Värden
- Variant
- visualisering
- vänta
- som
- medan
- Medan
- kommer
- inom
- ord
- ord
- värsta
- skriva
- Fel
- zephyrnet