Photo by Mikechie Eparagoza
Hver dag har vi mesteparten av tiden å gjøre med umerket tekst, og veiledede læringsalgoritmer kan ikke brukes i det hele tatt for å trekke ut informasjon fra dataene. Et underfelt av naturlig språk kan avsløre den underliggende strukturen i store tekstmengder. Denne disiplinen kalles Topic Modeling, som er spesialisert på å trekke ut emner fra tekst.
I denne sammenhengen viste konvensjonelle tilnærminger, som latent Dirichlet-allokering og ikke-negativ matrisefaktorisering, å ikke fange godt opp relasjonene mellom ord siden de er basert på pose-of-word.
Av denne grunn kommer vi til å fokusere på to lovende tilnærminger, Top2Vec og BERTopic, som adresserer disse ulempene ved å utnytte ferdigtrente språkmodeller for å generere emner. La oss komme i gang!
Top2Vec er en modell som er i stand til å oppdage automatisk emner fra teksten ved å bruke forhåndstrente ordvektorer og lage meningsfulle innebygde emner, dokumenter og ordvektorer.
I denne tilnærmingen kan prosedyren for å trekke ut emner deles inn i forskjellige trinn:
- Lag semantisk innebygging: felles innebygde dokument- og ordvektorer opprettes. Tanken er at lignende dokumenter skal være tettere i innebyggingsrommet, mens ulike dokumenter skal være langt mellom dem.
- Reduser dimensjonaliteten til dokumentinnbyggingen: Anvendelsen av tilnærmingen til dimensjonalitetsreduksjon er viktig for å bevare det meste av variasjonen i innbyggingen av dokumenter, samtidig som den høye dimensjonale plassen reduseres. Dessuten tillater det å identifisere tette områder, der hvert punkt representerer en dokumentvektor. UMAP er den typiske dimensjonalitetsreduksjonstilnærmingen som er valgt i dette trinnet fordi den er i stand til å bevare den lokale og globale strukturen til høydimensjonale data.
- Identifiser klynger av dokumenter: HDBScan, en tetthetsbasert klyngetilnærming, brukes for å finne tette områder med lignende dokumenter. Hvert dokument er tilordnet som støy hvis det ikke er i en tett klynge, eller en etikett hvis det tilhører et tett område.
- Beregn tyngdepunktene i det originale innebyggingsrommet: Tyngdepunktet beregnes ved å vurdere det høydimensjonale rommet, i stedet for det reduserte innebyggingsrommet. Den klassiske strategien består i å beregne det aritmetiske gjennomsnittet av alle dokumentvektorene som tilhører et tett område, oppnådd i forrige trinn med HDBSCAN. På denne måten genereres en emnevektor for hver klynge.
- Finn ord for hver emnevektor: de nærmeste ordvektorene til dokumentvektoren er semantisk de mest representative.
Eksempel på Top2Vec
I denne opplæringen skal vi analysere de negative anmeldelsene av McDonald's fra et datasett tilgjengelig på data.verden. Å identifisere emnene fra disse anmeldelsene kan være verdifullt for det multinasjonale for å forbedre produktene og organiseringen av denne hurtigmatkjeden på steder i USA levert av dataene.
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 enkelt kodelinje skal vi utføre alle trinnene i top2vec som er forklart tidligere.
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"},
)
Hovedargumentene til Top2Vec er:
- docs_bad: er en liste over strenger.
- universal-setence-encoder: er den valgte forhåndstrente innbyggingsmodellen.
- deep-learn: er en parameter som bestemmer kvaliteten på den produserte dokumentvektoren.
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 meste
Fra ordskyene kan vi utlede at tema 0 handler om generelle klager på tjenesten i McDonald, som "treg service", "horrible service" og "ordre feil", mens tema 1 og 2 refererer til henholdsvis frokostmat ( McMuffin, kjeks, egg) og kaffe (iskaffe og kopp kaffe).
Nå prøver vi å søke i dokumenter med to nøkkelord, feil og sakte:
( 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()
Utgang:
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 er en emnemodelleringsteknikk som utnytter transformatorer og c-TF-IDF for å lage tette klynger som muliggjør lett tolkbare emner samtidig som viktige ord beholdes i emnebeskrivelsene."
Som navnet antyder, bruker BERTopic kraftige transformatormodeller for å identifisere emnene i teksten. Et annet kjennetegn ved denne emnemodelleringsalgoritmen er bruken av en variant av TF-IDF, kalt klassebasert variant av TF-IDF.
I likhet med Top2Vec trenger den ikke å vite antall emner, men den trekker automatisk ut emnene.
I likhet med Top2Vec er det dessuten en algoritme som involverer forskjellige faser. De tre første trinnene er de samme: opprettelse av innebygde dokumenter, dimensjonalitetsreduksjon med UMAP og klynging med HDBScan.
De påfølgende fasene begynner å avvike fra Top2Vec. Etter å ha funnet de tette områdene med HDBSCAN, blir hvert emne tokenisert til en pose med ord-representasjon, som tar hensyn til om ordet vises i dokumentet eller ikke. Etter at dokumentene som tilhører en klynge anses som et unikt dokument og TF-IDF brukes. Så for hvert emne identifiserer vi de mest relevante ordene, som bør ha den høyeste c-TF-IDF.
Eksempel på BERTopic
Vi gjentar analysen på samme datasett.
Vi skal trekke ut emnene fra anmeldelsene ved å bruke 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 returnert av modellen gir informasjon om de 14 temaene som er hentet ut. Emne tilsvarer emneidentifikatoren, bortsett fra alle uteliggere som ignoreres og er merket som -1.
Nå skal vi gå over til den mest interessante delen angående visualiseringen av emnene våre til interaktive grafer, for eksempel visualiseringen av de mest relevante termene for hvert emne, det intertopic avstandskartet, den todimensjonale representasjonen av det innebygde rommet og emnehierarkiet.
La oss begynne å vise stolpediagrammene for de ti beste emnene. For hvert emne kan vi observere de viktigste ordene, sortert i synkende rekkefølge basert på c-TF-IDF-poengsummen. Jo mer et ord er relevant, jo høyere poengsum er det.
Det første emnet inneholder generiske ord, som plassering og mat, emne 1 bestill og vent, emne 2 verst og service, emne 3 sted og skittent, annonse så videre.
Etter å ha visualisert søylediagrammene, er det på tide å ta en titt på det intertopic avstandskartet. Vi reduserer dimensjonaliteten til c-TF-IDF-poengsum til et todimensjonalt rom for å visualisere emnene i et plot. Nederst er det en glidebryter som lar deg velge emnet som skal farges i rødt. Vi kan legge merke til at temaene er gruppert i to forskjellige klynger, en med generiske temaer som mat, kylling og plassering, og en med forskjellige negative aspekter, som dårligst service, skitten, sted og kulde.
Den neste grafen tillater å se forholdet mellom anmeldelsene og emnene. Spesielt kan det være nyttig å forstå hvorfor en anmeldelse er tilordnet et spesifikt emne og er på linje med de mest relevante ordene som er funnet. For eksempel kan vi fokusere på den røde klyngen, tilsvarende tema 2 med noen ord om den dårligste tjenesten. Dokumentene innenfor dette tette området virker ganske negative, som "Forferdelig kundeservice og enda verre mat".
Ved første øyekast har disse tilnærmingene mange aspekter til felles, som å automatisk finne antall emner, ingen nødvendighet med forhåndsbehandling i de fleste tilfeller, bruken av UMAP for å redusere dimensjonaliteten til dokumentinnbygging og deretter HDBSCAN brukes for modellering av disse reduserte dokumentinnbyggingene, men de er fundamentalt forskjellige når man ser på måten de tildeler emnene til dokumentene.
Top2Vec lager emnerepresentasjoner ved å finne ord som ligger nær en klynges tyngdepunkt.
Til forskjell fra Top2Vec, tar ikke BERTopic hensyn til klyngens tyngdepunkt, men den betraktet alle dokumentene i en klynge som et unikt dokument og trekker ut emnerepresentasjoner ved å bruke en klassebasert variant av TF-IDF.
Top2Vec | BERTopic |
Strategien for å trekke ut emner basert på klyngens sentroider. | Strategien for å trekke ut emner basert på c-TF-IDF. |
Den støtter ikke Dynamic Topic Modeling. | Den støtter Dynamic Topic Modeling. |
Den bygger ordskyer for hvert emne og gir søkeverktøy for emner, dokumenter og ord. | Det gjør det mulig å bygge interaktive visualiseringsplott, som tillater tolkning av de utpakkede emnene. |
Emnemodellering er et voksende felt innen naturlig språkbehandling, og det er mange mulige bruksområder, som anmeldelser, lyd og innlegg på sosiale medier. Som det har blitt vist, gir denne artikkelen en oversikt over Topi2Vec og BERTopic, som er to lovende tilnærminger, som kan hjelpe deg med å identifisere emner med få linjer med kode og tolke resultatene gjennom datavisualiseringer. Hvis du har spørsmål om disse teknikkene eller du har andre forslag til andre tilnærminger for å oppdage emner, skriv det i kommentarfeltet.
Eugenia Anello er for tiden stipendiat ved Institutt for informasjonsteknikk ved Universitetet i Padova, Italia. Forskningsprosjektet hennes er fokusert på kontinuerlig læring kombinert med anomalideteksjon.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: 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
- I stand
- Om oss
- Logg inn
- Ad
- adresse
- Etter
- algoritme
- algoritmer
- justert
- Alle
- allokering
- tillate
- tillater
- beløp
- analyse
- analysere
- og
- anomali påvisning
- En annen
- Søknad
- søknader
- anvendt
- tilnærming
- tilnærminger
- AREA
- områder
- argumenter
- Artikkel
- aspekter
- tildelt
- lyd
- automatisk
- tilgjengelig
- dårlig
- Bar
- basert
- fordi
- mellom
- Bunn
- Frokost
- Bygning
- bygger
- beregning
- som heter
- kan ikke
- stand
- fangst
- saker
- kjede
- karakteristisk
- Topplisten
- valgt ut
- City
- Classic
- Lukke
- nærmere
- Cluster
- gruppering
- kode
- Kaffe
- kombinert
- kommentarer
- Felles
- klager
- ansett
- vurderer
- inneholder
- kontekst
- konvensjonell
- Tilsvarende
- tilsvarer
- skape
- opprettet
- skaper
- Opprette
- skaperverket
- kopp
- I dag
- kunde
- Kundeservice
- dato
- dag
- håndtering
- demonstrert
- Avdeling
- Gjenkjenning
- bestemmes
- forskjellig
- avstand
- Fjern
- Diverger
- dokument
- dokumenter
- ikke
- ulemper
- stasjonen
- kjøre gjennom
- dynamisk
- hver enkelt
- lett
- andre steder
- innebygd
- Ingeniørarbeid
- Selv
- eksempel
- Unntatt
- forklarte
- trekke ut
- ekstrakter
- ekstremt
- FAST
- kar
- Noen få
- felt
- Finn
- finne
- Først
- Fokus
- fokuserte
- mat
- funnet
- fra
- fundamentalt
- general
- generere
- generert
- få
- Global
- Go
- skal
- graf
- grafer
- Økende
- hjelpe
- hierarki
- Høy
- høyere
- høyest
- HTTPS
- Tanken
- Identifikasjon
- identifikator
- identifisere
- identifisering
- importere
- viktig
- forbedre
- in
- informasjon
- i stedet
- interaktiv
- interessant
- tolkning
- IT
- Italia
- KDnuggets
- holde
- Vet
- Etiketten
- Språk
- stor
- læring
- utnytter
- linje
- linjer
- Liste
- lokal
- ligger
- plassering
- steder
- Se
- ser
- Hoved
- mange
- kart
- Matrix
- MCDONALD
- meningsfylt
- Media
- modell
- modellering
- modellering
- modeller
- mer
- mest
- multinasjonale
- navn
- Naturlig
- Naturlig språk
- Natural Language Processing
- Trenger
- negativ
- neste
- Bråk
- Antall
- mange
- observere
- innhentet
- ONE
- rekkefølge
- organisasjonen
- original
- Annen
- pandaer
- parameter
- del
- Spesielt
- prosent
- utføre
- setninger
- Sted
- plato
- Platon Data Intelligence
- PlatonData
- Point
- mulig
- innlegg
- kraftig
- presentere
- forrige
- tidligere
- prosessering
- produsert
- Produkter
- prosjekt
- lovende
- forutsatt
- gir
- kvalitet
- spørsmål
- grunnen til
- Rød
- redusere
- Redusert
- redusere
- om
- forholdet
- Relasjoner
- relevant
- gjenta
- representasjon
- representant
- representerer
- forskning
- Resultater
- avsløre
- anmeldelse
- Anmeldelser
- samme
- Søk
- søker
- velge
- tjeneste
- bør
- Vis
- vist
- Syn
- lignende
- på samme måte
- siden
- enkelt
- glidebryter
- langsom
- So
- selskap
- sosiale medier
- Sosiale medier innlegg
- noen
- Rom
- spesialisert
- spesifikk
- splittet
- Trinn
- Steps
- Strategi
- struktur
- slik
- foreslår
- veiledet læring
- støtte
- Støtter
- bord
- Ta
- tar
- teknikker
- ti
- vilkår
- De
- Der.
- tre
- Gjennom
- tid
- til
- symbolbaserte
- verktøy
- topp
- Topp ti
- Tema
- temaer
- transformers
- tutorial
- typisk
- underliggende
- forstå
- unik
- universitet
- USA
- bruke
- Verdifull
- Verdier
- variant
- visualisering
- vente
- hvilken
- mens
- Mens
- vil
- innenfor
- ord
- ord
- verste
- skrive
- Feil
- zephyrnet