Tekstanalyse for realister — eller hvordan gjøre tekst til tall

Vidar Moe
Vidar Moe
Jan 30 · 5 min read

Mye av informasjonen vi utveksler mellom oss, utveksler vi skriftlig. Med maskinlæring kan vi trekke ut meningen av denne informasjonen, og dermed la maskinen hjelpe oss med oppgaver som å

  • finne hvilken eller hvilke typer av informasjon teksten inneholder, og sortere dem
  • finne ut om teksten er positivt eller negativt ladet, også kalt sentimentanalyse
  • gi relevante svar hvis teksten inneholder spørsmål
  • rute spørsmål til manuell behandling hvis maskinen ikke kan svare på dem selv

For at datamaskinen skal kunne jobbe godt med tekst, trenger vi lage en representasjon av teksten som består av tall i stedet for bokstaver. Før vi kommer så langt, kan det være mye å hente på å strukturere teksten. Her er noen verktøy vi kan bruke for dette.

Normalisering av teksten

En bør starte med å fjerne innhold som ikke inneholder informasjonsverdi, for å gjøre oppgaven enklere for datamaskinen. Hvis en for eksempel jobber med e-poster, så er det fint å fjerne alt av e-postheadere og footere, hilsener og så videre.

Når dette er gjort, kan en vurdere å gjøre hele teksten om til små bokstaver. I visse tilfeller er store bokstaver nyttig, slik som identifisering av navn, eller som en feature for det aktuelle ordet, så dette må tilpasses den enkelte oppgaven en skal løse.

Punktum og komma, som typisk vil bli oppfattet som en del av et ord, er det normalt også nyttig å fjerne.

https://www.flickr.com/photos/117693452@N04/13052637804

Forenkling av teksten

Innenfor enkelte domener finnes det mange uttrykk for det samme. Et eksempel er synonym for penger, slik som midler, kontanter og finanser. Her kan en vurdere å hjelpe maskinen ved å erstatte alle synonymene med samme ord.

I tillegg til synonymer, har vi også bøyninger av ord. I mange tilfeller vil det for en datamaskin være likegyldig hvilken form ordet er i, spesielt ved begrensede datamengder. Et problem vi kan få er for eksempel de forskjellige formene av ordet telles hver for seg i statistikken, selv om de aktuelle setningene kanskje handler om det samme. Ved å finne grunnformen av ordene kan man basere statistikken på det totale antallet ganger et ord er brukt, fremfor antallet ganger man har brukt for eksempel “bank”, “banken”, “bankene” hver for seg.

En metode for å korrigere dette, er å benytte seg av en teknikk som kalles “stemming”. Stemming går ut på at man fjerner vanlige endingsformer fra alle ordene, slik at man står igjen med ‘stammen’ av ordene. Et eksempel er ordet “bruker” som vil bli til “bruk”. Problemet her, er at vi mister informasjon siden både verbet og substantivet vil bøyes til samme form. Stemming er en litt naiv måte å løse dette problemet på, og kan i noen tilfeller gjøre andre deler av tolkningen vanskeligere.

Lemmatisering er en alternativ fremgangsmåte til stemming. Ved lemmatisering går man ett skritt lenger og forsøker å finne ordbokens grunnform for ordet. Dette kan gjøres på norsk ved at man baserer seg på en fullforms-ordbok. Denne har alle bøyninger av ordene, og de kan ledes tilbake til ordets grunnform. Lemmatisering tar også hensyn til setningsoppbygningen, og samme eksempel ville her da gitt oss for substantivet “bruker” den samme grunnformen “bruker”. For verbet “bruker” ville man fått “bruke”.

https://www.indienglish.com/simple-present-tense-english-grammar/

Setningsoppbygning

Det finnes i dag gode verktøy for å gjøre det lettere å tolke en tekst. ‘Part of Speech’ eller ‘ordklasser’ som er det norske begrepet er et grep som kan brukes. Ved å kjøre teksten gjennom et verktøy vil man kunne få den tilbake med markering for ordklasser, for eksempel substantiv, verb osv. Denne teknologien er et viktig element i for eksempel stavekontrollen man har i tekstbehandlere. Den hjelper oss med å få forståelse for setningsoppbygning, og dermed også betydningen av ord i en kontekst. Et eksempel her kan være setningen “Jeg var på en reise til Oslo for å se det nye Munch museet reise seg.” Her er ordet reise brukt både som verb og substantiv.

Disse verktøyene er lett tilgjengelig for engelsk språk i blant annet “Natural Language Toolkit”, NLTK. Ulempen er at disse verktøyene ikke nødvendigvis gir et like godt resultat på norsk språk og grammatikk.

Tekstlaboratoriet ved Institutt for lingvistiske og nordiske studier ved Universitetet i Oslo har i samarbeid med andre bidragsytere gjennomført flere prosjekter som har gitt oss blant annet “Oslo-Bergen-taggeren” . Dette verktøyet kan hjelpe oss med å tolke dokumenter på norsk språk. Tekstlaboratoriet har også andre ressurser som kan være nyttig, blant annet frekvensordlister som kan si noe om hvor ofte et ord forekommer. Nasjonalbiblioteket har samlet inn og tilbyr en språkbank hvor disse ordbøkene i forskjellige former er oversiktlig og lett tilgjengelige.

https://machinelearnings.co/text-classification-using-neural-networks-f5cd7b8765c6

Fra tekst til tall

Når vi er fornøyd med strukturering og tagging av teksten, er det på tide å gjøre om teksten til tall, slik at datamaskinen kan jobbe med den. Her er det også flere muligheter. En av de vanligste metodene, er å bruke en teknikk som kalles Bag Of Words. Bag of words gir en numerisk representasjon av hvert enkelt dokument i tekstsamlingen din. Herfra er veien kort til for eksempel sentimentanalyse, eller kategorisering av like dokumenter.

Vi har gjort en del NLP (Natural Language Processing) jobbing i SpareBank 1. Det er gøy, og også her, som i de fleste andre maskinlæringsproblemer, ligger mesteparten av jobben i strukturering, vasking og behandling av dataene en skal bruke, slik at de blir lettest mulig for datamaskinen å jobbe med.

Thanks to Anders Gjendem and Jan Erik Modal

Vidar Moe

Written by

Vidar Moe

Loves creating great, simple software solutions using continous learning and respect for people.

SpareBank 1 Utvikling

Vi jobber med digitale løsninger hos SpareBank 1. Vi liker å skrive om det vi brenner for

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade