Nyhetsredaktion. Bråttom. Inrikesredaktören har precis fått en artikel klar. Hon pustar. Men nyhetschefen vid desken river sitt hår. Artikeln är visserligen färdig, men den är inte kodad – systemet kräver att alla inrikesnyheter klassificeras som INR och att databasen uppdateras med morgondagen som publiceringsdatum. Varför kan hon inte göra rätt?

Svaret är förstås att vi som människor inte vill leva på Maskinens (eller i detta fall den redaktionella Processens) villkor. En bra journalist skall få fokusera på sitt eget gebit, och i bästa fall finns det någon annan på plats som kan putsa den slutgiltiga produkten. Men i allt högre grad sparas denna någon bort i effektivitetens namn. Vore det då inte skönt, och för all del också ännu effektivare, om datorn kunde fylla i sådant som rimligen är rätt självklara fakta i den rådande situationen?

Ett program som analyserar gamla artiklar kunde ganska hastigt identifiera markörer för olika kategorier; Jyväskyläs, hushållsavdrag och promillegränsen är troligen ganska säkra markörer för inrikesnyheter; Obama, underhuset och gerillastyrkor sannolika för utrikesnyheter. Vill man skapa mer specifika kategorier följer man samma princip: ge programmet ett urval artiklar i olika kategorier, och låt det hitta de markörer som är unika, eller helst åtminstone dominerande, för en enda kategori.

Vad är en korpus?

Redaktionens samling av publicerade nyhetsartiklar går att betrakta som en korpus, en samling texter. Lingvistiken behöver sådana samlingar för att undersöka språkets beskaffenhet – forskaren behöver få reda på hur ”folk i allmänhet” säger, också om forskaren har en god intuition om sitt eget språkbruk. Då är det bra att ha ett material av andras texter att undersöka för att utröna något slags objektiv sanning om hur språket faktiskt används.

Andra slags korpusar kan vara t.ex. bandinspelningar (ljudet av tal är i bred bemärkelse också text) eller varför inte hela Internet. För många slags undersökningar räcker en sökmotor för att nå slutsatser om språkliga fenomen; det kan rent av vara en fördel att materialet inte är begränsat. Fast då får man också tåla att sökresultaten kan innehålla många slarvigt skrivna texter, och många texter av obestämbar härkomst, såsom automatiskt översatta webbsidor som skrivits på något annat språk och sedan “hjälpsamt” översatts till alla möjliga språk med hjälp av ett inte särskilt precist maskinöversättningssystem.

Vill man ha högre kvalitet eller högre informationsinnehåll får man i praktiken begränsa sig till mindre textsamlingar. För utveckling av t.ex. maskinöversättningssystem behövs en korpus där samma text översatts till flera språk, och möjligen dessutom annoterats av en expert med information om vilka fraser som motsvarar varandra, och kanske också information om vem som har skrivit texten, när och för vilket ändamål, och motsvarande information om översättningen. Det är sådan metainformation som det tar tid att leta fram, och därför blir det dyrt och långsamt att bygga upp en korpus.

Vad är en kategori?

Men våra vänner på tidningsredaktionen har alltså redan en korpus med exempeltexter – alla deras tidigare publicerade artiklar. Följande fråga blir då vilka kategorier vår korpus innehåller.

Om vi begränsar oss till inrikes- och utrikesnyheter blir systemet förhoppningsvis precist och pålitligt, men i praktiken behöver tidningen fler kategorier: sport, dagbok, ekonomi, opinion … Dessvärre är det ofta svårt att avgöra vilka alla faktorer som bestämmer om en artikel hamnar på inrikes- eller ekonomisidorna, till exempel. Ofta är det väl så att om en sportjournalist skriver om fiffel i fotbollsföreningen så är det en sportnyhet, annars ekonomi eller inrikes? Och den före detta chefredaktörens filosofiska betraktelser kanske inte går att hänföra till någon kategori alls…

Ju snävare kategorier vi delar in vårt material i, desto svårare blir det för maskinen, och till slut kanske också för oss själva, att finna några gemensamma drag bland de texter vi tittar på. Dels blir texterna allt färre per kategori, dels sprids markörerna över flera kategorier. Plötsligt hittar vi Jyväskylä såväl i motorsport som i biblioteksväsende och våldsbrottsrapportering. Borde vi titta på andra möjliga markörer i stället för orden i artikeln? Vilka då? Textens längd är lätt att beräkna men har knappast någon större särskiljande effekt. Antalet skrivfel? Tiden på dygnet då artikeln är skriven? Vem som skrivit den? Man kan prova på allt möjligt men till slut får man i värsta fall bara ge upp och möjligen hävda att materialet inte är representativt för de kategorier som det förmodas innehålla.

Å andra sidan kanske vi kan samla en ännu större korpus? Men vi bör akta oss för att bara lägga till fler och fler lättillgängliga texter. Om vi tankar alla väderprognoser och börskurser vi kan få tag på blir korpusen naturligtvis större, men det leder till att den tröga massan av ”växlande molnighet” och ”vid stängningsdags” blir så överväldigande att varje förekomst av dessa markörfraser kommer att kategoriseras som väder- eller börstelegram.

Skräp in, skräp ut

Den som skall utveckla ett kategoriseringsverktyg vill gärna kunna lita på att resultaten vid en testkörning är tillförlitliga. Om testmaterialet innehåller trettio inrikes- och trettio utrikesnyheter och verktyget ger korrekt kategori för 27 av vardera – då har vi redan kommit ganska långt; precisionen är någotsånär acceptabel och vi kan koncentrera oss på de återstående sex problematiska artiklarna.

I verkliga livet vill man förstås ha ett mycket större testmaterial. Så vi kanske talar om 6 000 felkategoriserade texter i stället. Då kan man inte längre gå igenom dem en efter en och åtgärda problem i systemet allteftersom. Men i praktiken är det dessutom så att tröskeln är hög att alls gå in och titta på texterna – utvecklaren är ofta inte så insatt i materialet och kanske inte ens kan avgöra om en artikel faktiskt är korrekt kategoriserad eller inte. Utvecklaren kanske inte ens talar det språk som materialet är skrivet på.

Om då inte alla artiklarna i själva verket har sin korrekta kategori – eller om t.ex. en del av artiklarna är opublicerade råversioner som är fulla av skrivfel – råkar vi ut för det klassiska garbage in, garbage out. Systemet lär sig av dåliga exempel i stället för bra exempel, och dess precision och användbarhet blir därefter.

Här kommer frågan om kvalitetskontroll för korpusar in i bilden. Hur kan vi utesluta sådana texter ur korpusen som av olika orsaker inte borde finnas med? Hur kan vi försäkra oss om att korpusens kvalitetsnivå är acceptabel?

Enkla kontrollverktyg

Förutom rent objektivt mätbara kvalitetsproblem lider många korpusar av att osäkerhetsfaktorerna är så många. Också stora och internationellt beryktade korpusar dras med ett dokumentationsunderskott. Vilka var källorna? Vilka var urvalskriterierna? Vilka är de mest sannolika felkällorna? Vilka kvalitetskontroller har utförts? En bra korpus kommer med dokumentation som försöker svara på de här frågorna, men det blir för tungrott att samla ihop en korpus om varje enskild text skall dokumenteras i detalj.

När man skall identifiera kvalitetsproblem i ett stort material kan det visa sig vara nyttigt att inleda med alldeles enkla mätmetoder, som t.ex. sådana som förkastades som markörer för kategori tidigare. En text skall inte gärna sakna innehåll helt. Då blir artikelns längd en bra indikator. Riktigt korta texter är antagligen halvfärdiga eller skadade. Riktigt långa texter kan också vara misstag, kanske någon har klistrat ihop flera texter, eller kanske systemet har blandat ihop flera filer efter en krasch någon gång för länge sedan innan materialet samlades ihop?

På samma sätt kan antalet skrivfel eller tidpunkten då en text skapats vara enkla men nyttiga indikatorer. Om sjutton texter av samma författare skapats precis samtidigt är någonting skumt, eller hur? Genom att hitta identiska eller likartade texter kan vi också motverka balansproblem i korpusen – med några förhållandevis enkla sökfraser kan man hitta alla väderprognoser i hela materialet och slänga ut dem, eller åtminstone bedöma om de behöver gallras.

Odla på lång sikt

Det här är dock ett arbete som skulle förtjäna mer uppmärksamhet. Korpuslingvistiken har väl etablerade riktlinjer för hur en bra korpus skall se ut, men i praktiken är det svårt att hitta fungerande modeller och processer för hur man skall uppnå det högt ställda målet.

En lösning kan vara att betrakta korpusar som projekt snarare än som statiska textsamlingar. Jämför med hur öppen källkod fungerar – de som använder koden tar ansvar för att rapportera eventuella problem, och i bästa fall också erbjuda korrigeringar som så småningom samlas ihop till en ny och bättre version. En inte obetydlig detalj är att alla ändringar dokumenteras, och de knepiga fallen diskuteras innan man beslutar om hur de skall åtgärdas.

Men det är alltså en modell för korpusar för forskningsbruk. På tidningsredaktionen är det säkert inte en fråga av hög prioritet att se till att alla artiklar får rätt kategori efter att de redan publicerats. Gårdagens nyheter har inte ett högt värde i den miljön. Men just därför behöver vi vara medvetna om vilka problem och felkällor det finns i materialet innan vi ger oss i kast med att utveckla ett kategoriseringssystem som motsvarar deras behov och förväntningar.