Grunnleggende AI

Hvordan fungerer tekstklassifisering?

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

Tekstklassifisering er prosessen med å analysere tekstsekvenser og tildele dem en etikett, og plassere dem i en gruppe basert på innholdet. Tekstklassifisering ligger til grunn for nesten alle AI- eller maskinlæringsoppgaver som involverer naturlig språkbehandling (NLP). Med tekstklassifisering kan et dataprogram utføre en rekke forskjellige oppgaver, som å gjenkjenne spam, analysere holdninger og fungere som en chatbot. Hvordan fungerer tekstklassifisering egentlig? Hva er de forskjellige metodene for å utføre tekstklassifisering? Vi skal utforske svarene på disse spørsmålene nedenfor.

Definering av Tekstklassifisering

Det er viktig å ta litt tid og sikre at vi forstår hva tekstklassifisering er, generelt, før vi dykker ned i de forskjellige metodene for å gjøre tekstklassifisering. Tekstklassifisering er en av disse termene som brukes til mange forskjellige oppgaver og algoritmer, så det er nyttig å sikre at vi forstår det grunnleggende konseptet med tekstklassifisering før vi går videre for å utforske de forskjellige måtene det kan utføres på.

Alt som innebærer å lage forskjellige kategorier for tekst, og deretter merke teksteksemplene som disse kategoriene, kan regnes som tekstklassifisering. Så lenge et system utfører disse grunnleggende stegene, kan det regnes som en tekstklassifikator, uavhengig av den eksakte metoden som brukes til å klassifisere teksten og uavhengig av hvordan tekstklassifikatoren til slutt brukes. Å oppdage e-post-spam, organisere dokumenter etter emne eller tittel, og gjenkjenne holdningen til en anmeldelse av et produkt, er alle eksempler på tekstklassifisering fordi de utføres ved å ta tekst som innputt og utputt en klasse-etikett for den teksten.

Hvordan fungerer Tekstklassifisering?

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

De fleste tekstklassifiseringsmetodene kan plasseres i en av tre forskjellige kategorier: regelbaserte metoder eller maskinlæringsmetoder.

Regelbaserte Klassifiseringsmetoder

Regelbaserte tekstklassifiseringsmetoder fungerer gjennom bruken av eksplisitt konstruerte språklige regler. Systemet bruker reglene som er laget av ingeniøren til å bestemme hvilken klasse en gitt tekst skal tilhøre, og søker etter ledetråder i form av semantisk relevante tekstelementer. Hver regel har et mønster som teksten må matche for å bli plassert i den tilsvarende kategorien.

For å være mer konkrete, la oss si at du ønsker å designe en tekstklassifikator som kan skille mellom vanlige samtaleemner, som været, filmer eller mat. For å aktivere tekstklassifikatoren til å gjenkjenne diskusjon om været, kunne du fortelle den å se etter vær-relaterte ord i teksten som den får. Du ville ha en liste over nøkkelord, fraser og andre relevante mønster som kunne brukes til å skille emnet. For eksempel kunne du instruere klassifikatoren til å se etter ord som “vind”, “regn”, “sol”, “snø” eller “sky”. Du kunne deretter la klassifikatoren se gjennom innteksten og telle hvor mange ganger disse ordene forekommer i teksten, og hvis de forekommer oftere enn ord relatert til filmer, ville du klassifisere teksten som tilhørende vær-klassen.

Fordelen med regelbaserte systemer er at deres inn- og utdata er forutsigbare og tolkbare for mennesker, og de kan forbedres gjennom manuell inngripen av ingeniøren. Imidlertid er regelbaserte klassifiseringsmetoder også noe skjøre, og de har ofte vanskelig for å generalisere fordi de bare kan holde seg til de forhåndsdefinerte mønstrene som er programmert inn. For eksempel kunne ordet “sky” referere til fuktighet i luften eller det kunne referere til en digital sky hvor data lagres. Det er vanskelig for regelbaserte systemer å håndtere disse nyansene uten at ingeniørene må bruke mye tid på å manuelt forutse og justere for disse subtleties.

MaskinlæringsSystemer

Som nevnt ovenfor, har regelbaserte systemer begrensninger, fordi deres funksjoner og regler må være forhåndsprogrammert. I motsetning opererer maskinlæringsbaserte klassifiseringsystemer ved å bruke algoritmer som analyserer datasett for mønster som er assosiert med en bestemt klasse.

Maskinlæringsalgoritmer får forhåndsmerkede/forhåndsklassifiserte eksempler som analyseres for relevante funksjoner. Disse forhåndsmerkede eksemplene er treningsdataene.

Maskinlæringsklassifikatoren analyserer treningsdataene og lærer mønster som er assosiert med de forskjellige klassene. Deretter fjernes merkingen fra ukjente eksempler og de blir matet inn i klassifiseringsalgoritmen, som tildeler eksemplene en klasse-etikett. De tildelte etikettene sammenlignes deretter med de opprinnelige etikettene for å se hvor nøyaktig maskinlæringsklassifikatoren var, og hvor godt modellen lærte hva mønstrene var som forutså hvilke klasser.

Maskinlæringsalgoritmer opererer ved å analysere numeriske data. Dette betyr at for å bruke en maskinlæringsalgoritme på tekstdata, må teksten konverteres til et numerisk format. Det finnes forskjellige metoder for å kode tekstdata som numeriske data og å lage maskinlæringsmetoder rundt denne dataen. Vi skal dekke noen av de forskjellige måtene å representere tekstdata nedenfor.

Bag-of-Words

Bag-of-words er en av de mest vanlige tilnærmingene for å kode og representere tekstdata. Begrepet “bag-of-words” kommer fra det faktum at du essensielt tar alle ordene i dokumentene og putter dem alle i en “pose” uten å bemerke seg rekkefølgen eller grammatikken, og bare bemerker deg frekvensen av ordene i posen. Dette resulterer i en lang array, eller vektor, som inneholder en enkelt representasjon av alle ordene i inndokumentene. Så hvis det finnes 10000 unike ord totalt i inndokumentene, vil funksjonsvektorene være 10000 ord lange. Dette er hvordan størrelsen på ordposen/funksjonsvektoren beregnes.

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

Efter at funksjonsvektorens størrelse er bestemt, tildeles hver dokument i listen over alle dokumenter sin egen vektor fylt med tall som indikerer hvor mange ganger ordet i question forekommer i det aktuelle dokumentet. Dette betyr at hvis ordet “mat” forekommer åtte ganger innenfor ett tekstdokument, vil den tilsvarende funksjonsvektoren/funksjonsarrayen ha en åtte i den tilsvarende posisjonen.

For å si det på en annen måte, alle de unike ordene som forekommer i inndokumentene blir samlet i en pose, og deretter får hvert dokument sin egen vektor av samme størrelse, som deretter fylles med antall ganger de forskjellige ordene forekommer i dokumentet.

Tekstdatasett vil ofte inneholde et stort antall unike ord, men de fleste av dem brukes ikke svært ofte. Av denne grunn er antall ord som brukes til å lage vektoren vanligvis begrenset til en valgt verdi (N), og deretter vil funksjonsvektorens dimensjon være Nx1.

Term Frekvens-Inverse Dokument Frekvens (TF-IDF)

En annen måte å representere et dokument basert på ordene i det er kalt Term Frekvens-Inverse Dokument Frekvens (TF-IDF). En TF-IDF-tilnærming lager også en vektor som representerer dokumentet basert på ordene i det, men i motsetning til Bag-of-words, blir ordene i denne vektoren vektet med mer enn bare deres frekvens. TF-IDF tar hensyn til viktigheten av ordene i dokumentene, og forsøker å kvantifisere hvor relevant ordet er for emnet i dokumentet. Med andre ord, TF-IDF analyserer relevans i stedet for frekvens, og ordtellingene i en funksjonsvektor blir erstattet av en TF-IDF-poengsum som beregnes med hensyn til hele datasettet.

En TF-IDF-tilnærming opererer ved å først beregne termfrekvensen, antall ganger de unike termene forekommer innenfor et bestemt dokument. Imidlertid tar TF-IDF også hensyn til å begrense innflytelsen av svært vanlige ord som “den”, “eller” og “og”, da disse “stoppordene” er svært vanlige, men gir lite informasjon om innholdet i dokumentet. Disse ordene må diskonteres, og det er hva den “inverse-dokumentfrekvens”-delen av TF-IDF henviser til. Dette gjøres fordi jo flere dokumenter et bestemt ord forekommer i, jo mindre nyttig er ordet i å skille det fra andre dokumenter i listen over alle dokumenter. Formelen som TF-IDF bruker til å beregne viktigheten av et ord, er designet til å bevare ordene som er mest hyppige og mest semantisk rike.

Funksjonsvektorene som lages av TF-IDF-tilnærmingen inneholder normaliserte verdier som summerer til en, og tildeles hver ord en vektet verdi som beregnes av TF-IDF-formelen.

Ord-Embettinger

Ord-embettinger er metoder for å representere tekst som sikrer at ord med lignende betydninger har lignende numeriske representasjoner.

Ord-embettinger opererer ved å “vektorialisere” ord, det vil si at de representerer ord som reelle verdier i et vektorrom. Vektorene eksisterer i en grid eller matrix, og de har en retning og lengde (eller størrelse). Når ord representeres som vektorer, konverteres de til vektorer bestående av reelle verdier. Hvert ord blir kartlagt til en vektor, og ord som er lignende i betydning har lignende retning og størrelse. Denne typen koding gjør det mulig for en maskinlæringsalgoritme å lære kompliserte relasjoner mellom ord.

Embettingene som representerer forskjellige ord, blir laget med hensyn til hvordan ordene i question brukes. Fordi ord som brukes på lignende måter, vil ha lignende vektorer, oversetter prosessen med å lage ord-embettinger automatisk en del av betydningen ordene har. En Bag-of-words-tilnærming, på den andre siden, lager skjøre representasjoner hvor forskjellige ord vil ha ulike representasjoner, selv om de brukes i svært lignende sammenhenger.

Derfor er ord-embettinger bedre til å fange konteksten av ord innenfor en setning.

Det finnes forskjellige algoritmer og tilnærminger som brukes til å lage ord-embettinger. Noen av de mest vanlige og pålitelige ord-embettingsmetodene inkluderer: embettingslag, Word2Vec og GloVe.

Embettingslag

En mulig måte å bruke ord-embettinger sammen med et maskinlærings-/dyplæringsystem, er å bruke et embettingslag. Embettingslag er dyplæringslag som konverterer ord til embettinger, som deretter mates inn i resten av dyplæringsystemet. Ord-embettingene lærer seg mens nettverket trener for en bestemt tekstbasert oppgave.

I en ord-embettings-tilnærming, vil lignende ord ha lignende representasjoner og være nærmere hverandre enn ulike ord.

For å bruke embettingslag, må teksten forhåndsgjøres først. Teksten i dokumentet må være one-hot-kodet, og vektorstørrelsen må være spesifisert på forhånd. Den one-hot-kodete teksten konverteres deretter til ordvektorer, og vektorene mates inn i maskinlæringsmodellen.

Word2Vec

Word2Vec er en annen vanlig metode for å embette ord. Word2Vec bruker statistiske metoder til å konvertere ord til embettinger, og er optimalisert for bruk med neuralt nettverksbaserte modeller. Word2Vec ble utviklet av Google-forskere, og er en av de mest vanlige embettingsmetodene, da den pålitelig gir nyttige og rike embettinger. Word2Vec-representasjoner er nyttige for å identifisere semantiske og syntaktiske fellesskap i språk. Dette betyr at Word2Vec-representasjoner fanger relasjoner mellom lignende konsepter, og kan skille ut at fellesskapet mellom “konge” og “dronning” er kongelig, og at “konge” impliserer “mannlighet” mens “dronning” impliserer “kvinnelighet”.

GloVe

GloVe, eller Global Vektor for Ordrepresentasjon, bygger på embettingsalgoritmene som brukes av Word2Vec. GloVe-embettingsmetoder kombinerer aspekter av både Word2Vec og matrisefaktoriseringsteknikker som Latent Semantisk Analyse. Fordelen med Word2Vec er at det kan fange kontekst, men som et kompromiss, fanger det dårlig globale tekststatistikk. I motsetning er tradisjonelle vektorrepresentasjoner gode til å bestemme globale tekststatistikk, men de er ikke nyttige til å bestemme konteksten av ord og fraser. GloVe trekker fra det beste av begge tilnærmingene, og lager ord-kontekst basert på globale tekststatistikk.

Blogger og programmerer med spesialområder i Machine Learning og Deep Learning emner. Daniel håper å hjelpe andre med å bruke kraften av AI for sosialt godt.