Sanan upottaminen on prosessi, jossa tekstiä ymmärretään koneoppimisalgoritmeilla, sanomme myös, että sanan upottaminen on opittu esitys tekstille, jossa se kaappaa sanan asiayhteyden asiakirjassa, semanttisen ja syntaktisen samankaltaisuuden sekä korpuksen muiden sanojen välisen suhteen.
Tämä lähestymistapa on avain luonnollisen kielen käsittelyyn liittyvien ongelmien ratkaisemiseen koneoppimisen ja syväoppimisen algoritmien avulla. Pohjimmiltaan sanojen upottaminen on sanojen vektoriesitys. Laskemalla sanojen etäisyyttä tai sijaintia se edustaa merkityssanoja, lauseita, kappaleita tai asiakirjoja.
Sanojen upottamisen tekniikoita on tähän mennessä esitelty useita. Yleisesti sanotaan, että sanojen upottamista on kahdenlaista –
Static Word Embedding
Contextual Word Embedding
1. Staattinen sanan upottaminen: Perinteiset menetelmät, kuten Skip-Gram ja Continuous Bag-of-Words, oppivat staattisen upottamisen kouluttamalla hakutaulukoita, jotka kääntävät sanat tiheäksi vektoriksi. Staattinen upotus on suoraan hyödyllinen leksikaalisen semantiikkatehtävän ratkaisemisessa.
Obgelma: Ei voi ratkaista moniselitteisiä sanoja. Esimerkiksi kun sana edustaa useita merkityksiä kahdessa eri lauseessa, Skip-Gram- tai BOW-menetelmät epäonnistuvat.
2. Contextual Word Embedding: Kontekstisidonnaisen sanojen upottamisen tavoitteena on vangita sanan semantiikka eri yhteyksissä, jotta voidaan ratkaista monimerkityksisten sanojen ongelma ja sanojen kontekstiriippuvainen luonne. LSTM, kaksisuuntainen LSTM jne. malli auttaa saamaan sanojen vektorimuodon.
Word2Vec-malli: Word2Vec-malli: Word2Vec on menetelmä, jolla voidaan rakentaa tällainen staattinen sanojen upotus. Tämä on saavutettu käyttämällä kahta menetelmää Skip Gram ja Common Bag of Words (CBOW) neuroverkkojen avulla. Sen on kehittänyt Tomas Mikolov vuonna 2013 Googlessa.
Mihin tarvitsemme niitä?
Esitettäköön, että meillä on alla olevat lauseet.
”Rakastan koodaamista Jupyterilla.” ja ”Nautin koodaamisesta Pycharmilla.”
Kummatkin lauseet ovat hyvin lähekkäin toisiaan. Jos rakennamme tyhjentävän sanaston (sanotaan sitä V:ksi), se on V = {I, love, enjoy, coding, in, Jupyter, Pycharm}. Jos käytämme yhtä kuumaa koodausta. Emme pysty saamaan tarkkaa merkitystä, koska rakkaus, nauttia, koodaus jokainen sana käsitellään samalla tavalla, kun taas rakkaus ja nauttia ja hyvin lähellä toisiaan.
Meidän motiivimme on, että sanat, joilla on samankaltainen konteksti, ovat hyvin lähellä spatiaalista asemaa. Matemaattisesti kosinusetäisyys määrittää, kuinka lähellä kaksi sanaa ovat. Lähimmän sanan kosinusetäisyys tai enkelin kosinus on lähellä 0 ja kaukaisimman sanan kosinusetäisyys on lähellä 1.
Miten Word2Vec toimii?
Word2Vec-malli voi toimia kahdella algoritmilla –
Skip-gram
CBOW (Continuous Bag of Words)
CBOW-malli: Tämä menetelmä ottaa syötteenä kunkin sanan kontekstin ja yrittää ennustaa kontekstia vastaavan sanan. Ennustettaessa kohdesanaa opitaan kohdesanan vektoriesitys. Syötteenä on useita sanoja ikkunan koon mukaan (5 sanaa), mutta se palauttaa tulosteena yhden sanan.
Katsotaan arkkitehtuuria syvemmälle:
Skip-Gram-malli: Tämä toinen algoritmi Word2Vecille. Se on CBOW-mallin vastakohta. Malli ottaa syötteenä yhden sanan, mutta se palauttaa useita sanoja ikkunan koon mukaan.
Sanojen sulauttamisen toteuttaminen Gensimin Word2Vec-mallilla:
Tässä selitän askel askeleelta, miten treenataan word2vec-mallia Gensimillä. Dataset, olen kerännyt Kaggle-alustalta. Tämä tietokokonaisuus on Myers-Briggs Type Indicatorin julkisista tiedoista. Se sisältää kaksi saraketta type ja post. ”type” määrittelee 16 persoonallisuustyyppiä ja ”post” määrittelee kommentin näistä 16 persoonallisuustyypistä.
Leave a Reply