Platser i svenska wikipedia

Som förberedelse för utvecklingen av appen Kultursafari (se Google Play) har jag har ägnat lite tid att stoppa in artiklarna från den svenska delen av Wikipedia i ett sökbart index. Wikipedia är enkelt att ladda hem från deras nedladdningssida (för svenska delen), i XML-format. Det jag laddat ner är själva wiki-texten, vilken är ren text med formatering för bl.a. wiki-länkar. Filen är på ungefär 2.5GB. Med ett script för att importera XML-data till databasen så går detta på ungefär 15 minuter.

Många av sidorna som finns på Wikipedia handlar om sådant som kan kopplas till platser. Därför finns koordinater angivna på många av sidor. Tyvärr är inte koordinaterna en del av XML-data, utan den finns i ett wiki-format. En positionsangivelse kan se ut såhär:
{{coord|58.410734|N|15.621481|E|region:SE_type:landmark|display=title}}
och vara placerad någonstans i texten. I detta fall är koordinaterna angivna i WGS84 i decimalform. Det är också vanligt att koordinaterna är givna i grader, minuter, sekunder-format. Förutom positionen finns en ”typ” angiven, vilken oftast är satt till ”landmark” eller ”city”. För att kunna använda samma typ av XML-importeringsscript så har jag valt att gå igenom XML-filen, identifiera positionsangivelser och skriva om XML-filen med två nya XML-taggar, position och positionstyp.

Jag har valt att indexera text och koordinater i Solr. Detta gör att det går enkelt att göra fulltext-sökningar i Wikipedia-texten och att det går fint att använda Solrs stöd för ”spatial search” för att göra sökningar på artiklar som beskriver platser som ligger i närheten av en angiven koordinat, och att t.ex. söka ut sidor i svenska delen av Wikipedia som handlar om platser som ligger i Sverige. Index och text tillsammans tar ungefär 4GB utrymme.

Det verkar finnas ungefär 1.26 miljoner artiklar (exklusive omdirigeringar) i svenska Wikipedia, i alla fall i den version jag laddat hem från början av 2013. Det ser ut att vara ungefär mer än 200.000 av sidorna som är platsbestämda. Många av dessa har en ganska ”grov” platsangivelse, och många gäller länder och städer, vilket inte är så intressant. Av dessa så är det ungefär 15.000 som anger platser som ligger i Sverige. Siffran är framtagen genom att söka på platser inom en ”box” som ungefär motsvarar Sveriges yta (men inkluderar en liten del av Norge också).

Som ett första steg satte jag upp ett API för att göra spatiala sökningar, i nästa steg ska jag se om jag kan komma på något roligt sätt att kombinera spatiala sökning med sökningar i texterna. Det krävs ganska mycket jobb om man ska använda texterna till något, eftersom de är wiki-formaterade. Jag har parsat texterna med hjälp av Text_Wiki, men urspungsversionen av detta verktyg är långt från perfekt vilket gjort att jag behövt göra många små justeringar.

Comments are closed.