Den senaste tiden har det hänt mycket inom Moderna tider 1936. Vår utvecklare Mathias skriver om arbetet med att färdigställa och publicera vår textkorpus med transkriberat tal från svenska journalfilmer:
Förra veckan var en väldigt hektisk vecka för Moderna tider 1936. Vi hade en sprint för att kunna släppa den första versionen av vår Journal Digital Corpus, samt de två biblioteken som används för att skapa den, innan terminslutet. Arbetet med Journal Digital-samlingen påbörjades under hösten och kommer fortsätta med det analytiska arbetet under den kommande höstterminen. Det har alltså tagit lite drygt ett läsår bara för att förbereda materialet för analysen – vilket när allt kommer omkring är ganska snabbt. Trots att vi har en lång lista med småsaker som jag gärna löst innan vi släppte dem, är kvaliteten tillräckligt bra – och vi kommer mycket snabbare hitta och åtgärda ytterligare felkällor genom att göra korpus och kod allmänt tillgängliga.
Korpusen är en transkription av arkivet Journal Digital, cirka 5200 filmer (860 timmar speltid) som vi har transkriberat både tal och textskyltar från. Totalt består denna första version av korpusen av cirka två miljoner talade ord och 300 000 skrivna ord. Detta kommer troligtvis ändras i takt med att vi grottar ner oss i korpusen under analysen i höst, då jag förväntar mig att vi kommer hitta fel i korpusen och uppdaterar transkriptionsverktygen.
Det första biblioteket, SweScribe, började som en fortsättning av projektets tidigare experiment med automatiserade transkriptioner av tal. Det visade sig att mycket hade hänt inom fältet sedan dess och Robert påbörjade utvecklingen av SweScribe. En stor del av problemet med denna sortens generativa modeller är utvärderingen, specifikt att ta fram pålitlig annoterad data att utvärdera dem mot. Därför har Robert spenderat många oglamorösa timmar det gångna året med att uppmärksamt titta och lyssna på journalfilm för att säkerställa att våra s.k. Ground Truth var korrekta. Sådant kan livet som forskningsassistent vara. Totalt har vi en testuppsättning med 89 transkriptioner som vi utvärderade verktyget mot – och en mycket tillfredsställande felprocent på ~7% (vilket inkluderar namn). SweScribe kan installeras genom en enkel python -m pip install “swescribe[whisperx]”
. Det kräver dock en maskin med GPU och Python 3.10 – en bieffekt av att ett av kärnbiblioteken kräver det. Efter installationen är det bara att köra swescribe -i [input file]
.
Det andra verktyget, stum, hittar och transkriberar textskyltarna i filmerna. Detta började med att någon frågade:
– “Om modellerna är så bra på att transkribera tal, borde det inte vara enkelt att också transkribera textskyltarna?”
– “Jovisst! Det svåra kommer vara att filtrera ut det andra, sedan är det bara att köra genom en OCR-motor”, svarade jag, innan jag lade till:
– “Och det borde inte vara så svårt att filtrera bort dem!” Övertygad om att det fanns tillgängliga lösningar som det bara var att plugga in i en pipeline.
Sedan gick det som det ofta går: jag hittade inga tillgängliga lösningar och snickrade ihop en som fungerar bra på den testdata (ca 100 bildrutor) vi skrapat ihop. Två saker som gjort processen oförutsägbart svårare är att textskyltarna klippts ner, ofta till en enda bildruta, och att cirka hälften av skyltarna (kanske hela filmen?) är spegelvända. Likt SweScribe kan stum installeras via Python med -m pip install stum
och köras med stum -i [input file]
.