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:

$ 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 <ENAMEX TYPE="LOC" SBT="PPL">Göteborg. Jag</ENAMEX> är vän med <ENAMEX TYPE="PRS" SBT="HUM">Lisa</ENAMEX> som arbetar på <ENAMEX TYPE="ORG" SBT="CRP">Socialstyrelsen</ENAMEX> och tillsammans med <ENAMEX TYPE="PRS" SBT="HUM">Sven</ENAMEX> ska jag <TIMEX TYPE="TME" SBT="DAT">på julafton</TIMEX> åka till <ENAMEX TYPE="LOC" SBT="PPL">Nora.</ENAMEX>

SweNER upptäcker alltså att:

  • Göteborg – LOC – en plats.
  • Lisa – PRS/HUM – en person, mänsklig.
  • Socialstyrelsen – ORG – en organisation.
  • Sven – PRS/HUM – en person, mänsklig.
  • Julafton – TME/DAT – Datum.
  • Nora – LOC – En plats (och inte i denna kontext ett namn på en person).

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

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

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).

9 reaktioner till “Att kartlägga aktörsnätverk i dokument med Named-Entity Recognition”

  1. Kul! Har också intresserat mig för NER (eller entity extraction och allt vad det nu kallas) tidigare vad gäller mer praktiska tillämpningar i en kommersiell omvärldsbevakningskontext. Tänker mig att du i ett fall som detta får ett större analysvärde om du också kan inkludera en slags tidsstämpel så du kan följa hur aktörernas relationer och spridning i texten förändras. Det har du säkert redan tänkt på men ville ändå nämna det.
    Sen tänker jag också att NER är utmärkt att kombinera med en approach liknande den som Simon Lindgren kallar Connected Concept Analysis – är inte alltid visualiseringarna av nätverken som ger mest matnyttigt, även om det ser snyggt ut.

  2. johan: Tack för kommentaren! Omvärldsbevakningen ligger i många fall före forskningen på dessa områden, speciellt när det kommer till teknikutveckling.

    Tidsstämpel ska absolut med. När det kommer till offentliga utredningar är det ganska trubbigt eftersom det bara blir på årsbasis. Men om man använder samma teknik på ex. sociala medier får man ju sekundnivå på det mesta man jobbar med. Tack för tipset, ska lägga till ett sådant attribut i nätverksfilerna. Att visualisera tidsdimensionen är lite svårare dock, om man vill göra dynamiska nätverk. Här är Gephi inte helt färdigutvecklat känner jag, men det finns säkert andra lösningar.

    Håller med om visualiseringar. De är väldigt intuitiva, men i sig är de inte så matnyttiga. Jag tänker att de funkar lite som en ”preview” på vad man sedan ska ta itu med.

    Lindgrens Connected concept analysis är intressant. Men om jag förstår den rätt så baserar den sig på semiotik och diskursanalys, vilket gör att resultaten blir beskrivningar av begreppsliga rum och språkliga strukturer. Med NER tror jag man kan gå steget längre och extrahera entiteterna som metadata istället, vilket gör att man kan gå utanför själva betydelsen av orden och istället spåra aktörsnätverken som gör texten möjlig.

    1. Blir spännande att se vart du kan ta detta och kul med lätt tillgänglig NER som funkar på svenska. Anledningen att jag tar upp CCA är just att det är en annan typ av enkelt formulerad/hanterbar analys som jag tycker du med fördel skulle kunna kombinera med valda delar av en aktörsanalys baserad på NER-metadata. Jag har en rent pragmatisk ingång och blandar glatt olika typer av analysmetoder (och utvecklar detta tillsammans med Jonas Andersson Schwarz i det kommande numret av Nordicom information om digitala metoder – säkert är du också med där). Detta inte minst eftersom de (flesta?) mer automatiserade metoder/system ännu inte är tillräckligt utvecklade för mer heltäckande analyser. Olika aktörer i branschen har tex. i flera år sagt sig ha system för att automatiskt generera tematisk klustring av ostrukturerad text men jag har ännu inte sett något system som funkar tillräckligt bra.
      9

      1. Johan: Ser fram emot Nordicom-numret!

        Jag är också ganska pragmatisk och som vi hade förmånen att tala om IRL så är ju många av dessa metoderna ”in-progress”, och kan inte riktigt betraktas som färdigutvecklade. Men samtidigt är det lite det som jag tycker är spännande. Teknologierna formas ju, åtminstone delvis, av vilka frågor som vi tycker är relevanta att ställa.

        Jag är själv lite av en ulv i fårakläder som inte riktigt är hemma i något bestämt fält (vilket gör att jag kan göra lite som jag vill :)). Å ena sidan tycker jag det är intressant vad som händer inom lingvistik/språkteknologi/NLP etc. och å andra sidan gillar jag det som görs av omvärldsbevakning, IT-sektorn och även bland silicon-valleygiganterna. Oavsett vilket så har ju dessa teknologier blivit mycket mera tillgängliga bara de senaste åren och nu står många forskare och ser antingen att de har hamnat på efterkälken eller att det nu finns massa intressanta möjligheter att utveckla nya metoder. Det senare känner jag är den mest intressanta vägen framåt!

  3. Det här var ju superintressant! Så här förstår jag nätverksvisualiseringen: Den visar vilka NE:s som förekommer i vilken SOU, och i och med att du har kombinerat de två SOU-nätverken så ser man vilka som förekommer i båda. Är det så?

    Givetvis blir visualiseringen mer intressant ju fler SOUs man slänger in. Jag tänker att det vore intressant att testa detta men att göra som jag brukar göra i CCA, nämligen att visualisera samförekomster av NE:s på menings- eller styckesnivå. Det kan kanske vara ett annat sätt att komma åt de aktörsnätverk som konstitueras via texterna.

  4. Simon: Tack för kommentaren! Ja, jag tänker att samförekomsten mellan SOUerna på något sätt indikerar att det finns en gemensam nämnare mellan de båda texterna, och att NE kan ge dessa samförekomster ett ”kvalikvantiativt” värde.

    Jag ska testa med fler SOUer. Måste bara komma på något sätt att göra visualiseringarna överskådliga, dessa nätverkskartor blir snabbt ganska plottriga.

    Ska även testa på meningsnivå! Spännande tanke, för det kan nog ge ett mera precist resultat. Till exempel, säg att ORG Socialstyrelsen ofta samförekommer med platsen LOC Örebro. Då har man en association mellan dessa två entiteter som kan visa intressanta saker. Tänker att CCA och vad man kan kalla Connected Actonetwork Analysis (CAA) kan överlappa varandra på ett intressant. Så att man får så att säga två ”vyer” över textlager.

  5. Intressant tack!

    Jag hade en metodfråga som jag söker ett halvt filosofiskt och halvt tekniskt svar på:
    Vad gör en ifall monaderna/aktanterna inte är atomer som skapas genom aktörsnätverket (och nätverket skapas av monaderna)? Alltså ifall även monaderna i sig är aktörsnätverk som skapas av andra, både mer omfattande nätverk och mindre omfattande nätverk?

    Alltså hur analyserar en aktörsnätverk i aktörsnätverk? Där AN1 kan vara i AN2 samtidigt som AN2 är i AN1?
    Och hur undviker en den analytiska fällan, att bara söka sig ner till minsta atomnivå?
    Och hur undviker en dualism mellan monader/aktanterna och nätverket? (En dualism som kamoufleras genom växelverkan)

  6. Per: Tack för kommentaren!

    Jag tänker så här. Varje aktörsnätverk är bara en tillfällig ”karta” som man kan navigera utifrån. Om jag går till noden ”Göteborg” så kan jag (givet vilken data jag har) producera många nya tillfälliga kartor. Jag kan till exempel skapa en karta över hållplatser med data från Västtrafik, jag kan skapa en karta över föreningar genom att hämta data från en kommuns hemsida eller så kan jag gå till en Konsum-butik och producera en karta över alla kunder som är i butiken och säga att det är ett tillfälligt nätverk mellan människor och varor.

    Det finns alltså inga atomer, utan bara ytterligare monader/perspektiv på tillfälliga helheter. Man kan kalla Konsumbutiken för en kvasi-helhet som endast är en helhet för att vi har det specifika perspektivet, just då. Men samtidigt vet vi att ett kilo kaffe är ett svindlande stort aktörsnätverk som leder oss runt jorden och varje kund har Konsumbutiken bara som en fraktion av sitt större nätverk.

    Den enda möjliga metodologiska och filosofiska positionen är alltså ”irreduktionism”, ingen given monad kan ge oss en ”view from nowhere”.

    1. Ja, det låter fruktbart. Ett aktörsnätverk kan få funktionen av monad (stad, organisation, grupp) och därmed undersökas som monad snarare än aktörsnätverk.

      Och monaden kan undersökas som ett aktörsnätverk. Och därmed förlora funktionen av monad?

      Vi skulle kunna kombinera det med Niels Bohrs fenomenologi och kvantfysik: de kan inte vara båda samtidigt. Och själva undersökningen blir en del av fenomenet. Undersökningen blir en intervention. (Se också Karen Barad)

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

Time limit is exhausted. Please reload CAPTCHA.