Begrebet NLP står for Natural Language Processing og dækker over metoder til processering og analyse af naturligt opstået sprog og tekst. Eksempler på dette kunne være e-mails, kundeanmeldelser osv. Når vi som mennesker læser denne type tekster, foretager vi en fortolkning og en analyse af teksternes indhold, hvilket ikke er noget problem, når det drejer sig om mindre mængder af tekst. Mængden af naturlig opstået tekst er dog steget markant over den seneste årrække, og vi har derfor brug for smarte løsninger til at processere og analysere de stigende mængder. Det er her, at bl.a. NLP kommer ind i billedet, men for at forstå det, så lad os først snakke lidt om data…
Hvad tænker du når du hører ordet ”Data”?
Den klassiske opfattelse af data er tabeller med rækker og kolonner, som mange kender det fra eksempelvis Excel, og det er ofte denne form, vi tænker på, når nogen begynder at tale om data. Denne type data kaldes for struktureret data, og den er (i grove træk) klar til analyse og visualisering.
Eksempler på struktureret data er:
-
Salgstransaktioner
-
Lagerbeholdning
-
Kundedata
-
Spørgeskemadata
-
...
Struktureret data er struktureret, fordi den indsamles på en struktureret og systematisk måde, eksempelvis gemmes salgsdata i et præspecificeret format, hver gang en salgstransaktion foretages, og hvis man gennemfører en spørgeskemaundersøgelse, har man på forhånd bestemt, hvordan de enkelte svar skal fremgå i en tabel. Data af denne type følger det format, som Machine Learning algoritmer og statistiske metoder kan analysere, men ikke alle data indsamles på denne måde.
Et hav af data som vokser
Inden for de seneste år er mængden af data på globalt plan steget eksponentiel, og denne udvikling forventes at fortsætte. Ifølge IDC vil der i 2025 på verdensplan blive genereret 163 zettabyte data årligt (1 zettabyte svarer til 1 billion gigabytes). Denne udvikling sker i takt med, at den teknologiske udvikling muliggør lagering af større og større mængder af data, men det skyldes ikke kun en stigning i mængden af struktureret data. Den største del af denne stigning kan derimod tilskrives såkaldt ustruktureret data. Ustruktureret data er data, som ikke følger et klassisk struktureret dataformat, og som derfor ikke kan analyseres direkte med gængse analysemetoder.
Eksempler på ustruktureret data:
-
E-mails
-
Billeder
-
Videoer
-
Facebook-samtaler
-
Lydfiler
-
...
Store dele af mange menneskers liv foregår helt eller delvist online, og vi genererer hver især store mængder data, når vi eksempelvis færdes online. Ustruktureret data genereres f.eks., når vi skriver et tweet på Twitter, reagerer på et opslag på Facebook, skriver en e-mail til en virksomhed osv., og denne type interaktion resulterer i det, vi kan kalde fritekst eller naturlig tekst.
Tekst er også data!
Fritekst er en ustruktureret datatype som opstår, hver gang nogen skriver noget. Denne type af data kan indeholde store mængder af information, og denne information kan have kæmpe værdi i de rigtige sammenhænge. Sagen er bare den, at de relevante informationer skal trækkes ud af teksten, og det er der ikke nødvendigvis en simpel løsning til.
Tidligere læste man teksterne manuelt, og herigennem fortolkede og kondenserede man informationen i teksterne. Det er selvfølgeligt stadig en mulighed, problemet opstår dog, når mængden af tekst stiger i den grad, vi har set over det seneste årti, og som allerede nævnt vil mængden af data ikke blive mindre. Der er således brug for smarte løsninger til at trække information ud af naturlig opstået tekst. Området, der beskæftiger sig med analyse af naturlig opstået tekst, Natural Language Processing (NLP), er ikke et nyt felt, men med udviklingen i computerkraft og mængden af ustruktureret tekstdata har dette felt i de senest år nydt en stigende interesse. Der findes mange forskellige teknikker, som varierer i formål og kompleksitet, men fælles for alle teknikker er, at teksterne skal processeres, før egentlig analyse kan foregå. Gennem forskellige teknikker kan et stykke tekst transformeres fra et stykke ustruktureret tekst til struktureret data.
Fra ustruktureret til struktureret med Natural Language Processing
For at forstå hvilke transformationer et stykke tekst skal gennemgå før en egentlig analyse kan indledes, giver det mening at se på et eksempel. Det følgende eksempel tager udgangspunkt i brugeranmeldelser af restaurationer i DK.
Et eksempel på en anmeldelse lyder som følger:
”Vi valgte en 4 retters sæsonmenu og den viste sig ikke alene at være ganske godt afstemt i smagskombinationer men også i mængder så man fik det man havde behov for uden at blive fuldstændigt overmæt :-) Maden smagte fantastisk og de tilhørende anbefalede vine var flot afstemt. Betjeningen var overordentligt høflig og meget opmærksom. Fremragende oplevelse i fine omgivelser!! Bestemt et besøg værd og vi kommer helt sikkert igen.” (ID: AN3)
Ser vi på flere anmeldelse vil en tabel kunne se sådan ud:
ANMELDELSE | ID |
---|---|
Dejligt sted – nemt at tale med hinanden. Meget søde og … Vi kommer meget gerne tilbage |
AN1 |
Vi valgte en 4 retters sæsonmenu og den viste sig ikke alene … Bestemt et besøg værd og vi kommer helt sikkert igen |
AN2 |
Vi valgte deres sæsonmenu selvom menuen var en færdig … tid til at levere god service |
AN3 |
Fin betjening og fair priser men maden var ikke særlig indisk … Nan var en skuffelse. |
AN4 |
Når man ikke er den billigste i byen må man gerne være god. … bede om det tilbehør vi havde bestilt. |
AN5 |
Vi kom 2 personer på en onsdag. Der var relativt få gæster … der var en god harmoni i tingene. |
AN6 |
... | ... |
En sådan anmeldelse kan ikke bruges i nogen gængs model, og hvert stykke tekst skal derfor gennemgå en række transformationer før der kan laves analyse. I dette eksempel (med udgangspunkt i den først nævnte anmeldelse) benyttes følgende transformationer:
-
Tokenization (separering af ord)
-
Fjernelse af mellemrum
-
Fjernelse af tegn
-
Omdannelse to små bogstaver
-
Fjernelse af stop-ord
(OBS: Det skal nævnes at valget af specifikke transformationer afhænger af tekst og formål, og man skal holde sig for øje at transformationerne kan have stor effekt på resultaterne af analysen i sidste ende.)
Tokenization medfører at teksten opsplittes i ord og tegn (her er mellemrum også fjernet):
“Vi”, “valgte”, “en”, “4”, “retters”, “sæsonmenu”, “og”, “den”, “viste”, “sig”, “ikke”, “alene”, “at”, “være”, “ganske”, “godt”, “afstemt”, “i”, “smagskombinationer”, “men”, “også”, “i”, “mængder”, “så”, “man”, “fik”, “det”, “man”, “havde”, “behov”, “for”, “uden”, “at”, “blive”, “fuldstændigt”, “overmæt”, “:”, “-”, “)”, “Maden”, “smagte”, “fantastisk”, “og”, “de”, “tilhørende”, “anbefalede”, “vine”, “var”, “flot”, “afstemt.”, “Betjeningen”, “var”, “overordentligt”, “høflig”, “og”, “meget”, “opmærksom.”, “Fremragende”, “oplevelse”, “i”, “fine”, “omgivelser”, “!”, “!”, “Bestemt”, “et”, “besøg”, “værd”, “og”, “vi”, “kommer”, “helt”, “sikkert”, “igen”, “.”
Herefter fjernes tegn og store bogstaver laves til små:
“vi”, “valgte”, “en”, “4”, “retters”, “sæsonmenu”, “og”, “den”, “viste”, “sig”, “ikke”, “alene”, “at”, “være”, “ganske”, “godt”, “afstemt”, “i”, “smagskombinationer”, “men”, “også”, “i”, “mængder”, “så”, “man”, “fik”, “det”, “man”, “havde”, “behov”, “for”, “uden”, “at”, “blive”, “fuldstændigt”, “overmæt”, “maden”, “smagte”, “fantastisk”, “og”, “de”, “tilhørende”, “anbefalede”, “vine”, “var”, “flot”, “afstemt”, “betjeningen”, “var”, “overordentligt”, “høflig”, “og”, “meget”, “opmærksom”, “fremragende”, “oplevelse”, “i”, “fine”, “omgivelser”, “bestemt”, “et”, “besøg”, “værd”, “og”, “vi”, “kommer”, “helt”, “sikkert”, “igen”
Til sidst fjernes alle såkaldte stopord. Det er fyldord som eksempelvis ”og” og ”at”, som i sig selv ikke fortæller noget om det der står i teksten.
“valgte”, “4”, “retters”, “sæsonmenu”, “viste”, “alene”, “ganske”, “afstemt”, “smagskombinationer”, “mængder”, “behov”, “uden”, “fuldstændigt”, “overmæt”, “maden”, “smagte”, “fantastisk”, “tilhørende”, “anbefalede”, “vine”, “flot”, “afstemt”, “betjeningen”, “overordentligt”, “høflig”, “opmærksom”, “fremragende”, “oplevelse”, “fine”, “omgivelser”, “bestemt”, “besøg”, “værd”, “sikkert”, “igen”
Dette gøres for alle tekster i et korpus (=en samling af tekster) og herefter kan der eksempelvis foretages en optælling af de enkelte ord for hver tekst. Dette ville resultere i en tabel som denne, hvor hver kolonne er et ord fra korpus, og tabellen er fyldt med antallet af gange det pågældende ord er nævnt i en given tekst:
ID | afstemt | bede | bestille | betjening | fantastisk | flot | ... | tilhørende | uden | valgte |
---|---|---|---|---|---|---|---|---|---|---|
AN1 | 0 | 0 | 0 | 0 | 1 | 1 | ... | 0 | 0 | 0 |
AN2 | 2 | 0 | 0 | 0 | 1 | 1 | ... | 1 | 1 | 1 |
AN3 | 1 | 0 | 0 | 1 | 0 | 0 | ... | 1 | 1 | 1 |
AN4 | 0 | 0 | 0 | 0 | 0 | 0 | ... | 0 | 0 | 0 |
AN5 | 0 | 1 | 1 | 0 | 0 | 0 | ... | 0 | 0 | 0 |
AN6 | 0 | 1 | 1 | 0 | 0 | 0 | ... | 0 | 0 | 1 |
... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
Data i dette format er i princippet klar til analyse alt afhængig af hvilket problem man står overfor. Det bør dog nævnes, at valget af transformationer og det endelige format af data afhænger af den efterfølgende analyse og det problem man ønsker belyst.
Hvordan skaber vi værdi fra ustruktureret tekst vha. af NLP?
De fleste virksomheder har et utal af kontaktflader, hvor interaktion foregår via tekst, og disse data indeholder potentiel værdifuld indsigt. Det kan eksempelvis være relevant at vide, hvad ens kunder mener om virksomheden, når de skriver på de sociale medier, eller også kan det være vigtigt at kunne klassificere henvendelser fra kunder efter relevans baseret på, hvad henvendelsen handler om, men det er mildest talt umuligt at gøre dette manuelt. Ved at bruge NLP teknikker kan man automatisk uddrage de relevante informationer af eksempelvis kundehenvendelser og klassificere disse henvendelser ud fra hvor vigtige de er.
-
Frekvens- og korrelationsanalyse på ord
-
Følelsesanalyse (Sentiment analysis)
-
Emne-modellering (Topic modelling)
-
Holdnings-analyse (Opinion analysis)
-
Dokumentsegmentering
-
Informations-udvinding (Information extraction)
-
Informationssøgning (Information retrieval)
-
...
Der findes mange måder at analysere indholdet af tekst på, og valget af metode starter altid med en vurdering af, hvilken type data man har og hvilket behov der er.
Vil du vide mere om Natural Language Processing?
Kontakt os hvis du vil høre om mulighederne for at udnytte de tekstdata din virksomhed har med NLP.