Ämnen i SOUniversum 3 - Topic Modelling

Det regnar ute och jag funderar på olika sätt som man kan behandla SOU-materialet på. För hundra år sedan skrevs en utredning på en skrivmaskin och nu ska jag behandla den med ett dator som är designad i Kalifornien och byggd i Taiwan. Om vi någonsin har varit moderna går det att snabbspola denna modernitet i gigahertz-hastighet.

En metod som har blivit populär inom digital humaniora är "topic modeling", som beskrivs av Journal of Digital Humanities som:

Topic modeling is a form of text mining, a way of identifying patterns in a corpus. You take your corpus and run it through a tool which groups words across the corpus into ‘topics’. Miriam Posner has described topic modeling as “a method for finding and tracing clusters of words (called “topics” in shorthand) in large bodies of texts.”

Mitt ursprungsläge präglas av skepsis. Varför ska vi använda maskininlärning på ett material som redan är systematiserat, kategoriserat och strukturerat av författarna. En SOU har ju en rubrik, innehållsförteckning, sammanfattning, osv., och har noggrant skrivits fram enligt rådande konventioner. Stopp och belägg! Åter till humaniora som det alltid har varit.

Men skepsis är en i grunden reaktiv affekt. Vi har ju redan datorerna i våra knän, varför inte experimentera och se vad som händer?

Jag började med att ladda ned programmet Mallet och följde sedan en välskriven installationsanvisning för samtliga operativsystem. Jag körde sedan några tester på engelska textkorpus för att få lite känsla för vad programmet gjorde. Denna teknologiska hermeneutik präglades av fullständig blackboxing till en början. Ofta är det ju så vi gör med teknologier som vi tror är "verktyg". Vi använder dem med en lätthet tills de inte gör som vi vill.

Problemet med SOUerna är ju att de innehåller massa brus och artefakter från inskanning och konvertering till text. Jag har fortfarande inte klurat ut hur detta ska lösas, men så länge kan man "fuska" sig fram litegrann, för att få en helhetsbild.

Som testobjekt valde jag SOU 1924:35 Ylleindustriens produktionsförhållanden. Inget slår modernitetsångesten när det regnar. Man tänker på de där fabrikerna som nu huserar designbyråers kontor, men som en gång i tiden höll textilarbetare inspärrade vid dånande maskiner. Nu utvecklar man istället appar i dessa fabriker.

För att ta en genväg (som inte håller rent lingvistiskt) runt allt brus som finns i textfilen av denna SOU, valde jag att bara inkludera ord som är längre än fem tecken. Ett exempel på hur man kan göra detta är:

ag -o '\b[\wåäöÅÄÖ]{5}(.*?)\b' Ylleindustriens\ produktionsförhållanden\ -\ SOU\ 1924\:35.txt > ylle.txt

(byt ut ag -o mot grep -Eoi om du bara har det senare installerat)

Jag vet inte om man får göra så här. Om någon lingvist läser, kommentera gärna. Men nu har jag iallafall filen ylle.txt, som består av långa ord från hela SOUn. Här kan man läsa intressanta ord, exempelvis "vicuñageten". Här är en bild på ett sådant djur:

Vicugna-ESO

Därefter är det dags att använda Mallet. Jag lägger filen ylle.txt i en ny katalog och börjar med att bygga ett korpus:

./bin/mallet import-dir --token-regex '[\p{L}\p{M}]+' --input /home/anon/Desktop/ylle/ylleord/ --output ylle.mallet --keep-sequence --remove-stopwords

(observera att om ni använder windows ska ni inte skriva ./ i början, samt byta ut katalogstrukturen till motsvarigheten på erat system)

Jag vet inte riktigt vad jag gör här. Men --token-regex '[\p{L}\p{M}]+' ska iallafall göra det lite snällare för icke-engelsk text. Men nu har jag i alla fall korpuset ylle.mallet. Därefter är det dags för själva topic modelingen. Jag kör:

./bin/mallet train-topics --input ylle.mallet --num-topics 10 --output-state topic-state.gz --output-topic-keys ylle_keys.txt --output-doc-topics ylle_composition.txt

Jag väljer här att Mallet ska sammanfatta tio topics. Denna variabel går att öka och minska efter smak. Ur detta får jag dels tio olika topics i filen ylle_keys.txt samt en beräkning på hur hög täckningsgrad varje topic har i filen ylle_composition.txt. Här kan man se att topic 9 har den högsta sammanfattningsgraden (undrar om man kan säga så) på ungefär 12% (vet inte vad det betyder riktigt). Detta ämne lyder:

ylleindustrien bomullsindustrien kombinerade produktionskostnader produktion inventarier förbrukning totalkostnad sydamerikansk kapitalkostnaderna framträdande rörelsekapital importerat tillverkningar kamylleindustri uppdelning spridningen undersökningen sydamerikanska

Nästa ämne är topic 4 som lyder:

sammanlagt kamyllevä kardylleindustrien innehåller utredningen egenskaper produktionsf löngodsfabriker konsumtion tillverkningen kardyllebranchen beräknats resultatet världskriget spinnerier noteringar rentvättad kortulliga verkställd

Maskinen har arbetat. Jag vet inte riktigt vad jag har gjort.

Hur går jag vidare med detta? Skulle det vara intressant att göra en liknande analys av hela SOU-materialet? Finns det något mindre brutalt sätt att göra filerna rena och snygga och anpassade till svenskt alfabet och svenska stoppord? Blir vi bildade av denna kunskap eller är detta ett intellektuellt förfall? Kommentera!

Uppdatering: Sverker Lundin har gjort en liknande analys men med flera topics. Läs här!.

Uppdatering 2: Ändrade och uppdaterade efter att ha anpassat till svenska tecken, se kommentaren nedan.