Dronningens nytårstaler
‘Sentiment analysis’ og ‘text mining’ dukker op flere og flere steder og tanken bag er besnærende: få en computer til at løbe tekster igennem (politikernes tweets, litterære værker, anmeldelser af produkter på Amazon, osv.), udled indholdet og hvad forfatteren virkelig mener ud fra teksten. Vi giver os i kast med simpel tekstanalyse af noget, der er så dansk som rødgrød med fløde: dronningens nytårstaler.
Hvis en computer kan trække indholdet ud af en tekst, så vil dansklærerne i gymnasiet i fremtiden skulle se sig om efter nye jobs. Helt bekymrede behøver de nu nok ikke at være, for det er ikke er nogen triviel problemstilling: sproget ændrer sig hele tiden, der er regionale forskelle, talesprog, sarkasme, vittigheder, stavefejl, sms-sprog, forkortelser og symboler, der alle er med til at komplicere fortolkningen af tekster.
Text Mining with R: A Tidy Approach af Silge og Robinson giver en praktisk introduktion til tekstmining med R. To episoder har virkelig sat sentiment analysis på landkortet i 2017: færdiggørelsen af Silge og Robinsons bog (og tilhørende R-pakke) om “Text Mining” og starten på Trumps præsidentembede. Trumps tweets er berygtede og blev hurtigt genstand for analyse: han var vredest tidligt om morgenen og om aftenen, hvor han tweetede fra en android telefon, mens hans tweets i dagtimerne kom fra en iPhone, og var mere afdæmpede og positive. Det var en fin iagttagelse, men spekulationerne om årsagerne blev hurtigt blæst op til at være “sandheden” på de sociale medier.
Flere værktøjer til tekstanalyse er efterhånden blevet så let tilgængelige, at mange giver sig i kast med det. Personligt kender jeg ikke så meget til text mining, så dette indlæg tjener mest af alt til at prøve nogle af de simpleste metoder for at få en ide om, hvilke teknikker, der bruges, og for at snuse til mulighederne og faldgruberne. På trods af, at metoderne er simple, har disse metoder stadig har en ret fremtrædende rolle - i det mindste som starten på en tekstanalyse.
Ordfrekvenser i Dronningens nytårstaler
Dronningens nytårstaler fra 1972 og frem kan hentes direkte fra kongehuset.dk, mens de ældre taler kan findes i mere kulørte magasiner. I første omgang gemmes alle talerne, og alle ordene i talerne konverteres til småt, så eksempelvis “Vi” og “vi” ikke bliver opfattet som to forskellige ord.
Et hurtigt overblik over indholdet af tekster kan fås ved at vise frekvenser over de benyttede ord. For at disse giver mening er det ofte nødvendigt at frasortere stopord1 Finn Årup Nielsen fra DTU har en liste med 145 danske stopord, der delvis er baseret på de 120 hyppigste danske ord. Jeg har opdateret denne til 178 ord og begge lister kan findes i R-pakken DKdata. - de allermest almindelig ord, der ikke indholder en masse information. Resultaterne kan præsenteres enten i tabeller eller i en wordcloud, hvor ordenes størrelse afspejler frekvensen. Figuren nedenfor viser de hyppigste ord fra samtlige af dronningens nytårstaler 1972-2016.
To ting springer i øjnene fra wordclouden: 1) På trods af frasorteringen af stopord er der stadig nogle almindelige småord, som optræder i teksten. Ord som “må”, “går” og “nok” giver ikke rigtig noget information, og kunne være sorteret fra uden at det ville have ændret ved indholdet. Valget af stopord har derfor en potentiel stor betydning for, hvad man ender med at se, og stopordene bør afhænge af den situation/kontekst man arbejder med. Ligeledes kunne man overveje om man skulle lave stemming - fjerne endelser fra ord or kun se på ordstammer så eksempelvis “år”/“året”/“årets” og “prins”/“prinsen” blev talt som det samme ord. 2) De fleste vil hurtigt identificere ordene som noget fra en nytårstale: den hyppige brug af “år” og ord som “nytår”, “prins”, “prinsgemalen” og “Grønland” leder med det samme tankerne hen på dronningen. Resultatet er ikke selvfølgelig ikke overraskende eftersom vi jo allerede vidste, at teksterne stammede derfra, men det er jo nogle andre ord, der er meget fremtrædende, “år”, “danmark”, “må” og “samfund” og hvis vi ville kunne vi sikkert også med lidt god vilje få disse ord til at passe med andre tekster: partiprogrammer eller grønlandske nyheder.
Der er noget visuelt tilfredsstillende ved en wordcloud i forhold til en tabel med relative ordfrekvenser, men fra et analysemæssigt synspunkt er den mest oplagte anvendelse at bruge ordfrekvenser2 Her har vi benyttet enkeltord - kaldet et 1-gram. Hvis man har rigeligt med tekster kan man tilsvarende lave frekvenstabeller for vilkårlige n-gram. Det benytter mobiltelefonernes autokorrektur, når de skal rette/foreslå ord. til at klassificere tekster - for eksempel efter forfatter, periode, eller område. Med flere sæt af ordfrekvenser kunne vi vurdere, hvilket sæt, som teksten lignede mest. Det kan dog give anledning til andre problemer, som er sværere at håndtere: Shakespeare er eksempelvis kendt for at have opfundet eller populariseret en masse af de ord og udtryk der i dag er helt almindelige på engelsk. At finde på nye ord og udtryk er en af Shakespeares karakteristika, der gør det let at identificere hans tekster nu, men fra et analysesynspunkt er nye ord svære at skelne fra eksempelvis stavefejl.
Ideen med at holde øje med brugen af specifikke ord er langtfra ny, og hjemmesider som rasende.dk og jubler.dk har i årevis registreret, hvor enkelte aviser er mere tilbøjelige til at bruge varianter af disse ord. Disse ordfrekvenser karakteriserer måske forskellige forfattere, men giver ingen umiddelbar information om, hvad forfatteren mener. Det er her sentiment analysis kommer ind i billedet.
Sentiment analysis
Formålet med sentiment analysis er at finde ud af tekstens overordnede holdning - er den neutral, positiv eller negativ. Den simpleste form for dette opnås ved at tildele bestemte ord en score (fx. -1, 0 og 1 for negativ, neutral og positiv) eller en vægtet score fra eksempelvis -5 til 5 og så tælle scoren op for de ord, der indgår i teksten. Denne lidt forsimplede tilgang giver mange åbenlyse problemer med negationer og sproglige referencerammer, som kan være svære at håndtere. Eksempelvis vil følgende to sætninger
Jeg elsker min kone og slår hende ikke
og
Jeg slår min kone og elsker hende ikke
have samme sentiment score selvom de peger i forskellige retninger, og en sætning som
Yes! Jeg elsker at vente 30 minutter i telefonen på at tale med en servicemedarbejder.
er åbenlyst negativ selvom den bruger ordene “Yes!” og “elsker”. Problemet er, at computere er virkelig dårlige til at forstå konteksten. Hvis man skal lave en brugbar sentiment analysis, så kræver det trods alt stadig at have mennesker inde over til at komme med en kvalitativ vurdering af indholdet - i det mindste, hvis vi taler om generelle tekster. For mere formaliserede tekster (patientjournaler, lovtekster osv.) kan computervurderet sentiment analysis måske være mere berettiget. Dronningens nytårstaler gør ikke brug af slang, ironi og sarkasme, og sætningerne bruger ikke voldsomt mange negationer, så i dette tilfælde giver det mening at prøve simpel sentiment analysis af hendes nytårstaler.
Figuren nedenfor viser sentiment scoring3 Her har vi brugt information om sentiments for 3552 danske ord på en skala fra -5 til 5, der også er indsamlet af Finn Årup Nielsen fra DTU. Disse data ligger også i R-pakken DKdata. for dronningens nytårstaler. Vi kan se, at dronningens taler overvejende er positive (eneste undtagelse er 1977, hvor dronningen primært omtalte den økonomiske krise), talerne ender typisk positivt (scoren stiger til sidst - “Gud bevare Danmark”), og at de er blevet længere og længere med årene. Bemærk, at \(x\)-aksen på figurerne ændrer sig og at de nu er næsten 2-3 gange så lange som de var i begyndelsen af dronningens regeringstid. I 1980 blev dronningen 40 år, og en stor del af talen gik med at takke for opmærksomhenden i forbindelse med denne, og i 1985 blev dronning Ingrid hyldet efter 50 år som dansker.
Figuren er pæn, men man sidder lidt tilbage med et spørgsmål om, hvad vi egentlig har har fået ud af vores sentiment analysis.4 I bund og grund er det jo bare et vægtet gennemsnit, og så skal vi måske ikke bekymre os så meget mere om det. Problemet med at vurdere disse kvantitative størrelser er jo, at vi mangler en reference til, hvordan forfatteren normalt skriver, og måske også en sammenligning til, hvordan danskere skriver i al almindelighed. Vi mangler en eller anden form for baseline.
Hvad er sentiment i det danske sprog?
Vi kan starte med at se på, hvordan sentiments generelt er for det danske sprog. Det kan jo være at vores måde at bruge sproget på generelt er positiv eller negativ, eller at udvalget af ordene i sentiment
datasættet er mangelfulde eller har forkerte vægte. Det første sted at starte er derfor at se på, hvordan sentiment scoren ville være generelt for danske tekster. Heldigvis kan man få adgang til de 10000 hyppigste danske ord og deres relative frekvenser baseret på almindelige danske tekster og litterære værker.5 De hyppigste danske ord er “i”, “være”, “og” og “en”. Når vi trækker enkeltord fra det danske sprog så vil vi ikke kunne generere ordentlige sætninger eller få den rigtige vægt af ord-par, men da vi kun ser på gennemsnittet vil problemet nok være til at overse. Når vi trækker ord tilfældigt fra disse relative frekvenser så kan vi udregne sentiment scores for tilfældige sætninger med (marginale) ordfrekvenser der matcher det danske sprog. Sætningerne i dronningens nytårstaler består gennemsnitligt af 20 ord, så for sammenligning bruger vi også sætninger bestående af 20 tilfældig valgte danske ord (efter deres relative frekvens).
Sentiment scores i det danske sprog for sætninger på 40 (=\(2*20\)) tilfældige ord har et gennemsnit på 0.8, mens dronningens taler til sammenligning har en score med et gennemsnit på 2.02. Hvis vi ser på gennemsnittet af 30 par af sætninger svarende til længden på dronningens nytårstaler så vil 95% af dem have en gennemsnitlige sentiment score i intervallet [-0.25, 1.85]. Dronningens nytårstaler er altså markant mere positive, end hvad man normalt ser (hvis man trækker ord tilfældigt).
Hvordan bliver dette års nytårstale?
En af de store problemer med sentiment analysis er, at en score i sig selv ikke siger ret meget, da man jo skal sammenholde det med, hvordan forfatteren normalt formulerer sig. Hvis forfatteren overvejdende bruger positivt ladede ord i det han/hun skriver, så har en sentiment score på fx. 2 en anden betydning end hvis forfatteren normalt bruger neutrale eller negativt ladede ord. Vi kan vurdere dronningens nytårstaler ved at se på generelle tendenser i dronningens nytårstaler henover årene. Hvis vi tegner den gennemsnitlige sentiment score som funktion af år får man nedenstående graf.
Trends i gennemsnitlig sentiment score per år for dronningens nytårstale. Det mørke område viser et 95% konfidensområde for hældningen, mens det rødlige område viser et 95% prædiktionsinterval.
Figuren viser med al tydelighed, at der ikke er noget der tyder på, at nytårstalen i gennemsnit er blevet hverken mere eller mindre positiv med årene, og variationen lader også til at være nogenlunde konstant.
Jeg har det lidt med disse simple tekstanalysemetoder, som jeg har det med clusteranalyse:
Det gode ved clusteranalyser er, at man altid kan lave en analyse og få et resultat. Det dårlige ved clusteranalyser er, at man altid kan lave en analyse og få et resultat.
Uanset hvad vores analyse viser kan vi eller andre spinde en historie over det. Det er der som sådan ikke noget galt med, men det er vigtig at holde sig selv og andre for øje, at man udelukkende er i gang med eksplorative analyser, hvor man forsøger at finde mønstre i data. Hvis man leder længe nok, skal man nok finde noget, der lader til at være et mønster, men uanset om man finder et mønster i data eller ej, så behøver det ikke at være interessant. Med andre ord skal man være super varsom med at tage alt for mange af de tekstanalyser, der dukker op i medierne som reelle fund, hvis de er lavet med disse simple metoder. I bedste fald er de at betragte som eksplorativ dataanalyse.
Hvordan kommer dronningens nytårstale til at se ud i år? Tjae … i det store hele kommer den nok til at virke, som den plejer. Det havde man nok ikke behøvet tekstanalyse for at gætte på. Det bliver - som man siger - same procedure as every year.
Godt nytår!