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!

 

 

 

Kommentera

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

Time limit is exhausted. Please reload CAPTCHA.