tynkä Miten tekstin luokittelu toimii? - Unite.AI
Liity verkostomme!

AI 101

Kuinka tekstin luokittelu toimii?

mm
Päivitetty on

Tekstin luokittelu on prosessi, jossa analysoidaan tekstisarjoja ja määritetään niille tunniste ja laitetaan ne ryhmään sisällön perusteella. Tekstin luokittelu on lähes minkä tahansa tekoäly- tai koneoppimistehtävän perustana, joka sisältää luonnollisen kielenkäsittelyn (NLP). Tekstiluokituksen avulla tietokoneohjelma voi suorittaa monia erilaisia ​​tehtäviä, kuten roskapostin tunnistusta, tunteiden analysointia ja chatbot-toimintoja. Miten tekstin luokittelu toimii tarkalleen? Mitä eri menetelmiä tekstin luokittelussa on? Tutkimme vastauksia näihin kysymyksiin alla.

Tekstin luokituksen määrittäminen

On tärkeää ottaa aikaa ja varmistaa, että ymmärrämme mikä on tekstin luokitteluyleensä ennen kuin perehdymme tekstin luokittelun eri menetelmiin. Tekstin luokittelu on yksi niistä termeistä, joita käytetään moniin erilaisiin tehtäviin ja algoritmeihin, joten on hyödyllistä varmistaa, että ymmärrämme tekstin luokittelun peruskäsitteen, ennen kuin siirrymme tutkimaan erilaisia ​​tapoja, joilla se voidaan suorittaa.

Tekstiluokituksena voidaan pitää kaikkea, mikä edellyttää eri luokkien luomista tekstille ja erilaisten tekstinäytteiden merkitsemistä näiksi luokiksi. Niin kauan kuin järjestelmä suorittaa nämä perusvaiheet, sitä voidaan pitää tekstin luokittelijana riippumatta siitä, mitä menetelmää tekstin luokittelussa on käytetty, ja riippumatta siitä, miten tekstiluokitinta lopulta käytetään. Sähköpostiroskapostin havaitseminen, asiakirjojen järjestäminen aiheen tai otsikon mukaan ja tuotteen arvostelun tunteen tunnistaminen ovat kaikki esimerkkejä tekstin luokittelusta, koska ne saadaan aikaan käyttämällä tekstiä syötteenä ja tulostamalla luokkatunniste kyseiselle tekstille.

Kuinka tekstin luokittelu toimii?

Kuva: Quinn Dombrowski Flickr, CC BY SA 2.0:n kautta (https://www.flickr.com/photos/quinnanya/4714794045)

Useimmat tekstin luokittelumenetelmät voidaan sijoittaa johonkin kolmesta eri kategoriasta: sääntöpohjaiset menetelmät tai koneoppimismenetelmät.

Sääntöön perustuvat luokitusmenetelmät

Sääntöihin perustuvat tekstin luokittelumenetelmät toimivat eksplisiittisesti suunniteltujen kielellisten sääntöjen avulla. Järjestelmä määrittää insinöörin luomien sääntöjen avulla, mihin luokkaan tietyn tekstin tulee kuulua, ja etsii vihjeitä semanttisesti relevanttien tekstielementtien muodossa. Jokaisella säännöllä on malli, jota tekstin on vastattava, jotta se voidaan sijoittaa vastaavaan luokkaan.

Tarkemmin sanottuna oletetaan, että halusit suunnitella tekstiluokituksen, joka pystyy erottamaan yleiset keskusteluaiheet, kuten sää, elokuvat tai ruoka. Jotta tekstiluokittelijasi tunnistaisi sääkeskustelun, voit pyytää sitä etsimään säähän liittyviä sanoja sille syötettävien tekstinäytteiden rungosta. Sinulla on luettelo avainsanoista, lauseista ja muista asiaankuuluvista malleista, joiden avulla voit erottaa aiheen. Voit esimerkiksi ohjeistaa luokittelijaa etsimään sanoja, kuten "tuuli", "sade", "aurinko", "lumi" tai "pilvi". Voit sitten antaa luokittimen katsoa syöttötekstiä läpi ja laskea kuinka monta kertaa nämä sanat esiintyvät tekstissä ja jos ne esiintyvät yleisemmin kuin elokuviin liittyvät sanat, luokittelet tekstin sääluokkaan kuuluvaksi.

Sääntöpohjaisten järjestelmien etuna on, että niiden syötteet ja lähdöt ovat ihmisten ennustettavissa ja tulkittavissa, ja niitä voidaan parantaa insinöörin manuaalisella toimenpiteellä. Sääntöihin perustuvat luokittelumenetelmät ovat kuitenkin myös hieman hauraita, ja niiden yleistäminen on usein vaikeaa, koska ne pystyvät pitämään kiinni vain ohjelmoituihin ennalta määritettyihin kuvioihin. Esimerkiksi sana "pilvi" voisi viitata kosteudelle taivas, tai se voi viitata digitaaliseen pilveen, jossa tietoja on tallennettu. Sääntöihin perustuvien järjestelmien on vaikea käsitellä näitä vivahteita ilman, että insinöörit viettävät kohtuullisen paljon aikaa yrittääkseen ennakoida ja säätää näitä vivahteita manuaalisesti.

Koneoppimisjärjestelmät

Kuten edellä mainittiin, sääntöpohjaisilla järjestelmillä on rajoituksia, koska niiden toiminnot ja säännöt on ohjelmoitava valmiiksi. Sitä vastoin koneoppimiseen perustuvat luokitusjärjestelmät toimivat soveltamalla algoritmeja, jotka analysoivat tietojoukkoja tiettyyn luokkaan liittyvien kuvioiden varalta.

Koneoppimisalgoritmeille syötetään valmiiksi merkittyjä/valmiiksi luokiteltuja ilmentymiä, jotka analysoidaan asiaankuuluvien ominaisuuksien varalta. Nämä esimerkityt tapaukset ovat harjoitustietoja.

Koneoppimisen luokitin analysoi harjoitusdataa ja oppii kuvioita, jotka liittyvät eri luokkiin. Tämän jälkeen näkymättömistä ilmentymistä poistetaan tunnisteet ja ne syötetään luokittelualgoritmiin, joka määrittää ilmentymille tunnisteen. Määritettyjä tarroja verrataan sitten alkuperäisiin tarroihin, jotta nähdään, kuinka tarkka koneoppimisluokittelu oli, ja mitataan kuinka hyvin malli oppi mitkä mallit ennustavat mitkä luokat.

Koneoppimisalgoritmit toimivat numeerista dataa analysoimalla. Tämä tarkoittaa, että koneoppimisalgoritmin käyttämiseksi tekstidatassa teksti on muutettava numeeriseen muotoon. On olemassa erilaisia ​​menetelmiä tekstidatan koodaamiseen numeerisiksi tiedoiksi ja koneoppimismenetelmien luomiseen tämän datan ympärille. Käsittelemme alla joitakin eri tapoja esittää tekstidataa.

Sanapussi

Bag-of-sanoja on yksi yleisimmin käytetyistä lähestymistavoista tekstidatan koodaamiseen ja esittämiseen. Termi "sanapussi" tulee siitä, että otat periaatteessa kaikki asiakirjojen sanat ja laitat ne kaikki yhteen "pussiin" kiinnittämättä huomiota sanajärjestykseen tai kielioppiin, kiinnittäen huomiota vain sanojen tiheys laukussa. Tuloksena on pitkä taulukko tai vektori, joka sisältää yhden esityksen kaikista syöttöasiakirjojen sanoista. Joten jos syöttöasiakirjoissa on yhteensä 10000 10000 ainutlaatuista sanaa, piirrevektorit ovat XNUMX XNUMX sanaa pitkiä. Näin sanapussin/ominaisuusvektorin koko lasketaan.

Kuva: gk_ kautta Machinelearning.co, (https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)

Kun piirrevektorin koko on määritetty, jokaiselle asiakirjojen kokonaisluettelossa olevalle dokumentille osoitetaan oma vektorinsa, joka on täytetty numeroilla, jotka osoittavat, kuinka monta kertaa kyseinen sana esiintyy nykyisessä dokumentissa. Tämä tarkoittaa, että jos sana "ruoka" esiintyy kahdeksan kertaa yhdessä tekstidokumentissa, vastaavalla ominaisuusvektorilla/ominaisuustaulukolla on kahdeksan vastaavassa paikassa.

Toisin sanoen kaikki syöttöasiakirjoissa esiintyvät yksilölliset sanat kasataan yhteen pussiin ja sitten jokainen asiakirja saa samankokoisen sanavektorin, joka sitten täytetään kuinka monta kertaa eri sanat esiintyvät asiakirjassa .

Tekstitietojoukot sisältävät usein suuren määrän yksilöllisiä sanoja, mutta useimpia niistä ei käytetä kovin usein. Tästä syystä sanavektorin luomiseen käytettyjen sanojen lukumäärä rajoitetaan tyypillisesti valittuun arvoon (N), jolloin piirrevektorin ulottuvuus on Nx1.

Termitaajuus-käänteinen asiakirjataajuus (TF-IDF)

Toinen tapa esittää asiakirjaa siinä olevien sanojen perusteella on jälkiäänitys Termitaajuus-käänteinen asiakirjataajuus (TF-IDF). TF-IDF-lähestymistapa luo myös vektorin, joka edustaa dokumenttia siinä olevien sanojen perusteella, mutta toisin kuin Bag-of-words, nämä sanat ovat painotettu muulla kuin vain niiden taajuudella. TF-IDF ottaa huomioon asiakirjoissa olevien sanojen tärkeyden ja yrittää kvantifioida, kuinka relevantti sana on asiakirjan aiheen kannalta. Toisin sanoen TF-IDF analysoi relevanssia taajuuden sijaan ja piirrevektorin sanamäärät korvataan TF-IDF-pisteillä, jotka lasketaan koko tietojoukon perusteella.

TF-IDF-lähestymistapa toimii laskemalla ensin termitaajuus eli kuinka monta kertaa yksilölliset termit esiintyvät tietyssä asiakirjassa. TF-IDF huolehtii kuitenkin myös siitä, että äärimmäisen yleiset sanat, kuten "the", "or" ja "and", ovat hyvin yleisiä, mutta välittävät vain vähän tietoa asiakirjan sisällöstä. Nämä sanat on poistettava, mihin TF-IDF:n "käänteinen asiakirjataajuus" viittaa. Tämä johtuu siitä, että mitä useammissa asiakirjoissa tietty sana esiintyy, sitä vähemmän hyödyllinen sana on sen erottamisessa muista asiakirjojen luettelossa olevista asiakirjoista. Kaava, jota TF-IDF käyttää sanan tärkeyden laskemiseen, on suunniteltu säilyttämään sanat, jotka ovat yleisimpiä ja semanttisesti rikkaimpia.

TF-IDF-lähestymistavalla luodut piirrevektorit sisältävät normalisoituja arvoja, jotka summautuvat yhteen ja antavat jokaiselle sanalle painotetun arvon, joka lasketaan TF-IDF-kaavalla.

Sana-upotukset

Sanan upotukset ovat tekstin esittämismenetelmiä, joilla varmistetaan, että samankaltaisilla sanoilla on samanlaiset numeeriset esitykset.

Sanan upotukset toimivat "vektorisoimalla" sanoja, mikä tarkoittaa, että ne edustavat sanoja reaaliarvoisina vektoreina vektoriavaruudessa. Vektorit ovat ruudukossa tai matriisissa, ja niillä on suunta ja pituus (tai suuruus). Kun sanoja esitetään vektoreina, sanat muunnetaan reaaliarvoista koostuviksi vektoreiksi. Jokainen sana kartoitetaan yhteen vektoriin, ja merkitykseltään samankaltaisilla sanoilla on sama suunta ja suuruus. Tämän tyyppinen koodaus mahdollistaa koneoppimisalgoritmin oppia monimutkaisia ​​suhteita sanojen välillä.

Eri sanoja edustavat upotukset luodaan sen mukaan, miten kyseisiä sanoja käytetään. Koska sanoilla, joita käytetään samalla tavalla, on samanlaiset vektorit, sanan upotusten luontiprosessi kääntää automaattisesti osan sanojen merkityksestä. Sanapussilähestymistapa sitä vastoin luo hauraita esityksiä, joissa eri sanoilla on erilaisia ​​esityksiä, vaikka niitä käytettäisiin hyvin samanlaisissa yhteyksissä.

Seurauksena on, että sanan upotukset vangitsevat paremmin lauseen sanojen kontekstin.

Sanojen upotusten luomiseen käytetään erilaisia ​​​​algoritmeja ja lähestymistapoja. Jotkut yleisimmistä ja luotettavimmista sanan upotusmenetelmistä ovat: upotus tasot, word2vec ja GloVe.

Tasojen upottaminen

Yksi mahdollinen tapa käyttää sanan upotuksia koneoppimis-/syväoppimisjärjestelmän rinnalla on käytä upotuskerrosta. Upotuskerrokset ovat syviä oppimiskerroksia, jotka muuntavat sanat upotuksiksi, jotka sitten syötetään muuhun syväoppimisjärjestelmään. Sanat upotukset opitaan, kun verkko harjoittelee tiettyä tekstipohjaista tehtävää.

Sanojen upottamisessa samankaltaisilla sanoilla on samanlaiset esitykset ja ne ovat lähempänä toisiaan kuin erilaisia ​​sanoja.

Jotta upotustasoja voidaan käyttää, teksti on esikäsiteltävä ensin. Asiakirjan tekstin tulee olla one-hot-koodattua ja vektorin koko on määritettävä etukäteen. Yksi kuuma teksti muunnetaan sitten sanavektoreiksi ja vektorit siirretään koneoppimismalliin.

Word2Vec

Word2Vec on toinen yleinen tapa upottaa sanoja. Word2Vec käyttää tilastollisia menetelmiä sanojen muuntamiseen upotuksiksi ja se on optimoitu käytettäväksi hermoverkkopohjaisten mallien kanssa. Word2Vec on Googlen tutkijoiden kehittämä, ja se on yksi yleisimmin käytetyistä upotusmenetelmistä, koska se tuottaa luotettavasti hyödyllisiä, monipuolisia upotuksia. Word2Vec-esitykset ovat hyödyllisiä kielen semanttisten ja syntaktisten yhteisten piirteiden tunnistamisessa. Tämä tarkoittaa, että Word2Vec-esitykset vangitsevat samankaltaisten käsitteiden välisiä suhteita ja pystyvät erottamaan, että "kuningas" ja "kuningatar" ovat kuninkaallisia ja että "kuningas" tarkoittaa "miehisyyttä", kun taas Queen tarkoittaa "naisuutta".

Käsine

GloVE tai Global Vector Word Representation, perustuu Word2Vec:n käyttämiin upotusalgoritmeihin. GloVe-upotusmenetelmät yhdistävät sekä Word2Vec- että matriisifaktorointitekniikoiden, kuten piilevän semanttisen analyysin, näkökohdat. Word2Vec:n etuna on, että se voi kaapata kontekstin, mutta kompromissina se kaappaa huonosti globaaleja tekstitilastoja. Toisaalta perinteiset vektoriesitykset ovat hyviä määrittämään globaaleja tekstitilastoja, mutta ne eivät ole hyödyllisiä sanojen ja lauseiden kontekstin määrittämisessä. GloVE hyödyntää molempien parhaita lähestymistapoja ja luo sanakontekstin globaalien tekstitilastojen perusteella.

Bloggaaja ja ohjelmoija erikoisaloilla Koneen oppiminen ja Deep Learning aiheita. Daniel toivoo voivansa auttaa muita käyttämään tekoälyn voimaa yhteiskunnalliseen hyvään.