Att kartlägga aktörsnätverk i dokument med Named-Entity Recognition

I förra veckan var jag på en workshop arrangerad av Swe-CLARIN som arrangerats för att sprida språkteknologiska metoder till andra discipliner och ämnen. Det var en mycket lyckad tillställning och jag fick många idéer till hur man kan använda lite mer avancerade metoder för att studera dokument genom maskinell fjärrläsning, som i sin tur kan göra så att man bättre navigerar fram till kvalitativt intressanta materialfragment.

Den metod som jag genast blev intresserad av är någ0t som kallas för Named Entity Recognition (NER). NER funkar på så sätt att man applicerar olika statistiska modeller (ibland avancerad maskininlärning även) på naturligt språk för att extrahera "entiteter" ur text.

Det har funnits flera NER-tillämpningar för engelska, men för andra språk är det ju alltid svårare. Men när jag besökte en session om annoteringsverktyget Sparv fick jag höra talas om SweNER, en tillämpning som är utformad efter svenska.  Den exakta funktionaliteten är dokumenterad i Kokkinakis D., Niemi J., Hardwick S., Lindén K. and Borin L. (2014). HFST-SweNER. A New NER Resource for Swedish. Proceedings of the 9th edition of the Language Resources and Evaluation Conference (LREC). Reykjavik, Iceland och koden hittar man här.

Vad upptäcker då SweNER i en text? Mycket intressanta saker!

Det lättaste är att ge ett exempel. När jag skickar text till SweNER svarar den så här:

``` {.EnlighterJSRAW data-enlighter-language="xml"} $ echo "Jag bor i Göteborg. Jag är vän med Lisa som arbetar på Socialstyrelsen och tillsammans med Sven ska jag på julafton åka till Nora." | hfst-swener

Jag bor i Göteborg. Jag är vän med Lisa som arbetar på Socialstyrelsen och tillsammans med Sven ska jag på julafton åka till Nora. ```

SweNER upptäcker alltså att:

Vad kan man då göra med denna typ av metadata? Jo, man kan studera vad Gabriel Tarde kallade för monader och som nutida sociologi kallar för "aktörsnätverk". Utan att gå in på detaljer kan man säga att varje text består av ett antal aktörer, vissa är mänskliga, andra är organisationer, teknologier, platser, händelser osv., allt som har varit med och format något genom sin verkan kan man kalla för aktörer (eller aktanter, entiteter, monader, ju obskyrare begrepp man använder desto argare kritiker får man).

En aktör definieras av sitt nätverk, vilket ger upphov till ett perspektiv på andra nätverk. Ett nätverk, i sin tur, påverkas av sina aktörer. Om jag är vän med Lisa påverkas Lisa av mig och jag av henne. Om jag bor i Göteborg påverkas Göteborg (väldigt lite förvisso) och jag påverkas av Göteborg (till och med påverkas min småländska dialekt sakta men säkert). Jag definieras litegrann av Göteborg (men jag kan inte reduceras till "göteborgare") och Göteborg definieras ytterst lite av min närvaro i staden.

Med NER kan man alltså skapa en (förvisso partiell och ofullständig) lista av aktörer som ingår i ett nätverk. För att ge ett exempel kan vi ta en Statlig offentlig utredning eller två. En utredning är ju skriven av en kommitté, som ofta består av flera personer (PRS/HUM). Den beskriver ofta geografiska platser (LOC) och den inhämtar massvis med information av andra organisationer (ORG).

Hur kan man använda detta för att lättare navigera i stora textmängder? Låt mig ge ett exempel på två offentliga utredningar som jag inte har läst ett enda ord i (än): SOU 1989:73 - TV-politiken och SOU 1973:10 - Reklam. Det enda dessa har gemensamt vid första anblick var att jag sökte på "television".

Låt oss säga att jag nu skulle vara intresserad av TV-politik. Då kan jag visualisera dessa två utredningar baserat på deras aktörsnätverk (som vi kan se konturerna av genom resultatet av NER). Så här kan det se ut vid en första anblick.

1989_73{.alignnone .size-full .wp-image-3763 width="1029" height="498"}

Hela visualiseringen kan man se som en pdf. Vad betyder detta? De lila noderna representerar ORGanisationer. TV3, Marknadsdomstolen, Regeringskansliet, Europarådet och Kabelnämnden har uppenbarligen med TV-politik att göra (för att ta reda på hur måste vi givetvis läsa texten). De gröna noderna är platser (LOC), exempel Vännäs och Göteborg. Expressen, Kvällsposten och TV-konventionen klassificeras som WRK, som står för "Work&Art", vilket består av texter, filmer, böcker, nyhetsmedier, skulpturer etc. Men vi hittar även några manliga HUMans, här Bengt, Lars och Bertil (jag borde kanske haft med efternamnen :)).

Vi kan alltså får en första glimt av vad en SOU innehåller för entiteter. Men det intressanta blir om man lägger flera SOUer bredvid varandra. Mellan SOU 1989:73 och SOU 1973:10 finns det nämligen några gemensamma aktörer. Vi intar ett ny monadiskt perspektiv:

mellanrum{.alignnone .size-full .wp-image-3765 width="1319" height="730"}

Här hittar vi inga människor, utan platser (LOC) och organisationer (ORG). Televerket, Sveriges Radio, Kommunikationsdepartementet och Jordbruksdepartementet relaterar till utredningar om television och reklam. Det gör även Stockholm, Norden, USA och Danmark.

Här kan vi fortsätta att lägga till texter och dokument, aktörsnätverk är lite som fraktaler, de blir större och större ju mer man zoomar.

Tror ni att detta kan vara något som är intressant att exempelvis applicera på alla de 8000 utredningar som nu finns tillgängliga digitalt? Givetvis inte samtidig, det skulle bli helt oöverskådligt. Men man skulle kunna hälla in alla nätverksfiler i offentligautredningar.se och så kan användarna själva komponera sina aktörsnätverk i Gephi.

\

All kod och källdata finns på min Github-sida för den som vill tillämpa detta på helt andra texter (har endast testat på Linux för det är lite enklare).