Grunderna i AI
Hur fungerar textklassificering?
Textklassificering är processen att analysera textsekvenser och tilldela dem en etikett, placera dem i en grupp baserat på deras innehåll. Textklassificering ligger till grund för nästan alla AI- eller maskinlärningsuppgifter som involverar naturlig språkbehandling (NLP). Med textklassificering kan ett datorprogram utföra en mängd olika uppgifter som spåmigenkänning, sentimentanalys och chatbotfunktioner. Hur fungerar textklassificering exakt? Vilka är de olika metoderna för att utföra textklassificering? Vi kommer att utforska svaren på dessa frågor nedan.
Definiering av textklassificering
Det är viktigt att ta sig tid och säkerställa att vi förstår vad textklassificering är i allmänhet, innan vi dyker in i de olika metoderna för att utföra textklassificering. Textklassificering är en av de termer som appliceras på många olika uppgifter och algoritmer, så det är användbart att säkerställa att vi förstår den grundläggande konceptet av textklassificering innan vi fortsätter att utforska de olika sätten att utföra det på.
Allt som innebär att skapa olika kategorier för text och sedan märka olika textexempel som dessa kategorier, kan betraktas som textklassificering. Så länge ett system utför dessa grundläggande steg, kan det betraktas som en textklassificerare, oavsett den exakta metoden som används för att klassificera texten och oavsett hur textklassificeraren till slut appliceras. Att upptäcka e-postskräppost, organisera dokument efter ämne eller titel och känna igen sentimentet i en recension för en produkt är alla exempel på textklassificering, eftersom de alla utförs genom att ta text som indata och producera en klassetikett för den texten.
Hur fungerar textklassificering?

Foto: Quinn Dombrowski via Flickr, CC BY SA 2.0 , (https://www.flickr.com/photos/quinnanya/4714794045)
De flesta textklassificeringsmetoder kan placeras i en av tre olika kategorier: regelbaserade metoder eller maskinlärningsmetoder.
Regelbaserade klassificeringsmetoder
Regelbaserade textklassificeringsmetoder fungerar genom att använda explicita, konstruerade språkliga regler. Systemet använder reglerna som skapats av ingenjören för att bestämma vilken klass en given text ska tillhöra, genom att leta efter ledtrådar i form av semantiskt relevanta textelement. Varje regel har ett mönster som texten måste matcha för att placeras i den motsvarande kategorin.
För att vara mer konkret, låt oss säga att du ville designa en textklassificerare som kunde skilja på vanliga samtalsämnen, som vädret, filmer eller mat. För att aktivera din textklassificerare att känna igen diskussioner om vädret, kunde du tala om för den att leta efter väderrelaterade ord i textexemplen den matas med. Du skulle ha en lista med nyckelord, fraser och andra relevanta mönster som kunde användas för att skilja på ämnet. Till exempel kunde du instruera klassificeraren att leta efter ord som “vind”, “regn”, “sol”, “snö” eller “moln”. Du kunde sedan låta klassificeraren gå igenom indata-texten och räkna hur många gånger dessa ord förekommer i texten, och om de förekommer oftare än ord relaterade till filmer, skulle du klassificera texten som tillhörande vädret-klassen.
Fördelen med regelbaserade system är att deras indata och utdata är förutsägbara och tolkningsbara för människor, och de kan förbättras genom manuell intervention av ingenjören. Men regelbaserade klassificeringsmetoder är också ganska sköra, och de har ofta svårt att generalisera, eftersom de bara kan följa de fördefinierade mönster som programmerats in. Till exempel kan ordet “moln” referera till fukt i luften eller till en digital moln där data lagras. Det är svårt för regelbaserade system att hantera dessa nyanser utan att ingenjörerna tillbringar en hel del tid med att manuellt förutse och justera för dessa subtiliteter.
Maskinlärningssystem
Som nämnts ovan har regelbaserade system begränsningar, eftersom deras funktioner och regler måste förprogrammeras. I kontrast fungerar maskinlärningsbaserade klassificeringssystem genom att tillämpa algoritmer som analyserar datamängder för mönster som är associerade med en viss klass.
Maskinlärningsalgoritmer matas med förklassificerade exempel som analyseras för relevanta funktioner. Dessa förklassificerade exempel är träningsdata.
Maskinlärningsklassificeraren analyserar träningsdata och lär sig mönster som är associerade med de olika klasserna. Efter detta tas etiketterna bort från exemplen och de matas till klassificeringsalgoritmen, som tilldelar exemplen en etikett. De tilldelade etiketterna jämförs sedan med de ursprungliga etiketterna för att se hur exakt maskinlärningsklassificeraren var, och hur väl modellen lärde sig vilka mönster som förutsäger vilka klasser.
Maskinlärningsalgoritmer fungerar genom att analysera numeriska data. Detta innebär att för att använda en maskinlärningsalgoritm på textdata, måste texten konverteras till ett numeriskt format. Det finns olika metoder för att koda textdata som numeriska data och skapa maskinlärningsmetoder runt denna data. Vi kommer att täcka några av de olika sätten att representera textdata nedan.
Bag-of-words
Bag-of-words är en av de vanligaste metoderna för att koda och representera textdata. Termen “bag-of-words” kommer från det faktum att du i princip tar alla ord i dokumenten och lägger dem i en “påse” utan att bry sig om ordordning eller grammatik, och bara bryr sig om ordens frekvens i påsen. Detta resulterar i en lång array, eller vektor, som innehåller en enda representation av alla ord i indata-dokumenten. Så om det finns 10000 unika ord totalt i indata-dokumenten, kommer funktionvektorerna att vara 10000 ord långa. Detta är hur storleken på ord-påsen/funktionsvektorn beräknas.

Foto: gk_ via Machinelearning.co, (https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6)
Efter att funktionvektorns storlek har bestämts, tilldelas varje dokument i listan över totala dokument sin egen vektor fylld med siffror som indikerar hur många gånger ordet i fråga förekommer i det aktuella dokumentet. Detta innebär att om ordet “mat” förekommer åtta gånger inom ett textdokument, kommer den motsvarande funktionvektorn/funktionsarrayen att ha en åtta i den motsvarande positionen.
Eller, alla unika ord som förekommer i indata-dokumenten läggs i en påse, och sedan får varje dokument sin egen ordvektor av samma storlek, som sedan fylls i med antalet gånger som de olika orden förekommer i dokumentet.
Textdatamängder innehåller ofta en stor mängd unika ord, men de flesta av dem används inte särskilt ofta. Av denna anledning är antalet ord som används för att skapa ordvektorn vanligtvis begränsat till ett valt värde (N), och sedan kommer funktionvektorns dimension att vara Nx1.
Termfrekvens – Invers dokumentfrekvens (TF-IDF)
En annan metod för att representera ett dokument baserat på orden i det är kallad Termfrekvens – Invers dokumentfrekvens (TF-IDF). En TF-IDF-metod skapar också en vektor som representerar dokumentet baserat på orden i det, men till skillnad från Bag-of-words, är orden i TF-IDF viktade med mer än bara deras frekvens. TF-IDF tar hänsyn till ordenas betydelse i dokumenten, och försöker kvantifiera hur relevant varje ord är för dokumentets ämne. Med andra ord, TF-IDF analyserar relevans i stället för frekvens, och ordens räkningar i en funktionvektor ersätts av en TF-IDF-poäng som beräknas med hänsyn till hela datamängden.
En TF-IDF-metod fungerar genom att först beräkna termfrekvensen, antalet gånger som de unika termerna förekommer inom ett specifikt dokument. Men TF-IDF tar också hand om att begränsa inflytandet från extremt vanliga ord som “den”, “eller” och “och”, eftersom dessa “stop-ord” är mycket vanliga men förmedlar mycket lite information om dokumentets innehåll. Dessa ord måste diskonteras, vilket är vad den “inversa dokumentfrekvensen” i TF-IDF syftar till. Detta görs eftersom ju fler dokument som en specifik term förekommer i, desto mindre användbar är termen för att skilja det från andra dokument i listan över alla dokument. Formeln som TF-IDF använder för att beräkna ett ords betydelse är utformad för att bevara orden som är mest frekventa och semantiskt rika.
Funktionvektorerna som skapas av TF-IDF-metoden innehåller normaliserade värden som summerar till ett, och tilldelar varje ord ett viktat värde som beräknas av TF-IDF-formeln.
Ordinbäddningar
Ordinbäddningar är metoder för att representera text som säkerställer att ord med liknande betydelser har liknande numeriska representationer.
Ordinbäddningar fungerar genom att “vektorialisera” ord, vilket innebär att de representerar ord som reella värden i ett vektorrum. Vektorerna finns i en grid eller matris, och de har en riktning och längd (eller storlek). När orden representeras som vektorer, konverteras orden till vektorer bestående av reella värden. Varje ord mappas till en vektor, och ord som är liknande i betydelse har liknande riktning och storlek. Denna typ av kodning gör det möjligt för en maskinlärningsalgoritm att lära sig komplicerade relationer mellan ord.
De inbäddningar som representerar olika ord skapas med hänsyn till hur orden i fråga används. Eftersom ord som används på liknande sätt kommer att ha liknande vektorer, översätter processen att skapa ordinbäddningar automatiskt en del av ordenas betydelse. En “bag-of-words”-metod skapar sköra representationer där olika ord kommer att ha olika representationer, även om de används i mycket liknande sammanhang.
Resultatet är att ordinbäddningar är bättre på att fånga ordens sammanhang inom en mening.
Det finns olika algoritmer och metoder för att skapa ordinbäddningar. Några av de vanligaste och mest tillförlitliga metoderna för ordinbäddningar inkluderar: inbäddningslager, Word2Vec och GloVe.
Inbäddningslager
En möjlig metod för att använda ordinbäddningar tillsammans med ett maskinlärnings-/djuplärningssystem är att använda ett inbäddningslager. Inbäddningslager är djuplärningslager som konverterar ord till inbäddningar som sedan matas in i resten av djuplärningssystemet. Ordinbäddningarna lär sig när nätverket tränas för en specifik textbaserad uppgift.

I en ordinbäddningsmetod kommer liknande ord att ha liknande representationer och vara närmare varandra än olika ord.
För att använda inbäddningslager måste texten förbehandlas först. Texten i dokumentet måste kodas som one-hot, och vektorns storlek måste specificeras i förväg. Den one-hot-kodade texten konverteras sedan till ordvektorer och vektorerna matas in i maskinlärningsmodellen.
Word2Vec
Word2Vec är en annan vanlig metod för att bädda in ord. Word2Vec använder statistiska metoder för att konvertera ord till inbäddningar och det är optimerat för användning med neurala nätverksbaserade modeller. Word2Vec utvecklades av Google-forskare och det är en av de vanligaste metoderna för inbäddning, eftersom det tillförlitligt ger användbara och rika inbäddningar. Word2Vec-representationer är användbara för att identifiera semantiska och syntaktiska likheter i språk. Detta innebär att Word2Vec-representationer fångar relationer mellan liknande koncept, och kan urskilja att likheten mellan “kung” och “drottning” är kunglighet, och att “kung” implicerar “manlighet” medan “drottning” implicerar “kvinlighet”.
GloVe
GloVe, eller Global Vektor för Ordrepresentation, bygger på de inbäddningsalgoritmer som används av Word2Vec. GloVe-inbäddningsmetoder kombinerar aspekter av både Word2Vec och matrisfaktoriseringstekniker som Latent Semantisk Analys. Fördelen med Word2Vec är att det kan fånga sammanhang, men som en tradeoff fångar det dåligt globala textstatistik. Å andra sidan är traditionella vektorrepresentationer bra på att bestämma globala textstatistik, men de är inte användbara för att bestämma sammanhanget för ord och fraser. GloVe hämtar det bästa från båda approacherna och skapar ord-sammanhang baserat på globala textstatistik.












