Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

c 

Hans Olav Melberg (hans.melberg@gmail.com)

Alvorlig forsker, Institutt for helse og samfunn, Avdeling for helseledelse og helseøkonomi,
Universitetet i Oslo.

Spørsmålet om hvem som er den anonyme forfatteren bak bøkene Kongepudler,Kindereggeffekten,


Klassefesten og den nye boken Mordet på Anonym, er ikke det viktigste problemet i verden. Kanskje
ikke det nest viktigste heller. Nå viser det seg imidlertid at metoden for å finne svaret på hvem som
skrev bøkene, kan ha en viss nytte i andre sammenhenger. Det gjelder alt fra å avgjøre man ligger i
faresonen for å få kreft, om en lånekunde har høy eller lav risiko for å gå konkurs, til å klassifisere en
epost som reklamesøppel eller ikke.

For noen kan det kanskje også ha en viss febernedsettende effekt å få identifisere den anonyme
forfatteren. Til sist kan det være grunn til å gjenopprette universitetets ære etter at man ble anklaget
for udugelighet og kastet ut fra NRKs store quizkonkurranse. Til sammen blir dette en god
unnskyldning for å vise vitenskapelige muskler og bruke statistisk analyse for å finne forfatteren av
bøkene.

Det generelle problemet er å kategorisere et objekt på bakgrunn av en del egenskaper. Et objekt kan
tilhøre mange kategorier, men ofte bruker man bare to: høy eller lav risiko, syk eller ikke syk,
søppelmail eller ikke. Egenskapene ved objektet er de variablene man i den aktuelle situasjonen
mener er relevant for klassifiseringen: farge, inntekt, høyde, alder. Ofte har man kjennskap til en
rekke egenskaper, men er usikker på hvilken kategori objektet tilhører. Er en 52 år gammel fisker fra
Molde en god eller dårlig lånekunde?

For å svare på slike spørsmål, kan man bruke ulike metoder der man sammenligner objektet med
andre kjente objekter som har mange av de samme egenskapene. Snakker objektet som en and, ser
det ut som en and og vagger det som en and, ja så er det trolig en and. Dette er vel kjent, så det
interessante ligger ikke i det generelle poenget, men hvordan dette gjøres.

En av de enkleste og mest brukte metodene kalles naiv bayesiansk klassifiseringsprosedyre. Den er


overraskende effektiv og eksempelet med hvem som har skrevet Kongepudler passer godt for å
illustrere detaljene i metoden.

En bok har mange mulige egenskaper og en av de egenskapene som vil være nyttig for å avgjøre
hvem som er forfatteren, er de ordene som brukes. En forfatter kan ha en forkjærlighet for visse ord
og antall ganger man bruker ulike ord kan dermed være et kjennetegn ved en tekst. Alternativt
kunne man ignorere hvor ofte et ord ble brukt og heller fokusere på hvilke ord som brukes. For
eksempel når man skal identifisere korte tekster kan dette være mer nyttig enn ved å telle opp hvor
ofte ulike ord brukes. At eposten inneholder ͟Viagra͟ kan være et bedre kjennetegn på søppelpost
enn antall ganger man bruker ulike ord. Men når det gjelder spørsmålet om forfatterskapet av lengre
tekster, vil hvor ofte man bruker et ord kunne være et mulig kjennetegn. Spørsmålet er da hvordan
dette kan formaliseres og brukes for å bestemme hvem som er forfatteren av et dokument.

Utgangspunktet er at vi ønsker å finne er sannsynligheten for at en person - Knut - har skrevet et


dokument som består av ordene D = {w1, w2, ͙ wn}. D symboliserer her hele teksten med ordene i
rekkefølge: w1 er det første ordet, w2 det andre ordet osv. Formelt ønsker vi å finne Pr(K|D). Fra
Bayes regel vet vi at dette kan skrives som:

Ò Ò 
Ò     
Ò 

Dette uttrykket kan brytes ned deler som kan estimeres med de dataene man har, men det krever
noen viktige forenklinger. Se først på Pr(K). det er sannsynligheten for at Knut har skrevet
dokumentet i utgangspunktet, før vi får vite om egenskapene ved teksten. Teoretisk er det litt
interessant hvordan vi skal bestemme denne. Det kan være vår subjektive oppfatning av hvor
sannsynlig det er at Knut er forfatteren. Alternativt kan det være at ikke ønsker å ha noen spesiell
formening. Noen tolker dette som at det er like sannsynlig at det er Knut som at det er noen andre:
Pr(K)=0.5, Andre sier at det avhenger av hvor mange andre forfattere vi mistenker. Med ti mulige
forfattere, er utgangssannsynligheten for at boken er skrevet av Knut 1/10. Hvilken
utgangssannsynlighet som best representerer ͟jeg vet ingenting͟ er filosofisk interessant, men i dette
tilfellet viser det seg at det ikke har stor praktisk betydning fordi viktigheten av
utgangssannsynligheten drukner når man har et dokument med mange ord.

Dersom målet er å vurdere om forfatteren er Knut eller ikke, kan vi se på forholdet mellom
). Dette gjør at vi kan se
sannsynligheten for at Knut er forfatteren vs. at han ikke er forfatteren Pr(
bort fra Pr(D) fordi:

  


 
   

 
   

  

     





Hvis bruker den nevnte antagelsen om at det er like sannsynlig at Knut er forfatteren som at den vi
), får vi:
sammenligner med er forfatteren, Pr(K)=Pr(


 


  


 

Dersom dette utrykket er større enn en, er det sannsynlighetsovervekt for at Knut er forfatteren. Det
 )). Da gjenstår det bare å finne sannsynligheten for
betyr at vi kan se bort fra både Pr(D), Pr(K) or Pr(
å observere et dokument med de ordene vi ser dersom Knut er forfatteren, P(D|K). Vi har:

Pr(D|K) = Pr(w1, w2, ͙, wn|K)

I et dokument med mange ord, vil dette være svært vanskelig å beregne. Dersom vi derimot antar at
ordene er uavhengige, kan vi skrive:

Pr(D|K) = Pr(w1|K) Pr(w2|K) ͙ Pr(wn|K)

Pr(D|K) = Ò  
Analogt har vi:

   Ò  
  

Dermed får vi:


 Ò  

 



Ò  

At de ulike ordene er uavhengige av hverandre, er en viktig forenkling fordi den gjør det mye letter å
beregne sannsynlighetene. Vi vet at denne antagelsen ikke er perfekt. Ofte vil bruken av et ord være
korrelert med hvor ofte man bruker et annet ord. Metoden ser bort fra dette og kalles derfor ͟naiv.͟
Det er imidlertid veldig gunstig å gjøre denne antagelsen fordi man da kommer frem til et utrykk man
enkelt kan estimere. Det eneste vi trenger er å vite hvor ofte Knut bruker ulike ord i forhold til hvor
ofte den vi sammenligner med bruker de samme ordene. Det viser seg også at metoden gir gode
resultater til tross for forenklingen.

Intuisjonen i metoden er enkel. Det er som om man ser på dokumentet som en sekk med ord der
hvert eneste ord er skrevet på en lapp. Hver gang man trekker opp et ord, spør man hvor sannsynlig
det er at nettopp dette ordet skulle bli trukket dersom forfatteren er Knut eller den vi sammenligner
med. Det kan vi estimere ved å se på andre dokumenter vi med sikkerhet vet er skrevet av Knut og
de andre. Hvis ordet ͟stortingssekretærvaskehjelpassistent͟ utgjør 2 % av alle ordene i de
dokumentene vi vet er skrevet av Knut, så er vårt beste estimat at sannsynligheten for at det skal
dukke opp når vi trekker et ord fra sekken 0,02 hvis det er skrevet av Knut. Tilsvarende teller vi opp
frekvensen av det samme ordet for den andre forfatteren og regner ut sannsynligheten for at
nettopp det ordet skulle bli trukket hvis det er den personen som har skrevet dokumentet. Slik gjør
man med hvert eneste ord. Vi later som om dokumentet har oppstår ved å trekke ord opp fra en sekk
som har en blanding av ord som enten tilsvarer hvor ofte Knut bruker ordene eller hvor ofte den
andre bruker ordene. Sannsynligheten for en gitt rekke med ord er da sannsynligheten for hvert ord
multiplisert med hverandre.

I teorien er dette enkelt, men i praksis oppstår det fort problemer. Dersom man implementerer
teorien i et dataprogram, er det praktiske begrensninger på hvor små tall maskinene kan håndtere.
Dette er et problem fordi teorien impliserer at man skal kunne multiplisere flere hundre små
sannsynligheter. En løsning er da å ta logaritmen til utrykket for å gjøre om multipliseringsproblemet
til et summeringsproblem:


 Ò  
      
 

 

Ò  

 
   Ò   

 Ò  

 
 
  Ò   
 Ò  
 
Ved å ta logaritmen løser man det praktiske problemet med multiplisering av mange små
sannsynligheter, men et annet problem oppstår: Noen ganger vil man møte et ord i det ukjente
dokumentet som Knut aldri har brukt i de dokumentene vi har tilgang til. Dette er et problem fordi
man ikke kan ta logaritmen av null. Det er flere mulige løsninger på dette. En mulighet er å legge til
en liten konstant før man tar logaritmen. En annen mulighet er å fokusere på de ordene man vet
eksisterer i alle dokumentene ʹ alle andre ord ekskluderes.

Det finnes ingen standard løsning. Uansett er man nødt til å bearbeide tekstfilene før analysen og det
kan være god grunn til å ta ut noen ord. For eksempel kan man velge å ta bort ord som utrykker
egennavn når man sammenligner en bok som Kongepudler ʹ der egennavn nevnes ofte - med
avisartikler som sjelden fokuserer i så sterk grad på egennavn. Videre må man ta bort tegnsetting slik
at ͟forteller͟ og ͟forteller.͟ ikke blir forskjellige ord. Noen velger også å fokusere på stammen av ord
slik at for eksempel ͟ønsker͟ og ͟ønsket͟ representerer det samme ordet. I den etterfølgende
analysen er alle ord med stor forbokstav fjernet fra dokumentet (en gruppe som inkluderer
egennavn, men også ord etter punktum). Videre er all tegnsetting tatt ut og analysen er avgrenset til
ord som brukes både i det ukjente dokumentet og av begge de potensielle forfatterne. Dette
eliminerer problemet med logaritmen av null. Kostnaden er tap av noen ord som kunne gi
informasjon og i en annen analyse kunne man for eksempel velge å fokusere på de ordene som er
unike.

Med utgangspunkt i teorien beskrevet overfor, ble det laget en algoritme i Python for å analysere
dokumentene. Den beskrives her i korte trekk. Først defineres følgende variabler:

- 
 : antall ord i dokumentet som er skrevet av ukjent forfatter (n = antall, u = ukjent, unknown)

- 

 : antall unike ord i dokumentet som er skrevet av ukjent forfatter

-   : antall ord i dokumentet skrevet av den første forfatteren vi tror har skrevet Kongepudler
mao. Knut i eksempelet overfor. (n = antall, s = suspect)

-  : ord i dokumentet skrevet av den vi vil sammenligne med. Det kan være en annen mulig
forfatter av Kongepudler, eller noen helt andre for å teste algoritmen.

- 
 : antall ganger ord nummer i forekommer i dokumentet som er skrevet av den ukjente
forfatteren

-   : antall ganger ord nummer i forekommer i dokumentet som er skrevet av den forfatteren vi
tror har skrevet Kongepudler

-   : antall ganger ord nummer i forekommer i dokumentet som er skrevet av en annen forfatter

Estimeringen tar utgangspunkt i:


 


   
  Ò   
 Ò  
  


 
Den beste gjetningen (maximum likelihood) er basert på de relative frekvensene. Vi har da:
 

 !"# !"
      $ 
  $
 

 !# !
 

Denne algoritmen starter fra begynnelsen av dokumentet og regner på sannsynligheten til hvert
eneste ord etter hver som det blir trukket opp av sekken.

En mer effektiv løsning i stede for å regne ut sannsynligheten for å trekke ordet ͟bil͟ hver gang man
møter det i dokumentet med ukjent forfatter, er å telle opp antall ganger ordet forekommer i
dokumentet og gange det med sannsynligheten for å trekke ordet fra en sekk med ord. Vi får da:
 

 !"# !"
    !"% &

   $ 
 !"% &
 $

 !# !
 

Der man summerer over antall unike ord i det dokumentet med ukjent forfatter (nuu) og ikke over
antall ord totalt i dokumentet med ukjent forfatter (nu). Dette er enklere fordi det er langt færre
unike ord enn det totale antallet ord. Til slutt kan man forenkle hele utrykket til:


 !"# & !
  
   !"% &
 $

 !# & !"


Rent praktisk samler man først en del dokumenter skrevet av mulige forfattere av Kongepudler, et
utdrag av boken (den med ukjent forfatter) og noen andre dokumenter skrevet av personer som
trygt er utenfor mistanke for å være en av forfatterne. Hver gang disse dokumentene brukes, renses
de for tegnsetting, ord med store bokstaver (egenord med mer) og ord som er unike for dokumentet.
Variablene som beskriver antallet ord og lignende baseres så på den rensede listen av ord i de ulike
dokumentene. Lengden på dokumentene bør være så lang at man med en viss grad av sikkerhet kan
si noe om hvor ofte forfatteren bruker visse ord. Dette er spesielt viktig for dokumentene som brukes
for å beskrive egenskapene ved de forfatterne vi tester ut.

Etter rensing av dokumentene, lager algoritmen en liste over unike ord og en opptelling av antall ord
(både unike og totalt) i de tre aktuelle dokumentene: det som er av ukjent forfatter (u), det som er
skrevet av ͟the prime suspect͟ (s, suspect) og det som er skrevet av den andre mistenkte eller en
utenfor mistanke (o, other). Algoritmen har så en loop for hvert unike ord i det ukjente dokumentet
der regner ut og plugger inn verdiene i ligningen overfor. Til slutt har man da logaritmen av ratioen
og man kan finne Pr(K|D) ved å ta antilogaritmen og bruke det faktum at P(K|D) + P(  |D) = 1. Denne
prosedyren gjentas for ulike par av mulige forfattere, og etter å ha testet alle mot alle kan man se
hvem som er den mest sannsynlige forfatteren.

Før man går i gang, kan det være greit å sjekke at metoden virker. Dette gjøres ved å ta noen
dokumenter der vi kjenner forfatteren og undersøke om algoritmen finner korrekt forfatter for disse.
Vi plukket derfor ut tretti avisartikler eller kronikker skrevet av Kjetil B. Alstadheim, Vidar Kvalshaug
og John Egeland. Algoritmen ble først foret med en samling artikler av de tre forfatterne på omtrent
5000 ord (en samling av andre avisartikler enn de tretti vi testet, men skrevet av de samme
forfatterne). Basert på det ordmønsteret algoritmen fant i disse artiklene, regner den ut hvem som
er forfatter av de tretti andre artiklene. Når vi tester disse artiklene, gir metoden riktig svar i 58 av 60
forsøk (97%).

Gitt at metoden virker, kan man teste noen mulige forfattere. Blant de foreslåtte kandidatene er
John Egeland, Kjetil B. Alstadheim, Anne Holt, Vidar Kvalshaug, Herman Willis, Knut Nærum, Runar
Døving, og Hans Geelmuyden. Det er også mulig at bøkene har flere forfattere.

For å teste hvem av disse som er mest sannsynlig, ble det samlet inn dokumenter med tekster
skrevet av disse forfatterne. Basert på disse dokumentene kan man si noe om hva slags ord
forfatterne vanligvis bruker og i hvor ofte de ulike ordene brukes. Dokumentene bør være av en viss
lengde før man kan si at de avslører en karakteristisk skrivestil. Det er ikke mulig å si nøyaktig hvor
lange de bør være, og det ble derfor lagt vekt på å samle relativt lange dokumenter (over 5000 ord).

Metoden er slik at i enhver parvis sammenligning, så vil resultatet være at man peker på den mest
sannsynlige forfatteren av de to som sammenlignes. Metoden vil med andre ord peke på den som i
størst grad bruker de samme ordene, også når den må velge mellom to person der ingen er den
sanne forfatteren av det ukjente dokumentet. Det er derfor viktig å ikke konkludere med at en
person er forfatteren bare fordi metoden sier at personen er mest sannsynlig i noen få
sammenligninger. Man må se om personen systematisk dukker opp når man sammenligner med
skrivestilen til mange av de andre alternativene.

Dersom man starter med John Egeland, viser det seg at det er lite sannsynlig at det er ham. I til
sammen ti forsøk, med ulike utdrag fra Kongepudler, Klassefesten og Mordet på anonym, ble Egeland
aldri foretrukket foran Kjetil B. Alstadheim eller Anne Holt. Det synes dermed trygt å forkaste Egeland
som den mulige forfatteren.

Det samme gjelder flere av de andre. Lignende testing viser at Knut Nærum, Hans Geelmuyden og
Runar Døving trolig ikke er forfatteren. De ble forkastet som forfatteren alle 10 gangene når man
sammenlignet på samme måte som for Egeland.

Herman Willis, derimot, var en noe mer lovende kandidat. Han ble foretrukket foran Alstadheim og
Holt i alle ti tilfellene. Samtidig er grunnlaget bak Willis noe svakere enn de andre fordi hans skrivestil
ble kartlagt ved hjelp av et dokument som var relativt kort.

Listen er dermed kortere. Dersom man kjører en utvidet sammenligning av de som nå er mest
aktuelle ʹ Willis, Alstadheim, Kvalshaug og Holt ʹ før man følgende resultater: Anne Holt har en
skrivestil som noen ganger kan ligne på den man finner hos Anonym, men det er ikke stabilt eller
entydig nok til å utrope henne til forfatter. Hun blir bare utpekt i fem av femten sammenligninger.
Det kan dermed forklares med at hun har en stil som noen ganger ligger nærmere Anonym enn noen
av de andre (og dermed blir utpekt som forfatteren i en parvis sammenligning), men at det ikke er
stabilt nok til å virkelig være forfatteren. Alternativ kan hun være forfatter på deler av bøkene
dersom man mener at det er flere forfattere, men det virker lite sannsynlig.

Det samme gjelder Alstadheim som er den mest sannsynlige forfatteren i seks av de siste femten
sammenligningene. Det er også for ustabilt til å kunne utropes til vinner, men så stort at det heller
ikke kan utelukkes.
De to som peker seg ut er dermed Kvalshaug og Willis. Kvalshaug er noe ustabil, mens Willis i første
omgang presenteres som den mest sannsynlige forfatteren i alle sammenligningene. Dette er noe
overraskende fordi spekulasjonene har gått mest på Kvalshaug og Alstadheim. En mulig årsak er
imidlertid at Willis sin grunnlagstekst er noe kortere enn de andre. Når man legger inn flere
dokumenter skrevet av Willis slik at algoritmen blir sikrere på Willis skrivestil, faller antall Willis
prediksjoner til 6 av 15. For å komme videre, er det derfor nødvendig å lage større dokumenter som
tillater en sikrere beregning av ordfrekvens i de ulike dokumentene.

Dersom man legger sammen utdragene fra de ulike bøkene i et stort dokument, viser det seg at
Willis ikke lenger er den mest sannsynlige forfatteren. I stedet er det Alstadheim som vinner alle sine
parvise sammenligninger mot Holt, Willis og Kvalshaug, mens Kvalshaug vinner mot de andre. Det
kan tyde på at Alstadheim eller Kvalshaug er forfatteren, eventuelt at begge er involvert. Kvalshaug
er ansatt i Kagge forlag som utgir boken og kan ha hatt en rolle. Konklusjonen er imidlertid fremdeles
usikker fordi tester viser at resultatet endres noe når man forkorter lengden på dokumentene som
brukes i sammenligningen. Det kan også være andre forfattere som ikke er nevnt i diskusjonen.
Metoden kan bare teste de man har informasjon om og man kan derfor ikke utelukke at andre
personer som ikke er testet, kan være forfatteren.

Konklusjonen er altså at John Egeland, Runar Døving, Hans Geelmuyden og KnutNærum er lite
sannsynlige kandidater. Knut Alstadheim, Vidar Kvalsvik, Herman Willis og delvis Anne Holt har en
skrivestil som ligner den man finner hos Anonym.

Noen vil kanskje si at dette er en litt pinglete konklusjon. Spesielt med tanke på den lettere
overdimensjonerte kanonen som er brukt til å skyte på en relativt uskyldig, men godt skjult, spurv.
Og det er jo sant. Vitenskapelige muskler er kanskje ikke så mye å skryte av?

Poenget er ikke å være helt sikker, men å være så sikker som man kan være gitt den informasjonen
man har. Bare idioter er sikre. Det er jeg nesten sikker på.

Temaets uviktighet og konklusjonenes usikkerhet tilsier kanskje at det ikke er behov for ytterligere
innsats for å finne anonyms identitet. Men metodene er det behov for både mer forskning på og bruk
av. Disse metodene passer perfekt i en tid og et land der man begynner å få tilgang til data i et
omfang som gjør at man kan finne sammenhenger det tidligere har vært vanskelig å finne. For
eksempel tok det lang tid før man oppdaget at Dispril kunne være forebyggende i forhold til
hjerteinfarkt, mens man med dagens helseregister mye raskere kan finne slike sammenhenger. Med
nye metoder og data vil man også kunne videreutvikle verktøy som kan hjelpe til med å stille korrekt
diagnose og til å klassifisere om en person er i risikosonen for å få en sykdom gitt visse egenskaper.

Jakten på Anonym viser hvordan nye redskaper for å finne mønster i store datamengder kan brukes.
Dette er redskaper som kan brukes på mange viktige områder og som det derfor er nyttig å kjenne
til. Takk for det, Anonym!

You might also like