Photo by Mikechie Eparagoza
Hver dag har vi det meste af tiden med umærket tekst at gøre, og overvågede læringsalgoritmer kan slet ikke bruges til at udtrække information fra dataene. Et underfelt af naturligt sprog kan afsløre den underliggende struktur i store mængder tekst. Denne disciplin kaldes Topic Modeling, der er specialiseret i at udtrække emner fra tekst.
I denne sammenhæng viste konventionelle tilgange, som Latent Dirichlet Allocation og Non-Negative Matrix Factorization, at de ikke fanger forholdet mellem ord godt, da de er baseret på pose-of-word.
Af denne grund vil vi fokusere på to lovende tilgange, Top2Vec og BERTopic, der adresserer disse ulemper ved at udnytte forudtrænede sprogmodeller til at generere emner. Lad os komme igang!
Top2Vec er en model, der er i stand til automatisk at detektere emner fra teksten ved at bruge forudtrænede ordvektorer og skabe meningsfulde indlejrede emner, dokumenter og ordvektorer.
I denne tilgang kan proceduren til at udtrække emner opdeles i forskellige trin:
- Opret semantisk indlejring: fælles indlejrede dokument- og ordvektorer oprettes. Ideen er, at lignende dokumenter skal være tættere på indlejringsrummet, mens uens dokumenter skal være langt mellem dem.
- Reducer dimensionaliteten af dokumentindlejringen: Anvendelsen af dimensionsreduktionstilgangen er vigtig for at bevare det meste af variabiliteten af indlejring af dokumenter, samtidig med at det højdimensionelle rum reduceres. Desuden giver det mulighed for at identificere tætte områder, hvor hvert punkt repræsenterer en dokumentvektor. UMAP er den typiske dimensionsreduktionstilgang valgt i dette trin, fordi den er i stand til at bevare den lokale og globale struktur af de højdimensionelle data.
- Identificer klynger af dokumenter: HDBScan, en tæthedsbaseret klyngetilgang, anvendes til at finde tætte områder af lignende dokumenter. Hvert dokument er tildelt som støj, hvis det ikke er i en tæt klynge, eller en etiket, hvis det tilhører et tæt område.
- Beregn tyngdepunkter i det originale indlejringsrum: Tyngdepunktet beregnes ved at overveje det højdimensionelle rum i stedet for det reducerede indlejringsrum. Den klassiske strategi består i at beregne det aritmetiske middelværdi af alle dokumentvektorer, der tilhører et tæt område, opnået i det foregående trin med HDBSCAN. På denne måde genereres en emnevektor for hver klynge.
- Find ord for hver emnevektor: de nærmeste ordvektorer til dokumentvektoren er semantisk de mest repræsentative.
Eksempel på Top2Vec
I denne tutorial skal vi analysere de negative anmeldelser af McDonald's fra et datasæt tilgængeligt på data.verden. At identificere emnerne fra disse anmeldelser kan være værdifuldt for det multinationale til at forbedre produkterne og organisationen af denne fastfoodkæde i USA-lokationerne leveret af 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 udføre alle trinene i top2vec forklaret 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"},
)
De vigtigste argumenter for Top2Vec er:
- docs_bad: er en liste over strenge.
- universal-setence-encoder: er den valgte præ-trænede indlejringsmodel.
- deep-learn: er en parameter, der bestemmer kvaliteten af den producerede dokumentvektor.
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)
For det meste
Ud fra ordskyerne kan vi udlede, at emne 0 handler om generelle klager over servicen i McDonald, som "langsom service", "horrible service" og "order forkert", mens emne 1 og 2 refererer til henholdsvis morgenmadsmad ( McMuffin, kiks, æg) og kaffe (iskaffe og kop kaffe).
Nu forsøger vi at søge i dokumenter ved hjælp af to nøgleord, forkert og langsomt:
( 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()
Output:
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 emnemodelleringsteknik, der udnytter transformere og c-TF-IDF til at skabe tætte klynger, der giver mulighed for let fortolkelige emner, mens vigtige ord bevares i emnebeskrivelserne."
Som navnet antyder, bruger BERTopic kraftfulde transformatormodeller til at identificere de emner, der er til stede i teksten. Et andet kendetegn ved denne emnemodelleringsalgoritme er brugen af en variant af TF-IDF, kaldet klassebaseret variation af TF-IDF.
Ligesom Top2Vec behøver den ikke at kende antallet af emner, men den udtrækker automatisk emnerne.
Desuden er det ligesom Top2Vec en algoritme, der involverer forskellige faser. De første tre trin er de samme: oprettelse af indlejringsdokumenter, dimensionsreduktion med UMAP og clustering med HDBScan.
De successive faser begynder at afvige fra Top2Vec. Efter at have fundet de tætte områder med HDBSCAN, tokeniseres hvert emne til en pose-of-words repræsentation, som tager højde for, om ordet forekommer i dokumentet eller ej. Efter at dokumenterne, der tilhører en klynge, betragtes som et unikt dokument, og TF-IDF anvendes. Så for hvert emne identificerer vi de mest relevante ord, der burde have den højeste c-TF-IDF.
Eksempel på BERTopic
Vi gentager analysen på samme datasæt.
Vi vil udtrække emnerne fra anmeldelserne ved hjælp af 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 returneret af modellen giver information om de 14 emner, der er udtrukket. Emne svarer til emne-id'et, bortset fra alle de outliers, der ignoreres, og som er mærket som -1.
Nu vil vi gå videre til den mest interessante del vedrørende visualiseringen af vores emner til interaktive grafer, såsom visualiseringen af de mest relevante termer for hvert emne, det intertopic afstandskort, den todimensionelle repræsentation af det indlejrede rum og emnehierarkiet.
Lad os begynde at vise søjlediagrammerne for de ti bedste emner. For hvert emne kan vi observere de vigtigste ord, sorteret i faldende rækkefølge baseret på c-TF-IDF scoren. Jo mere et ord er relevant, desto højere er scoren.
Det første emne indeholder generiske ord, som placering og mad, emne 1 bestil og vent, emne 2 værst og service, emne 3 sted og beskidt, annonce så videre.
Efter at have visualiseret søjlediagrammerne, er det tid til at tage et kig på det intertopic afstandskort. Vi reducerer dimensionaliteten af c-TF-IDF score til et todimensionelt rum for at visualisere emnerne i et plot. Nederst er der en skyder, der gør det muligt at vælge det emne, der skal farves i rødt. Vi kan bemærke, at emnerne er grupperet i to forskellige klynger, en med generiske temaer som mad, kylling og beliggenhed, og en med forskellige negative aspekter, såsom dårligste service, dirty, place og cold.
Den næste graf giver mulighed for at se forholdet mellem anmeldelserne og emnerne. Det kan især være nyttigt at forstå, hvorfor en anmeldelse er tildelt et bestemt emne og er tilpasset de mest relevante ord, der er fundet. For eksempel kan vi fokusere på den røde klynge, svarende til emne 2 med nogle ord om den dårligste service. Dokumenterne inden for dette tætte område virker ret negative, som "Frygtelig kundeservice og endnu værre mad".
Ved første øjekast har disse tilgange mange aspekter til fælles, såsom automatisk at finde antallet af emner, ingen nødvendighed af forbehandling i de fleste tilfælde, anvendelsen af UMAP til at reducere dimensionaliteten af dokumentindlejringer, og derefter bruges HDBSCAN til modellering af disse reducerede dokumentindlejringer, men de er fundamentalt forskellige, når man ser på den måde, de tildeler emnerne til dokumenterne.
Top2Vec opretter emnerepræsentationer ved at finde ord placeret tæt på en klynges tyngdepunkt.
Til forskel fra Top2Vec tager BERTopic ikke højde for klyngens tyngdepunkt, men den betragtede alle dokumenter i en klynge som et unikt dokument og udtrækker emnerepræsentationer ved hjælp af en klassebaseret variation af TF-IDF.
Top2Vec | BERTopic |
Strategien til at udtrække emner baseret på klyngens centroider. | Strategien til at udtrække emner baseret på c-TF-IDF. |
Det understøtter ikke Dynamic Topic Modeling. | Det understøtter Dynamic Topic Modeling. |
Det bygger ordskyer for hvert emne og giver søgeværktøjer til emner, dokumenter og ord. | Det giver mulighed for at bygge interaktive visualiseringsplot, hvilket giver mulighed for fortolkning af de udtrukne emner. |
Emnemodellering er et voksende område inden for Natural Language Processing, og der er adskillige mulige applikationer, såsom anmeldelser, lyd og sociale medier. Som det er blevet vist, giver denne artikel en oversigt over Topi2Vec og BERTopic, som er to lovende tilgange, der kan hjælpe dig med at identificere emner med få linjer kode og fortolke resultaterne gennem datavisualiseringer. Hvis du har spørgsmål om disse teknikker, eller du har andre forslag til andre tilgange til at opdage emner, så skriv det i kommentarerne.
Eugenia Anello er i øjeblikket forskningsstipendiat ved Institut for Informationsteknik ved University of Padova, Italien. Hendes forskningsprojekt er fokuseret på kontinuerlig læring kombineret med anomalidetektion.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. Adgang 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
- Konto
- Ad
- adresse
- Efter
- algoritme
- algoritmer
- justeret
- Alle
- allokering
- tillade
- tillader
- beløb
- analyse
- analysere
- ,
- afsløring af anomalier
- En anden
- Anvendelse
- applikationer
- anvendt
- tilgang
- tilgange
- OMRÅDE
- områder
- argumenter
- artikel
- aspekter
- tildelt
- lyd
- automatisk
- til rådighed
- Bad
- Bar
- baseret
- fordi
- mellem
- Bund
- Morgenmad
- Bygning
- bygger
- beregning
- kaldet
- kan ikke
- stand
- fange
- tilfælde
- kæde
- karakteristisk
- Diagrammer
- valgt
- By
- Classic
- Luk
- tættere
- Cluster
- klyngedannelse
- kode
- Kaffe
- kombineret
- kommentarer
- Fælles
- klager
- betragtes
- Overvejer
- indeholder
- sammenhæng
- konventionelle
- Tilsvarende
- svarer
- skabe
- oprettet
- skaber
- Oprettelse af
- skabelse
- Kop
- For øjeblikket
- kunde
- Kundeservice
- data
- dag
- beskæftiger
- demonstreret
- Afdeling
- Detektion
- bestemmer
- forskellige
- afstand
- Fjern
- divergere
- dokumentet
- dokumenter
- Er ikke
- ulemper
- køre
- køre igennem
- dynamisk
- hver
- nemt
- andetsteds
- indlejret
- Engineering
- Endog
- eksempel
- Undtagen
- forklarede
- ekstrakt
- Uddrag
- ekstremt
- FAST
- fyr
- få
- felt
- Finde
- finde
- Fornavn
- Fokus
- fokuserede
- mad
- fundet
- fra
- fundamentalt
- Generelt
- generere
- genereret
- få
- Global
- Go
- gå
- graf
- grafer
- Dyrkning
- hjælpe
- hierarki
- Høj
- højere
- højeste
- HTTPS
- idé
- Identifikation
- identifikator
- identificere
- identificere
- importere
- vigtigt
- Forbedre
- in
- oplysninger
- i stedet
- interaktiv
- interessant
- fortolkning
- IT
- Italiensk vin
- KDnuggets
- holde
- Kend
- etiket
- Sprog
- stor
- læring
- Udnytter
- Line (linje)
- linjer
- Liste
- lokale
- placeret
- placering
- placeringer
- Se
- leder
- Main
- mange
- kort
- Matrix
- MCDONALD
- meningsfuld
- Medier
- model
- modellering
- modellering
- modeller
- mere
- mest
- multinationale
- navn
- Natural
- Naturligt sprog
- Natural Language Processing
- Behov
- negativ
- næste
- Støj
- nummer
- talrige
- observere
- opnået
- ONE
- ordrer
- organisation
- original
- Andet
- pandaer
- parameter
- del
- særlig
- procentdel
- udføre
- sætninger
- Place
- plato
- Platon Data Intelligence
- PlatoData
- Punkt
- mulig
- Indlæg
- vigtigste
- præsentere
- tidligere
- tidligere
- forarbejdning
- produceret
- Produkter
- projekt
- lovende
- forudsat
- giver
- kvalitet
- Spørgsmål
- grund
- Rød
- reducere
- Reduceret
- reducere
- om
- forhold
- Relationer
- relevant
- gentag
- repræsentation
- repræsentativt
- repræsenterer
- forskning
- Resultater
- afsløre
- gennemgå
- Anmeldelser
- samme
- Søg
- søgning
- udvælgelse
- tjeneste
- bør
- Vis
- vist
- Syn
- lignende
- Tilsvarende
- siden
- enkelt
- skyderen
- langsom
- So
- Social
- sociale medier
- Indlæg på sociale medier
- nogle
- Space
- specialiserede
- specifikke
- delt
- Trin
- Steps
- Strategi
- struktur
- sådan
- foreslår
- overvåget læring
- support
- Understøtter
- bord
- Tag
- tager
- teknikker
- ti
- vilkår
- Der.
- tre
- Gennem
- tid
- til
- tokeniseret
- værktøjer
- top
- Top ti
- emne
- Emner
- transformers
- tutorial
- typisk
- underliggende
- forstå
- enestående
- universitet
- USA
- brug
- Værdifuld
- Værdier
- Variant
- visualisering
- vente
- som
- mens
- Mens
- vilje
- inden for
- ord
- ord
- Værst
- skriver
- Forkert
- zephyrnet