Grundlæggende AI
Hvordan fungerer tekstklassificering?
Tekstklassificering er processen med at analysere tekstsekvenser og tildele dem en mærke, placere dem i en gruppe baseret på deres indhold. Tekstklassificering ligger til grund for næsten alle AI- eller maskinlæringsopgaver, der involverer Natural Language Processing (NLP). Med tekstklassificering kan et computerprogram udføre en lang række forskellige opgaver som f.eks. spam-genkendelse, sentimentanalyse og chatbot-funktioner. Hvordan fungerer tekstklassificering nøjagtigt? Hvad er de forskellige metoder til at udføre tekstklassificering? Vi skal undersøge svarene på disse spørgsmål nedenfor.
Definering af Tekstklassificering
Det er vigtigt at tage lidt tid og sikre, at vi forstår, hvad tekstklassificering er, generelt, før vi dykker ned i de forskellige metoder til at udføre tekstklassificering. Tekstklassificering er en af disse termer, der anvendes til mange forskellige opgaver og algoritmer, så det er nyttigt at sikre, at vi forstår det grundlæggende begreb om tekstklassificering, før vi går videre til at udforske de forskellige måder, det kan udføres på.
Alt, der indebærer at oprette forskellige kategorier for tekst, og derefter mærke forskellige teksteksempler som disse kategorier, kan betragtes som tekstklassificering. Så længe et system udfører disse grundlæggende trin, kan det betragtes som en tekstklassifikator, uanset den eksakte metode, der anvendes til at klassificere teksten, og uanset, hvordan tekstklassifikatoren til sidst anvendes. At opdage e-mail-spam, organisere dokumenter efter emne eller titel, og genkende sentimentet i en anmeldelse af et produkt er alle eksempler på tekstklassificering, fordi de udføres ved at tage tekst som input og outputte en klassemærke for den pågældende tekst.
Hvordan fungerer Tekstklassificering?

Foto: Quinn Dombrowski via Flickr, CC BY SA 2.0 , (https://www.flickr.com/photos/quinnanya/4714794045)
De fleste tekstklassificeringsmetoder kan placeres i en af tre forskellige kategorier: regelbaserede metoder eller maskinlæringsmetoder.
Regelbaserede Klassificeringsmetoder
Regelbaserede tekstklassificeringsmetoder fungerer gennem brugen af eksplicit konstruerede lingvistiske regler. Systemet bruger reglerne, der er oprettet af ingeniøren, til at bestemme, hvilken klasse en given tekst skal tilhøre, ved at lede efter ledetråde i form af semantisk relevante tekstelementer. Hver regel har en mønster, som teksten skal matche for at blive placeret i den pågældende kategori.
For at være mere konkrete, lad os sige, at du ville designe en tekstklassifikator, der kan skelne mellem almindelige emner for samtale, som vejret, film eller mad. For at aktivere din tekstklassifikator til at genkende diskussion om vejret, ville du måske fortælle den at lede efter vejrelaterede ord i teksten, den får som input. Du ville have en liste over nøgleord, fraser og andre relevante mønstre, der kunne bruges til at skelne emnet. F.eks. ville du måske fortælle klassifikatoren at lede efter ord som “vind”, “regn”, “sol”, “sne” eller “sky”. Du kunne derefter have klassifikatoren til at gennemse inputteksten og tælle, hvor mange gange disse ord optræder i teksten, og hvis de optræder hyppigere end ord relateret til film, ville du klassificere teksten som tilhørende vejret-klassen.
Fordelen ved regelbaserede systemer er, at deres input og output er forudsigelige og kan fortolkes af mennesker, og de kan forbedres gennem manuel indgriben af ingeniøren. however, regelbaserede klassificeringsmetoder er også noget skrøbelige, og de har ofte svært ved at generalisere, fordi de kun kan følge de foruddefinerede mønstre, der er programmeret ind. F.eks. kunne ordet “sky” referere til fugt i himlen eller til en digital sky, hvor data gemmes. Det er svært for regelbaserede systemer at håndtere disse nuancer uden, at ingeniøren bruger en del tid på at manuelt forudse og justere for disse subtiliteter.
MaskinlæringsSystemer
Som nævnt ovenfor har regelbaserede systemer begrænsninger, da deres funktioner og regler skal være forprogrammeret. I modsætning hertil fungerer maskinlæringsbaserede klassificeringssystemer ved at anvende algoritmer, der analyserer datasets for mønstre, der er forbundet med en bestemt klasse.
Maskinlæringsalgoritmerne får forudmærkede/forudklassificerede eksempler, der analyseres for relevante funktioner.
Maskinlæringsklassifikatoren analyserer træningsdataene og lærer mønstre, der er forbundet med de forskellige klasser. Derefter fjernes mærkerne fra de usete eksempler og giver dem til klassificeringsalgoritmen, der tildeler eksemplerne en mærke. De tildelte mærker sammenlignes derefter med de oprindelige mærker for at se, hvor nøjagtig maskinlæringsklassifikatoren var, og hvor godt modellen lærte, hvilke mønstre der forudsagde hvilke klasser.
Maskinlæringsalgoritmerne fungerer ved at analysere numeriske data. Dette betyder, at for at bruge en maskinlæringsalgoritme på tekstdata, skal teksten konverteres til en numerisk format. Der er forskellige metoder til at kodificere tekstdata som numeriske data og oprette maskinlæringsmetoder omkring denne data. Vi skal dække nogle af de forskellige måder at repræsentere tekstdata på nedenfor.
Bag-of-Words
Bag-of-words er en af de mest almindeligt anvendte tilgange til at kodificere og repræsentere tekstdata. Begrebet “bag-of-words” kommer fra, at du grundlæggende tager alle ordene i dokumenterne og putter dem alle i en “sæk” uden at tage hensyn til ordens rækkefølge eller grammatik, men kun til ordens hyppighed i sækken. Dette resulterer i en lang array eller vektor, der indeholder en enkelt repræsentation af alle ordene i inputdokumenterne. Så hvis der er 10000 unikke ord i alt i inputdokumenterne, vil funktionvektorerne være 10000 ord lange. Dette er, hvordan størrelsen af ord-sækken/funktionvektoren beregnes.

Foto: gk_ via Machinelearning.co, (https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)
Efter at funktionvektorens størrelse er blevet bestemt, tildeles hver dokument i listen over samlede dokumenter sin egen vektor fyldt med numre, der angiver, hvor mange gange ordet i question optræder i det aktuelle dokument. Dette betyder, at hvis ordet “mad” optræder otte gange inden for et tekstdokument, vil den pågældende funktionvektor/funktionsarray have en otte i den pågældende position.
Anden måde at sige det på er, at alle unikke ord, der optræder i inputdokumenterne, alle stablede i en sæk, og derefter får hvert dokument sin egen ordvektor af samme størrelse, der derefter fyldes med antallet af gange, de forskellige ord optræder i dokumentet.
Tekstdatasets vil ofte indeholde et stort antal unikke ord, men de fleste af dem bruges ikke meget. Derfor er antallet af ord, der bruges til at oprette ordvektoren, typisk begrænset til en valgt værdi (N), og derefter vil funktionvektorens dimension være Nx1.
Termhyppighed-Invers Dokumenthyppighed (TF-IDF)
En anden måde at repræsentere et dokument baseret på ordene i det på er kaldet Termhyppighed-Invers Dokumenthyppighed (TF-IDF). En TF-IDF-tilgang opretter også en vektor, der repræsenterer dokumentet baseret på ordene i det, men til forskel fra Bag-of-words vægtes ordene i TF-IDF med mere end kun deres hyppighed. TF-IDF tager hensyn til ordens vigtighed i dokumenterne og forsøger at kvantificere, hvor relevant det pågældende ord er for emnet i dokumentet. Med andre ord analyserer TF-IDF relevans i stedet for hyppighed, og ordtællingerne i en funktionvektor erstattes af en TF-IDF-score, der beregnes i forhold til hele datasettet.
En TF-IDF-tilgang fungerer ved at beregne termhyppigheden, antallet af gange, de unikke termer optræder inden for et bestemt dokument. TF-IDF tager dog også sigte på at begrænse indflydelsen af meget almindelige ord som “den”, “eller” og “og”, da disse “stopord” er meget almindelige, men giver meget lidt information om dokumentets indhold. Disse ord skal være diskonterede, hvilket er, hvad den “inverse-dokumenthyppighed”-del af TF-IDF henviser til. Dette gøres, fordi jo flere dokumenter, et bestemt ord optræder i, jo mindre nyttigt er ordet til at skelne det fra de andre dokumenter i listen over alle dokumenter. Formlen, som TF-IDF bruger til at beregne ordets vigtighed, er designet til at bevare ordene, der er mest hyppige og mest semantisk rige.
Funktionvektorerne, der oprettes af TF-IDF-tilgangen, indeholder normaliserede værdier, der summer til én, og tildeler hvert ord en vægtet værdi, som beregnes af TF-IDF-formlen.
Ordindlejninger
Ordindlejninger er metoder til at repræsentere tekst, så ord med lignende betydninger har lignende numeriske repræsentationer.
Ordindlejninger fungerer ved at “vektorialisere” ord, dvs. de repræsenterer ord som reelle værdier i et vektorrum. Vektorerne findes i en grid eller matrix og har en retning og længde (eller størrelse). Når ord repræsenteres som vektorer, konverteres ordene til vektorer bestående af reelle værdier. Hvert ord er kortlagt til en vektor, og ord, der er lignende i betydning, har lignende retning og størrelse. Denne type kodning gør det muligt for en maskinlæringsalgoritme at lære komplekse relationer mellem ord.
Indlejningerne, der repræsenterer forskellige ord, oprettes med hensyn til, hvordan ordene i question bruges. Fordi ord, der bruges på lignende måder, vil have lignende vektorer, oversætter processen med at oprette ordindlejninger automatisk en del af ordens betydning.
Derfor er ordindlejninger bedre til at fange ordens kontekst i en sætning.
Der er forskellige algoritmer og tilgange til at oprette ordindlejninger. Nogle af de mest almindelige og pålidelige ordindlejningsmetoder inkluderer: indlejningslag, Word2Vec og GloVe.
Indlejningslag
En mulig måde at bruge ordindlejninger sammen med et maskinlærings-/dybtlæringsystem er at bruge et indlejningslag. Indlejningslag er dybtlæringslag, der konverterer ord til indlejninger, der derefter fødes ind i resten af dybtlæringsystemet. Ordindlejningerne lærer, mens nettet trænes til en bestemt tekstbaseret opgave.

I en ordindlejnings tilgang vil lignende ord have lignende repræsentationer og være tættere på hinanden end på ulignende ord.
For at bruge indlejningslag skal teksten først forarbejdes. Teksten i dokumentet skal være one-hot-kodet, og vektorsize skal specificeres på forhånd. One-hot-teksten konverteres derefter til ordvektorer, og vektorerne fødes ind i maskinlæringsmodellen.
Word2Vec
Word2Vec er en anden almindelig metode til at indlejre ord. Word2Vec bruger statistiske metoder til at konvertere ord til indlejninger, og det er optimeret til brug med neuralt netværksbaserede modeller. Word2Vec blev udviklet af Google-forskere, og det er en af de mest almindeligt anvendte indlejningsmetoder, da det pålideligt giver nyttige og rige indlejninger. Word2Vec-repræsentationer er nyttige til at identificere semantiske og syntaktiske fællesskaber i sprog. Dette betyder, at Word2Vec-repræsentationer fanger relationer mellem lignende begreber, og kan skelne, at fællesskabet mellem “konge” og “dronning” er kongelighed, og at “konge” antyder “mandighed”, mens dronning antyder “kvinde-lighed”.
GloVe
GloVe, eller Global Vektor for Ordrepræsentation, bygger videre på indlejningsalgoritmerne, der bruges af Word2Vec. GloVe-indlejningsmetoder kombinerer aspekter af både Word2Vec og matrixfaktoriseringsteknikker som Latent Semantisk Analyse. Fordelen ved Word2Vec er, at det kan fange kontekst, men som et kompromis fanger det dårligt globale tekststatistik. Omvendt er traditionelle vektorrepræsentationer gode til at bestemme globale tekststatistik, men de er ikke nyttige til at bestemme konteksten af ord og fraser. GloVe bygger videre på det bedste fra begge tilgange og opretter ord-kontekst baseret på globale tekststatistik.












