Hopp til innhold

Bruker:Jeblad/Behandling av data med OpenRefine

Fra Wikipedia, den frie encyklopedi

Høsting av data med OpenRefine beskriver de grunnleggende trinnene for å høste eksterne data med OpenRefine og laste dem opp til Wikidata. De kan da gjenbrukes i Wikipedia via mekanismene for å overføre data fra Wikidata (repository) og til Wikipedia (client). OpenRefine er et verktøy som er laget for vasking av rotete data.

Høsting av data

[rediger | rediger kilde]

De første dataene en henter er ofte fra et nettsted eller en oversikt som ikke kan høstes automatisk. Dermed må disse skrives inn eller vaskes med et passende verktøy. Det er nokså vanlig å støte på problemer med formatering, eller at kilden leverer en fil som ikke er helt på riktig format.

Hvis det er en tekstfil så kan jEdit være et tilstrekkelig verktøy. Dette er et tekstredigeringsverktøy som har utvidete muligheter for tekstredigering med regulæruttrykk.

Hvis det er en html-tabell inne i en webside, så kan det ofte være nok å fjerne tekst fra html-siden og så forsøke å laste den inn i OpenOffice.org Calc. En ender da gjerne opp med flere kolonner enn det en trenger, og de må fjernes før dataene lastes inn i OpenRefine.

Noen ganger må en trikse litt med forskjellige verktøy før en ender opp med en fil som OpenRefine kan lese.

Filen Wikipedia:Lemmaliste for Andre verdenskrig er en oversikt som er lagd over titler fra blant annet Norsk krigsleksikon.[1] Mange av oppføringene er felles, men ikke alle, og mange av dem mangler i Wikipedia. Det siste ser en av at lenkene blir røde.

Først tas lista inn i jEdit, og den innledende teksten fjernes med regulæruttrykket "\n*==\s*[A-ZÆØÅ]\s*==\n*" og erstatningsuttrykket "\n". Alle steder hvor vi har en overskrift får vi nå et enkelt linjeskift.

Dernest brytes hver oppføring som har pipe-karakteren opp i to oppføringer, en for første kolonne og en for andre kolonne. Dette gjøres med regulæruttrykket "#\s*\[\[(.*?)\|(.*?)\]\]" og erstatningsuttrykket "$1\t$2". Vi har nå erstattet mange av radene med to separate verdier skilt med en tab-karakter.

Dernest erstattes hver av radene som mangler pipe-karakteren med en enkelt oppføring og etterfulgt av en tab-karakter. Dette gjøres med regulæruttrykket "#\s*\[\[(.*?)\]\]" og erstatningsuttrykket "$1\t". Dette er nesten som foregående uttrykk.

Vi har et ørlite problem gjemt inne blant radene. Noen celleverdier bruker hermetegn i teksten. Samtidig bruker OpenRefine hermetegn for å definere grensene for tekststrenger. For å unngå problemet må vi gjøre de om til noe OpenRefine kan håndtere, enten til en html-entitet eller til andre tegn. Vi kan gjøre de om til entiteter ved å bytte '"' med """, eller ved å bruke sitattegn "[^\t\n]*" og erstatningsuttrykket "«$1»". I begge tilfeller må vi sjekke om alle hermetegn er borte fra teksten.

Øverst setter vi inn «Tittel» og «Invertert» med en tab imellom. Nå har vi en tab-separert «fil» som vi kan kopiere inn til OpenRefines clipboard. Vi kan også lagre den unna, og laste den inn om vi ønsker det.

Når teksten er kopiert over trykker vi på «Next» og deremed har vi første parsing av filen. Den skal være tab-separert, og sjekk at navn slik som «Johs Andenæs» får æ-karakter og ikke noe annet rart. Hvis det skjer så må filen parses med et spesifikt karaktersett, som oftest UTF-8. Sjekk også at «Parse next» er huket av hvis det finnes overskrifter. Sjekk også andre tilfeller av spesiell prosessering.

Så setter vi Project name til «Andre verdenskrig», trykker på Create project, og vi har lagd vårt første prosjekt. Hvis alt har gått bra så står det nå antall konverterte linjer, og for eksempelet er det enten 1043 eller 1044 rader avhengig av om vi har en avsluttende tom rad i fila vår.

Vasking og beriking av data

[rediger | rediger kilde]

Vasking av data skjer ved å definere regler for hvordan data skal se ut (for eksempel via fasetter i OpenRefine) eller ved å sammenholde dataene med andre datasett og identifisere avvik (for eksempel via reconciliation i OpenRefine).

Vasking kan medføre at avvik påvises og at celledata endres (for eksempel ved at skriveform på navn korrigeres) eller at rader forkastes fordi nøkkelposter ikke er i samsvar med hva som brukes i andre datasett. En måte å crowdsource slike endringer er å eksportere dataene til et Google-regneark eller lignende, ofte etter at en første prosessering er gjort.

Forkasting av rader vil ofte skje fordi rader ikke kan kobles til poster i Wikipedia eller i Wikidata. Vi ønsker ikke å opprette poster som ikke er i bruk, eller dubletter, derfor er det viktig å holde en restriktiv linje når en godkjenner koblinger etter reconciliation i OpenRefine.

Etter hvert har vi lagt inn signaturer i prosjektet om Andre verdenkrig, samtidig som vi har laget en liste over forfattere. Denne lista kan vi bruke for å vaske signaturer i prosjektet, samtidig som det settes inn fullt navn på forfatterne. Dette navnet kan igjen vaskes mot Wikidata sine personoppføringer, eller vi kan gjøre akkurat den vaskingen manuelt. Det er viktig at vi gjør denne siste vaskingen slik at oppføringer kobles til riktig element (dvs person).

For å vaske mot Wikidatas oppføringer brukes WMFLabs Reconcile API. Dette legges inn i ved å bruke knappen «Add…» nederst til høyre i «». For å komme til denne åpnes dropdown-menyen på en passende kolonne og «Start reconciliation» velges.

Opplasting av data

[rediger | rediger kilde]

Det er flere metoder som kan brukes for å laste opp data til Wikidata, men det er to metoder som er enkle for tilfellet at en har en bot og tilfellet der en ikke har noen bot.

Det er selvfølgelig enklest hvis noen lager den nødvendige integrasjonen mellom OpenRefine og Wikidata, men så langt har det ikke skjedd.

Opplasting med bot

[rediger | rediger kilde]

I botrammeverket mw:Pywikibot finnes det et script mw:Manual:Pywikibot/claimit.py som kan brukes for å laste opp utsagn til Wikidata. På grunn av programmets struktur må en starte det på nytt hver gang en trenger å endre på argumentene, det vil i praksis si hver gang en skal definere et nytt element.

Siden på Wikidata beskriver kun hvordan en legger til utsagn med property-items par, men det er nokså enkelt å utvide scriptet med nye datatyper.

Opplasting uten bot

[rediger | rediger kilde]

På WMFlabs finnes det en side QuickStatements. Denne tar en spesielt formatert tekst og lager tilhørende utsagn på Wikidata. Teksten som brukes for å definere utsagnene er nokså fleksibel, slik at en kan definere flere typer utsagn. En kan også lage nye elementer for utsagnene, og en kan lage flere nye elementer i en enkelt kjøring.

Referanser

[rediger | rediger kilde]
  1. ^ Norsk krigsleksikon 1940-45. [Oslo]: Cappelen. 1995. ISBN 8252525490 (Bokklubben kunnskap og kultur : ib.) Sjekk |isbn=-verdien: invalid character (hjelp). 

Eksterne lenker

[rediger | rediger kilde]