Uppdateringar Genuskollen

I helgen fortsatte jag att medborgarprogrammeragenuskollen.se (och dess algoritm gendercounter.py). Jag gjorde några uppdateringar som jag tror ökar funktionaliteten. Här kommer några tekniska minnesanteckningar.

  1. Jag lade till en funktion för att detektera personliga pronomen hen/hon/han med varianter. Här finns det vissa felkällor, till exempel är ju “Hans” både ett personligt pronomen och ett namn. Jag skrev tre funktioner för strängmatchning via reguljära uttryck som ser ut så här:
    def raknahen():
        hen = 0
        henom = 0
        hens = 0
        for t3 in text:
            henregexp = re.findall(r'\bhen\b', t3, flags = re.IGNORECASE)
            henomregexp = re.findall(r'\bhenom\b', t3, flags = re.IGNORECASE)
            hensregexp = re.findall(r'\bhens\b', t3, flags = re.IGNORECASE)
            if henregexp:
                hen += 1
            elif henomregexp:
                henom += 1
            elif hensregexp:
                hens += 1
            else:
                continue
        return(hen, henom, hens)

    Jag är inte helt säker på hur etablerade “henom” och “hens” är. De är ännu väldigt ovanligt förekommande. Kommentera gärna!

  2. Jag lade till funktionalitet för att ladda upp filer i formaten txt, pdf och docx, och säkrade upp filnamnen med werkzeug secure_filename. Det svåra i detta avsende är egenligen pdf. Det är ett omöjligt filformat på flera sätt och det tar väldigt stora systemresurser i anspråk att extrahera ut hyfsat ren text. Jag landade i pdfminer3k som är enkelt att använda på bekostnad av ganska långsam prestanda. Som tur är kommer nog inte genuskollen att behöva hantera många samtida användare så jag klarar mig nog med den nuvarande klena hårdvaran.
  3. Jag lade till en funktion som sparar själva resultatet av genomsökningen så att man enkelt kan länka till den. Här är ett exempel. Det uppenbara vore att strössla en sådan delningsfunktion med knappar till facebook, twitter, pinterest etc för att underlätta delningen. Men å andra sidan utsätter man då användaren för spionskript som “ringer hem” till Silicon Valley. Det är inte helt entydigt vilken lösning som är den bästa här. Vad tycker ni?

Nästa steg i detta lilla hobbyprojekt blir nog att öka exaktheten i själva namnsökningen. Den konventionella strängmatchningen är inte tillräckligt exakt. Det finns ju namn som inte är namn, exempelvis “Mina”, “Hans”, “De”, “Dina” osv. Här har jag nu börjat snegla på olika lösningar för Named Entity Recognition, en funktion som finns bland annat i Korps annoteringslabb. På så sätt skulle man kunna förprocessera texten så att man får fram namn på en syntaktisk nivå innan man sedan matcharn namn/kön. Det finns gränssnitt för att integrera Standford NER med Python (och andra språk). Detta kräver dock lite inläsningsarbete. En annan helg!

 

 

 

Genuskollen

Häromdagen upptäckte jag att man kan köra Pythonskript på en webserver. På så sätt slipper användaren interagera med terminalgränssnittet. Eftersom beräkningarna körs på en fjärrserver behöver man inte ens ha Python installerat. Allt detta är ju självklarheter, men det kan ibland innebära en hel del handpåläggning innnan man får det att fungera.

Som jag tidigare bloggade om har jag börjat laborera med ett skript som jag kallar för Gendercounter. Det är detta skript som är motorn för själva beräknandet under huven på webtjänsten. Men nu kan man alltså enkelt räkna kvinnliga och manliga namn i vilken text som helst.

Resultat: Genuskollen (beta)

Men, det finns flera metodproblem som måste lösas innan detta blir någorlunda exakt. Därför tar jag gärna emot buggrapporter och observationer om felkällor så att jag kan förbättra tjänsten och skriptet framöver.

För den som vill köra detta på stora textmängder och vill göra mera avancerade saker är det bara att ladda ned källkoden.

Mäta gubbslem i texter – ett program

Citeringens praktiker är performativa, något som  Sara Ahmed reflekterar över inför sin kommande bok. Hon har valt att inte citera en enda vit man. Men hur ser det ut i vilken text som helst?

För det mesta reflekterar vi inte över vilka vi citerar eller omnämner när vi skriver. Ofta går det av bara farten och helt plötsligt sitter vi med en riktigt gubslemmig text. Med “citering” kan man förstå även intervjupersoner och vilka vi skriver om i texterna. På så sätt kan man även inkludera journalistiska texter i analysen.

Jag skrev ett litet skript som räknar förekomsten av manliga och kvinnliga namn i en text. Programmet heter Gendercounter (ursäkta min dåliga fantasi). Programmet kollar varje ord i en text och matchar det sedan mot två listor, en med manliga namn och en med kvinnliga. Det finns förvisso ett flertal metodologiska problem med detta angrepssätt (namn är inte en hundraprocentig enkönade). Men man kan ändå använda detta som en första indikator.

Här kommer några tester jag gjorde. (uppdaterade efter att jag hittat några buggar)

Jag började med den Statliga offentliga utredningen Om Sverige i framtiden – en antologi om digitaliseringens möjligheter (ren textversion länkad). Resultat: 281 Kvinnor, 597 Män.

Sedan en lite äldre text, Den sociala och kulturella utvecklingen från Oskar I:s tid till våra dagar samt De politiska förhållandena under Karl XV:s, Oscar II:s och Gustaf V:s regering 1859-1923 Resultat: 418 Kvinnor, 1447 Män.

Till sist, Teknisk tidskrift årgång 1962 (1368 sid.) Resultat: 537 Kvinnor, 2472 Män.

Skriptet är än så länge bara ett test. Men det borde finnas intressanta saker man kan göra med denna form av kvantitativa innehållsanalys, givet att man har i bakhuvudet de metodologiska fallgroparna.

Testa gärna skriptet själva, instruktioner finns på Github-sidan. Fråga gärna i kommentarerna om något är oklart.

Förslag och kommentarer mottages gärna!