Kuva Mikechie Esparagoza
Joka päivä olemme suurimman osan ajasta tekemisissä merkitsemättömän tekstin kanssa, eikä valvottuja oppimisalgoritmeja voida käyttää tiedon poimimiseen tiedoista. Luonnollisen kielen osakenttä voi paljastaa taustalla olevan rakenteen suurissa tekstimäärissä. Tämä tieteenala on nimeltään Topic Modeling, joka on erikoistunut aiheiden poimimiseen tekstistä.
Tässä yhteydessä perinteiset lähestymistavat, kuten piilevä Dirichlet-allokaatio ja ei-negatiivinen matriisifaktorointi, osoittivat, että ne eivät kuvaa hyvin sanojen välisiä suhteita, koska ne perustuvat sanapussiin.
Tästä syystä aiomme keskittyä kahteen lupaavaan lähestymistapaan, Top2Vec ja BERTopic, jotka korjaavat nämä haitat hyödyntämällä esikoulutettuja kielimalleja aiheiden luomiseen. Aloitetaan!
Top2Vec on malli, joka pystyy tunnistamaan automaattisesti aiheet tekstistä käyttämällä valmiiksi koulutettuja sanavektoreita ja luomalla mielekkäitä upotettuja aiheita, asiakirjoja ja sanavektoreita.
Tässä lähestymistavassa aiheiden purkaminen voidaan jakaa eri vaiheisiin:
- Luo semanttinen upotus: luodaan yhdessä upotetut asiakirja- ja sanavektorit. Ajatuksena on, että samanlaiset asiakirjat tulisi olla lähempänä upotustilassa, kun taas erilaiset asiakirjat pitäisi olla kaukana niiden välillä.
- Pienennä asiakirjan upotuksen mittasuhteita: Mittasuhteiden vähentämisen lähestymistavan soveltaminen on tärkeää, jotta suurin osa asiakirjojen upotuksen vaihteluista säilyy ja suurikokoista tilaa pienennetään. Lisäksi se mahdollistaa tiheiden alueiden tunnistamisen, joissa jokainen piste edustaa dokumenttivektoria. UMAP on tässä vaiheessa valittu tyypillinen ulottuvuuden vähentämismenetelmä, koska se pystyy säilyttämään korkeaulotteisen datan paikallisen ja globaalin rakenteen.
- Tunnista asiakirjaklusterit: HDBScania, tiheyteen perustuvaa klusterointimenetelmää, käytetään samanlaisten asiakirjojen tiheiden alueiden löytämiseen. Jokainen asiakirja määritetään kohinaksi, jos se ei ole tiheässä klusterissa, tai tunnisteeksi, jos se kuuluu tiheälle alueelle.
- Laske sentroidit alkuperäisessä upotustilassa: Sentroidi lasketaan ottamalla huomioon suuriulotteinen tila pienennetyn upotustilan sijaan. Klassinen strategia koostuu kaikkien tiheään alueeseen kuuluvien dokumenttivektorien aritmeettisen keskiarvon laskemisesta, joka on saatu edellisessä vaiheessa HDBSCANilla. Tällä tavalla jokaiselle klusterille luodaan aihevektori.
- Etsi sanoja jokaiselle aihevektorille: asiakirjavektoria lähimmät sanavektorit ovat semanttisesti edustavimpia.
Esimerkki Top2Vecistä
Tässä opetusohjelmassa aiomme analysoida McDonald'sin negatiivisia arvosteluja tietojoukosta, joka on saatavilla osoitteessa data.world. Aiheiden tunnistaminen näistä katsauksista voi olla arvokasta monikansallisille, jotta he voivat parantaa tämän pikaruokaketjun tuotteita ja organisaatiota tietojen toimittamissa Yhdysvalloissa sijainneissa.
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()
Yhdellä koodirivillä aiomme suorittaa kaikki aiemmin selitetyn top2vecin vaiheet.
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"},
)
Top2Vecin tärkeimmät argumentit ovat:
- docs_bad: on luettelo merkkijonoista.
- universal-sentence-encoder: on valittu valmiiksi koulutettu upotusmalli.
- deep-learn: on parametri, joka määrittää tuotetun dokumenttivektorin laadun.
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)
Eniten
Sanapilvien perusteella voimme päätellä, että aihe 0 koskee yleisiä valituksia McDonaldin palvelusta, kuten "hidas palvelu", "kamala palvelu" ja "tilaa väärin", kun taas aihe 1 ja 2 viittaavat aamiaisruokiin ( McMuffin, keksi, muna) ja kahvi (jääkahvi ja kuppi kahvia).
Nyt yritämme etsiä asiakirjoja kahdella avainsanalla, väärällä ja hitaalla:
( 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()
lähtö:
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 on aiheen mallinnustekniikka, joka hyödyntää muuntajia ja c-TF-IDF:ää luodakseen tiheitä klustereita, jotka mahdollistavat helposti tulkittavia aiheita säilyttäen samalla tärkeät sanat aihekuvauksissa."
Kuten nimestä voi päätellä, BERTopic käyttää tehokkaita muuntajamalleja tunnistaakseen tekstissä esiintyvät aiheet. Toinen tämän aiheen mallinnusalgoritmin ominaisuus on TF-IDF:n muunnelman, jota kutsutaan TF-IDF:n luokkapohjaiseksi muunnelmaksi, käyttö.
Kuten Top2Vec, sen ei tarvitse tietää aiheiden määrää, mutta se poimii aiheet automaattisesti.
Lisäksi, samoin kuin Top2Vec, se on algoritmi, joka sisältää eri vaiheita. Ensimmäiset kolme vaihetta ovat samat: upottavien asiakirjojen luominen, mittojen vähentäminen UMAP:lla ja klusterointi HDBScanilla.
Peräkkäiset vaiheet alkavat poiketa Top2Vecistä. Kun tiheät alueet on löydetty HDBSCANilla, jokainen aihe muutetaan sanapussiesitykseen, joka ottaa huomioon, esiintyykö sana asiakirjassa vai ei. Sen jälkeen, kun klusteriin kuuluvat asiakirjat katsotaan yksilöllisiksi dokumentiksi ja TF-IDF käytetään. Joten jokaiselle aiheelle tunnistamme osuvimmat sanat, joiden c-TF-IDF-arvon tulisi olla korkein.
Esimerkki BERTopicista
Toistamme analyysin samalla tietojoukolla.
Poimimme aiheet arvosteluista BERTopicin avulla:
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()
Mallin palauttama taulukko sisältää tietoja 14 poimitusta aiheesta. Aihe vastaa aiheen tunnistetta, paitsi kaikki ohitetut poikkeamat, jotka on merkitty -1.
Nyt siirrymme mielenkiintoisimpaan osaan, joka koskee aiheidemme visualisointia interaktiivisiksi kaavioiksi, kuten kunkin aiheen tärkeimpien termien visualisointiin, aiheiden väliseen etäisyyskarttaan, upotustilan kaksiulotteiseen esitykseen ja aihehierarkia.
Aloitetaan kymmenen parhaan aiheen pylväskaavioiden näyttäminen. Jokaisen aiheen osalta voimme havaita tärkeimmät sanat, jotka on lajiteltu laskevaan järjestykseen c-TF-IDF-pisteytyksen perusteella. Mitä enemmän sana on merkityksellinen, sitä enemmän pisteet ovat.
Ensimmäinen aihe sisältää yleisiä sanoja, kuten sijainti ja ruoka, aihe 1 tilaa ja odota, aihe 2 pahin ja palvelu, aihe 3 paikka ja likainen, mainos jne.
Pylväskaavioiden visualisoinnin jälkeen on aika katsoa aiheiden välinen etäisyyskartta. Vähennämme c-TF-IDF-pisteiden dimensioisuuden kaksiulotteiseksi tilaksi visualisoidaksemme juonen aiheita. Alareunassa on liukusäädin, jonka avulla voit valita aiheen, joka väritetään punaisella. Voimme huomata, että aiheet on ryhmitelty kahteen eri klusteriin, joista toisessa on yleiset teemat, kuten ruoka, kana ja sijainti, ja toisessa erilaisia negatiivisia puolia, kuten huonoin palvelu, likaisuus, paikka ja kylmä.
Seuraava kaavio antaa mahdollisuuden nähdä arvostelujen ja aiheiden väliset suhteet. Erityisesti voi olla hyödyllistä ymmärtää, miksi arvostelu on liitetty tiettyyn aiheeseen ja on kohdistettu osuvimpien löydettyjen sanojen kanssa. Voimme esimerkiksi keskittyä punaiseen klusteriin, joka vastaa aihetta 2 muutamalla sanalla huonoimmasta palvelusta. Asiakirjat tällä tiheällä alueella vaikuttavat melko negatiivisilta, kuten "Kauhea asiakaspalvelu ja vielä huonompi ruoka".
Ensi näkemältä näillä lähestymistavoilla on monia yhteisiä piirteitä, kuten aiheiden määrän automaattinen löytäminen, esikäsittelyn välttämättömyys useimmissa tapauksissa, UMAP:n soveltaminen dokumenttien upotusten ulottuvuuden vähentämiseen, ja sitten HDBSCANia käytetään mallintaa näitä supistettuja dokumenttien upotuksia, mutta ne ovat pohjimmiltaan erilaisia, kun tarkastellaan tapaa, jolla ne määrittävät aiheet asiakirjoille.
Top2Vec luo aiheesitykset etsimällä sanoja, jotka sijaitsevat lähellä klusterin painopistettä.
Toisin kuin Top2Vec, BERTopic ei ota huomioon klusterin painopistettä, mutta se piti kaikkia klusterin asiakirjoja ainutlaatuisena dokumenttina ja poimii aiheesitykset käyttämällä TF-IDF:n luokkapohjaista muunnelmaa.
Top2Vec | BERTaihe |
Strategia aiheiden poimimiseksi klusterin sentroidien perusteella. | Strategia aiheiden poimimiseksi c-TF-IDF:n perusteella. |
Se ei tue dynaamista aihemallinnusta. | Se tukee dynaamista aihemallinnusta. |
Se rakentaa sanapilviä kullekin aiheelle ja tarjoaa hakutyökaluja aiheille, asiakirjoille ja sanoille. | Se mahdollistaa interaktiivisten visualisointiaiheiden rakentamisen, mikä mahdollistaa poimittujen aiheiden tulkinnan. |
Aihemallinnus on kasvava luonnollisen kielen käsittelyn ala, ja siellä on lukuisia mahdollisia sovelluksia, kuten arvosteluja, ääni- ja sosiaalisen median julkaisuja. Kuten on osoitettu, tämä artikkeli tarjoaa yleiskatsauksen Topi2Vecistä ja BERTopicista, jotka ovat kaksi lupaavaa lähestymistapaa, jotka voivat auttaa sinua tunnistamaan aiheita muutamalla koodirivillä ja tulkitsemaan tuloksia datavisualisoinnilla. Jos sinulla on kysyttävää näistä tekniikoista tai sinulla on muita ehdotuksia muista lähestymistavoista aiheiden havaitsemiseen, kirjoita ne kommentteihin.
Eugenia Anello on tällä hetkellä tutkija Padovan yliopiston tietotekniikan laitoksella Italiassa. Hänen tutkimusprojektinsa keskittyy jatkuvaan oppimiseen yhdistettynä poikkeamien havaitsemiseen.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- Platoblockchain. Web3 Metaverse Intelligence. Tietoa laajennettu. Pääsy tästä.
- Lähde: 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
- pystyy
- Meistä
- Tili
- Ad
- osoite
- Jälkeen
- algoritmi
- algoritmit
- linjassa
- Kaikki
- jako
- Salliminen
- mahdollistaa
- määrät
- analyysi
- analysoida
- ja
- poikkeavuuden havaitseminen
- Toinen
- Hakemus
- sovellukset
- sovellettu
- lähestymistapa
- lähestymistavat
- ALUE
- alueet
- perustelut
- artikkeli
- näkökohdat
- osoitettu
- audio-
- automaattisesti
- saatavissa
- Huono
- baari
- perustua
- koska
- välillä
- pohja
- Aamiainen
- Rakentaminen
- rakentaa
- laskettaessa
- nimeltään
- ei voi
- kykenee
- kaapata
- tapauksissa
- ketju
- ominainen
- Kaaviot
- valittu
- Kaupunki
- klassinen
- lähellä
- lähempänä
- Cluster
- klustereiden
- koodi
- kahvi
- yhdistetty
- kommentit
- Yhteinen
- valitukset
- harkittu
- ottaen huomioon
- sisältää
- tausta
- tavanomainen
- vastaava
- vastaa
- luoda
- luotu
- luo
- Luominen
- luominen
- Kuppi
- Tällä hetkellä
- asiakas
- Asiakaspalvelu
- tiedot
- päivä
- tekemisissä
- osoittivat
- osasto
- Detection
- määrittää
- eri
- etäisyys
- kaukainen
- erota
- asiakirja
- asiakirjat
- ei
- haitat
- ajaa
- aja läpi
- dynaaminen
- kukin
- helposti
- muualla
- upotettu
- Tekniikka
- Jopa
- esimerkki
- Paitsi
- selitti
- uute
- otteet
- erittäin
- FAST
- kaveri
- harvat
- ala
- Löytää
- löytäminen
- Etunimi
- Keskittää
- keskityttiin
- ruoka
- löytyi
- alkaen
- pohjimmiltaan
- general
- tuottaa
- syntyy
- saada
- Global
- Go
- menee
- kaavio
- kaaviot
- Kasvava
- auttaa
- hierarkia
- Korkea
- korkeampi
- suurin
- HTTPS
- ajatus
- Tunnistaminen
- tunniste
- tunnistaa
- tunnistaminen
- tuoda
- tärkeä
- parantaa
- in
- tiedot
- sen sijaan
- vuorovaikutteinen
- mielenkiintoinen
- tulkinta
- IT
- Italia
- KDnuggets
- pito
- Tietää
- Merkki
- Kieli
- suuri
- oppiminen
- vipusuhteita
- linja
- linjat
- Lista
- paikallinen
- sijaitsevat
- sijainti
- sijainnit
- katso
- näköinen
- tärkein
- monet
- kartta
- Matriisi
- MCDONALD
- mielekäs
- Media
- malli
- mallintaminen
- mallintaminen
- mallit
- lisää
- eniten
- monikansallinen
- nimi
- Luonnollinen
- Luonnollinen kieli
- Luonnollinen kielen käsittely
- Tarve
- negatiivinen
- seuraava
- Melu
- numero
- useat
- tarkkailla
- saatu
- ONE
- tilata
- organisaatio
- alkuperäinen
- Muut
- pandas
- parametri
- osa
- erityinen
- osuus
- suorittaa
- lausekkeet
- Paikka
- Platon
- Platonin tietotieto
- PlatonData
- Kohta
- mahdollinen
- Viestejä
- voimakas
- esittää
- edellinen
- aiemmin
- käsittely
- valmistettu
- Tuotteemme
- projekti
- lupaava
- mikäli
- tarjoaa
- laatu
- kysymykset
- reason
- punainen
- vähentää
- Vähentynyt
- vähentämällä
- suhteen
- yhteys
- Ihmissuhteet
- merkityksellinen
- toistaa
- edustus
- edustaja
- edustaa
- tutkimus
- tulokset
- paljastaa
- arviot
- Arvostelut
- sama
- Haku
- haku
- valitsemalla
- palvelu
- shouldnt
- näyttää
- esitetty
- Näky
- samankaltainen
- samalla lailla
- koska
- single
- liukusäädintä
- hidas
- So
- sosiaalinen
- sosiaalinen media
- Sosiaalisen median viestit
- jonkin verran
- Tila
- erikoistunut
- erityinen
- jakaa
- Vaihe
- Askeleet
- Strategia
- rakenne
- niin
- Ehdottaa
- valvottu oppiminen
- tuki
- Tukee
- taulukko
- ottaa
- vie
- tekniikat
- kymmenen
- ehdot
- -
- Siellä.
- kolmella
- Kautta
- aika
- että
- tokenized
- työkalut
- ylin
- Top 10
- aihe
- Aiheet
- muuntajat
- oppitunti
- tyypillinen
- taustalla oleva
- ymmärtää
- unique
- yliopisto
- USA
- käyttää
- arvokas
- arvot
- variantti
- visualisointi
- odottaa
- joka
- vaikka
- Kun taas
- tulee
- sisällä
- sana
- sanoja
- pahin
- kirjoittaa
- Väärä
- zephyrnet