AI:n perusteet
Kuinka Tekstin Luokittelu Toimii?
Tekstin luokittelu on prosessi, jossa analyysi tehdÃĪÃĪn tekstisekvensseistÃĪ ja niille annetaan merkintÃĪ, asettamalla ne ryhmÃĪÃĪn sisÃĪllÃķn perusteella. Tekstin luokittelu on lÃĪhes jokaisen tekoÃĪly- tai koneoppimistehtÃĪvÃĪn perusta, joka liittyy luonnollisen kielen prosessointiin (NLP). Tekstin luokittelun avulla tietokoneohjelma voi suorittaa monia eri tehtÃĪviÃĪ, kuten roskapostin tunnistamisen, mielipidetutkimuksen ja chatbot-toiminnon. Kuinka tekstin luokittelu toimii tarkalleen? MitkÃĪ ovat eri menetelmÃĪt tekstin luokittelun suorittamiseen? Tutkimme nÃĪiden kysymysten vastauksia alla.
Tekstin Luokittelun MÃĪÃĪrittely
On tÃĪrkeÃĪÃĪ ottaa hetki aikaa ja varmistaa, ettÃĪ ymmÃĪrrÃĪmme, mitÃĪ tekstin luokittelu on yleisesti, ennen kuin ryhdytÃĪÃĪn tutkimaan eri menetelmiÃĪ tekstin luokittelun suorittamiseen. Tekstin luokittelu on yksi niistÃĪ termeistÃĪ, jota sovelletaan moniin eri tehtÃĪviin ja algoritmeihin, joten on hyÃķdyllistÃĪ varmistaa, ettÃĪ ymmÃĪrrÃĪmme tekstin luokittelun peruskÃĪsitteen ennen kuin siirrytÃĪÃĪn tutkimaan eri tapoja, joilla se voidaan suorittaa.
MitÃĪ tahansa, joka liittyy tekstin luokittelun perusaskeliin, voidaan pitÃĪÃĪ tekstin luokitteluna. Riippumatta siitÃĪ, mitÃĪ tarkkaa menetelmÃĪÃĪ kÃĪytetÃĪÃĪn tekstin luokittelun suorittamiseen, jÃĪrjestelmÃĪ suorittaa perusaskeleet, ja se voidaan pitÃĪÃĪ tekstin luokittelijana. SÃĪhkÃķpostiroskapostin havaitseminen, asiakirjojen jÃĪrjestÃĪminen aiheen tai otsikon mukaan ja mielipiteen tunnistaminen tuotteen arvostelussa ovat kaikki esimerkkejÃĪ tekstin luokittelusta, koska ne suoritetaan ottamalla teksti syÃķtteenÃĪ ja tulostamalla luokan merkintÃĪ kyseiselle tekstille.
Kuinka Tekstin Luokittelu Toimii?

Kuva: Quinn Dombrowski via Flickr, CC BY SA 2.0 , (https://www.flickr.com/photos/quinnanya/4714794045)
Useimmat tekstin luokittelumenetelmÃĪt voidaan luokitella kolmeen eri kategoriaan: sÃĪÃĪntÃķpohjaisiin menetelmiin tai koneoppimismenetelmiin.
SÃĪÃĪntÃķpohjaiset LuokittelumenetelmÃĪt
SÃĪÃĪntÃķpohjaiset tekstin luokittelumenetelmÃĪt toimivat kÃĪyttÃĪmÃĪllÃĪ eksplisiittisesti suunniteltuja kielellisiÃĪ sÃĪÃĪntÃķjÃĪ. JÃĪrjestelmÃĪ kÃĪyttÃĪÃĪ insinÃķÃķrien luomia sÃĪÃĪntÃķjÃĪ mÃĪÃĪrittÃĪmÃĪÃĪn, mihin luokkaan tietty teksti kuuluu, etsimÃĪllÃĪ vihjeitÃĪ semanttisesti merkityksellisten tekstin elementtien muodossa. Jokaisella sÃĪÃĪnnÃķllÃĪ on malli, jota teksti on tÃĪytettÃĪvÃĪ, jotta se voidaan luokitella vastaavaan kategoriaan.
Esimerkiksi, jos haluat suunnitella tekstin luokittelijan, joka pystyy erottamaan yleisiÃĪ keskustelun aiheita, kuten sÃĪÃĪ, elokuvat tai ruoka, voit kertoa luokittelijalle etsimÃĪÃĪn sÃĪÃĪriippuvia sanoja tekstiesimerkeistÃĪ, joita se syÃķtetÃĪÃĪn. Voit antaa luokittelijalle listan avainsanoja ja muita merkityksellisiÃĪ malleja, joita voidaan kÃĪyttÃĪÃĪ aiheen mÃĪÃĪrittÃĪmiseen. Esimerkiksi voit kertoa luokittelijalle etsimÃĪÃĪn sanoja kuten âtuuliâ, âsadeâ, âaurinkoâ, âlumiâ tai âpilviâ. Voit sitten antaa luokittelijan laskea, kuinka usein nÃĪmÃĪ sanat esiintyvÃĪt syÃķtetyn tekstin runossa, ja jos ne esiintyvÃĪt useammin kuin elokuvaan liittyvÃĪt sanat, voit luokitella tekstin sÃĪÃĪluokkaan.
SÃĪÃĪntÃķpohjaisten jÃĪrjestelmien etu on, ettÃĪ niiden syÃķtteet ja tulosteet ovat ihmisten ymmÃĪrrettÃĪvissÃĪ ja tulkitettavissa, ja niitÃĪ voidaan parantaa manuaalisella insinÃķÃķrien vÃĪlikÃĪtenÃĪ. SÃĪÃĪntÃķpohjaiset luokittelumenetelmÃĪt ovat kuitenkin myÃķs jokseenkin hauraita, ja ne usein vaikeasti yleistyvÃĪt, koska ne voivat noudattaa vain ennalta mÃĪÃĪriteltyjÃĪ malleja, jotka on ohjelmoitu niihin. Esimerkiksi sana âpilviâ voi viitata kosteuteen ilmassa tai se voi viitata digitaaliseen pilveen, jossa data tallennetaan. On vaikea sÃĪÃĪntÃķpohjaisille jÃĪrjestelmille kÃĪsitellÃĪ nÃĪitÃĪ nuansseja ilman, ettÃĪ insinÃķÃķrit joutuvat viettÃĪmÃĪÃĪn paljon aikaa manuaalisesti ennakoimassa ja sÃĪÃĪtÃĪmÃĪÃĪn nÃĪitÃĪ hienouksia.
KoneoppimisjÃĪrjestelmÃĪt
Kuten mainittiin aiemmin, sÃĪÃĪntÃķpohjaisilla jÃĪrjestelmillÃĪ on rajoituksia, koska niiden toiminnot ja sÃĪÃĪnnÃķt on ennalta ohjelmoitu. Toisaalta, koneoppimisjÃĪrjestelmÃĪt toimivat soveltamalla algoritmeja, jotka analysoivat tietoja etsimÃĪÃĪn malleja, jotka liittyvÃĪt tiettyyn luokkaan.
Koneoppimisalgoritmit syÃķtetÃĪÃĪn esimerkkejÃĪ, jotka on ennalta luokiteltu, ja niitÃĪ analyysi esimerkkien merkityksellisistÃĪ piirteistÃĪ. NÃĪmÃĪ esimerkit ovat koulutusdataa.
Koneoppimisluokittelija analysoi koulutusdataa ja oppii malleja, jotka liittyvÃĪt eri luokkiin. TÃĪmÃĪn jÃĪlkeen nÃĪkemÃĪttÃķmiÃĪ esimerkkejÃĪ poistetaan merkinnÃķistÃĪÃĪn ja syÃķtetÃĪÃĪn luokittelualgoritmiin, joka antaa esimerkkeille luokan merkinnÃĪn. Antamat merkinnÃĪt verrataan alkuperÃĪisiin merkintÃķihin, jotta voidaan arvioida, kuinka tarkasti koneoppimisluokittelija oppi mallit, jotka ennustavat luokat.
Koneoppimisalgoritmit toimivat analysoimalla numeerista dataa. TÃĪmÃĪ tarkoittaa, ettÃĪ tekstidata on muunnettava numeeriseen muotoon, jotta voidaan kÃĪyttÃĪÃĪ koneoppimisalgoritmia. On olemassa useita tapoja koodata tekstidata numeeriseksi dataksi ja luoda koneoppimismenetelmiÃĪ tÃĪmÃĪn datan ympÃĪrille. KÃĪsittelemme joitakin nÃĪistÃĪ tavoista alla.
Sanapussi
Sanapussi on yksi yleisimmistÃĪ lÃĪhestymistavoista tekstidatan koodaamiseen ja esittÃĪmiseen. Termi âsanapussiâ tulee siitÃĪ, ettÃĪ otat kaikki sanat asiakirjoista ja laitat ne yhteen âpussiinâ ilman, ettÃĪ kiinnitÃĪt huomiota sanojen jÃĪrjestykseen tai kielioppiin, kiinnittÃĪen huomiota vain sanojen frekvenssiin pussissa. TÃĪmÃĪ johtaa pitkÃĪÃĪn taulukkoon tai vektoriin, joka sisÃĪltÃĪÃĪ yhden esityksen kaikista sanoista syÃķtetystÃĪ asiakirjasta. Jos syÃķtetystÃĪ asiakirjasta on 10 000 yksilÃķivÃĪÃĪ sanaa, ominaisuusvektorit ovat 10 000 sanan pituisia. TÃĪmÃĪ on se, miten sanapussin tai ominaisuusvektorin koko lasketaan.

Kuva: gk_ via Machinelearning.co, (https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)
Kun ominaisuusvektorin koko on mÃĪÃĪritelty, jokainen asiakirja asiakirjojen luettelossa saa oman vektorin, joka on tÃĪytetty luvuilla, jotka ilmaisevat, kuinka usein sana esiintyy kyseisessÃĪ asiakirjassa. TÃĪmÃĪ tarkoittaa, ettÃĪ jos sana âruokaâ esiintyy kahdeksan kertaa yhdessÃĪ tekstimÃĪÃĪrÃĪisessÃĪ asiakirjassa, vastaava ominaisuusvektori/ominaisuusjoukko sisÃĪltÃĪÃĪ kahdeksan vastaavassa kohdassa.
Toisin sanoen, kaikki yksilÃķivÃĪt sanat, jotka esiintyvÃĪt syÃķtetystÃĪ asiakirjassa, kerÃĪtÃĪÃĪn yhteen pussiin, ja jokainen asiakirja saa sanavektorin, joka on tÃĪytetty luvuilla, jotka ilmaisevat, kuinka usein sanat esiintyvÃĪt asiakirjassa.
Tekstikokoelmat sisÃĪltÃĪvÃĪt usein suuren mÃĪÃĪrÃĪn yksilÃķiviÃĪ sanoja, mutta useimmat niistÃĪ eivÃĪt ole hyvin yleisiÃĪ. TÃĪstÃĪ syystÃĪ sanaa, jota kÃĪytetÃĪÃĪn luomaan sanavektori, rajoitetaan yleensÃĪ tiettyyn arvoon (N), ja ominaisuusvektorin ulottuvuus on silloin Nx1.
Sanan Frekvenssi â Inversiodokumenttifrekvenssi (TF-IDF)
Toinen tapa edustaa asiakirjaa sen sanojen perusteella on kutsuttu Sanan Frekvenssi â Inversiodokumenttifrekvenssi (TF-IDF):ksi. TF-IDF-lÃĪhestymistapa luo myÃķs vektorin, joka edustaa asiakirjaa sen sanojen perusteella, mutta toisin kuin sanapussi, TF-IDF-painottaa sanoja enemmÃĪn kuin vain niiden frekvenssin. TF-IDF ottaa huomioon sanojen merkityksen asiakirjoissa, yrittÃĪen mÃĪÃĪrittÃĪÃĪ, kuinka relevantti sana on asiakirjan aiheeseen. Toisin sanoen, TF-IDF analysoi sanojen merkitystÃĪ asiakirjan aiheesta, eikÃĪ vain sanojen frekvenssiÃĪ. Sanavektorin sanaÃĪÃĪriÃĪ korvataan TF-IDF-pistemÃĪllÃĪ, joka lasketaan koko tietokokoelman suhteen.
TF-IDF-lÃĪhestymistapa toimii laskemalla ensin sanan frekvenssin, eli sanan esiintymisen mÃĪÃĪrÃĪn tietyssÃĪ asiakirjassa. TF-IDF myÃķs rajoittaa hyvin yleisten sanojen, kuten âtheâ, âorâ ja âandâ, vaikutusta, koska nÃĪmÃĪ âstop-sanatâ ovat hyvin yleisiÃĪ, mutta eivÃĪt anna paljoa tietoa asiakirjan sisÃĪllÃķstÃĪ. NÃĪmÃĪ sanat on diskontattava, mikÃĪ on se, mitÃĪ TF-IDF:n âinversiodokumenttifrekvenssiâ-osa tarkoittaa. TÃĪmÃĪ tehdÃĪÃĪn, koska mitÃĪ useammin tietty sana esiintyy asiakirjoissa, sitÃĪ vÃĪhemmÃĪn se on hyÃķdyllinen asiakirjojen erottamiseen toisistaan. TF-IDF:n kaava, jolla lasketaan sanan merkitystÃĪ, on suunniteltu sÃĪilyttÃĪmÃĪÃĪn sanat, jotka ovat useimmin esiintyvÃĪt ja semanttisesti rikkaimmat.
TF-IDF-menetelmÃĪllÃĪ luodut ominaisuusvektorit sisÃĪltÃĪvÃĪt normalisoidut arvot, jotka summaavat yhteen, ja jokaiselle sanalle annetaan painotettu arvo, joka lasketaan TF-IDF-kaavalla.
Sanaupotukset
Sanaupotukset ovat menetelmiÃĪ, joilla tekstiÃĪ voidaan edustaa siten, ettÃĪ sanat, joilla on samanlainen merkitys, ovat lÃĪhellÃĪ toisiaan numeerisessa edustajassa.
Sanaupotukset toimivat âvektorisoidenâ sanoja, eli edustamalla sanoja reaaliarvoisina vektoreina vektoritilassa. Vektorit ovat suunnattuja ja niillÃĪ on suuruus (tai pituus). Kun sanoja edustetaan vektoreina, ne muunnetaan vektoreiksi, jotka koostuvat reaaliarvoista. Jokainen sana on kartoitettu yhteen vektoriin, ja sanat, joilla on samanlainen merkitys, ovat lÃĪhellÃĪ toisiaan. TÃĪmÃĪ koodaus mahdollistaa koneoppimisalgoritmien oppimisen monimutkaisia suhteita sanojen vÃĪlillÃĪ.
Sanojen edustajat, jotka luodaan sanaupotusten avulla, luodaan sen perusteella, miten sanat ovat kÃĪytetty. Koska sanat, jotka ovat kÃĪytetty samalla tavalla, ovat lÃĪhellÃĪ toisiaan, sanaupotusten prosessi kÃĪÃĪntÃĪÃĪ osan sanan merkityksestÃĪ numeeriseksi edustajaksi. Sanapussi-lÃĪhestymistapa, toisin sanoen, luo hauraita edustauksia, joissa eri sanat ovat erilaisia edustauksia, vaikka ne ovat kÃĪytetty hyvin samankaltaisissa konteksteissa.
Tuloksena sanaupotukset ovat parempia sanan kontekstin havaitsemisessa lauseessa.
On olemassa eri algoritmeja ja lÃĪhestymistapoja sanaupotusten luomiseen. Jotkut yleisimmistÃĪ ja luotettavimmista sanaupotusmenetelmistÃĪ ovat upotuskerrokset, Word2Vec ja GloVe.
Upotuskerrokset
Yksi mahdollinen tapa kÃĪyttÃĪÃĪ sanaupotukset koneoppimisen/deep learning-jÃĪrjestelmÃĪn yhteydessÃĪ on kÃĪyttÃĪÃĪ upotuskerrosta. Upotuskerrokset ovat deep learning -kerrokset, jotka muuntavat sanat sanaupotuksiksi, jotka syÃķtetÃĪÃĪn loppuun deep learning-jÃĪrjestelmÃĪÃĪn. Sanaupotukset oppivat, kun verkko koulutetaan tiettyyn tekstipohjaiseen tehtÃĪvÃĪÃĪn.

SanaupotuslÃĪhestymistavassa samanmerkityksiset sanat ovat lÃĪhellÃĪ toisiaan ja eri merkityksiset sanat ovat kauempana toisistaan.
Upotuskerrosten kÃĪyttÃĪmiseen tarvitaan, ettÃĪ teksti on ensin esikÃĪsitelty. Teksti asiakirjassa on koodattava yksikkÃķvektoriksi, ja vektorin koko on mÃĪÃĪriteltÃĪvÃĪ etukÃĪteen. YksikkÃķteksti muunnetaan sitten sanaupotuksiksi, ja upotukset syÃķtetÃĪÃĪn koneoppimismalliin.
Word2Vec
Word2Vec on toinen yleinen sanaupotusmenetelmÃĪ. Word2Vec kÃĪyttÃĪÃĪ tilastollisia menetelmiÃĪ muuttaakseen sanat sanaupotuksiksi, ja se on optimoitu kÃĪytettÃĪvÃĪksi neuroverkkopohjaisissa malleissa. Word2Vec kehitettiin Google-tutkijoilla, ja se on yksi yleisimmin kÃĪytetyistÃĪ upotusmenetelmistÃĪ, koska se antaa luotettavasti hyÃķdyllisiÃĪ ja rikkaita upotukset. Word2Vec-edustajat ovat hyÃķdyllisiÃĪ semanttisten ja syntaktisten yhteisuuksien tunnistamisessa kielessÃĪ. TÃĪmÃĪ tarkoittaa, ettÃĪ Word2Vec-edustajat havaitsevat suhteita samankaltaisten kÃĪsitteiden vÃĪlillÃĪ, pystyen erottamaan, ettÃĪ yhteys âKuningasâ ja âKuningatarâ on kuninkaallisuus, ja ettÃĪ âKuningasâ implikoi âmiehisyyttÃĪâ, kun taas âKuningatarâ implikoi ânaisellisuuttaâ.
GloVe
GloVe eli Global Vector for Word Representation perustuu sanaupotusalgoritmeihin, jotka ovat Word2Vecin kaltaisia. GloVe-yhdisteet yhdistÃĪvÃĪt osia sekÃĪ Word2VecistÃĪ ettÃĪ matriisifaktorointitekniikoista, kuten Latent Semantic Analysis. Word2Vecin etu on, ettÃĪ se pystyy havaitsemaan kontekstin, mutta se ei ole hyvÃĪ havaitsemaan globaaleja tilastollisia tietoja. Perinteiset vektorirepresentaatiot ovat hyviÃĪ mÃĪÃĪrittÃĪmÃĪÃĪn globaaleja tilastollisia tietoja, mutta ne eivÃĪt ole hyÃķdyllisiÃĪ mÃĪÃĪrittÃĪmÃĪÃĪn sanojen ja lauseiden kontekstia. GloVe ottaa parhaat osat molemmista lÃĪhestymistavoista ja luo sana-kontekstin perustuen globaaleihin tilastollisiin tietoihin.












