Slå ihop datamängder från Web of Science och Scopus

Jag är inne i en programmeringstunnel. Häromveckan fick jag en peer-reviewkommentar av en anonym kollega som menade att jag borde kombinera data från Web of Science och Scopus i min artikel för att få ett bredare urval från de båda databaserna, jämfört med bara en av dem.

Problemet är att dessa två (konkurrerande) arkiv inte returnerar meta-data om artiklar i samma format. Från Scopus kan man exportera till csv-filer och från Web of Science liknande tsv-filer. Men det stora problemet ligger i dels att de båda databaserna inte delar något unikt sätt att identifiera enskilda artiklar (som är kompatibelt med varandra).

Det mest intuitiva, att använda DOI-systemet, är problematiskt. Dels eftersom det är ett väldigt dåligt system att programmera mot eftersom det inte följer standarder och dels eftersom det innehåller bisarra teckenkombinationer, och att det vid utelämnande av något tecken helt plötsligt kan börja returnera hundratusentals träffar (eftersom det sorterar till tidskrift efter enskild artikel).

Så mitt problem blev: hur slå samman två datamängder samtidigt som man tar bort överlappande duplikater?

Jag skrev då en liten algoritm som försöker använda artikeltitlar som en unik identifikator för en artikel. Risken finns givetvis att två olika artiklar har samma titel, men jag tänker att den borde vara ganska liten när man arbetar med dataset under hundratusen i allafall. Resultatet blev Pythonskriptet WoScop. Ur beskrivningen:

To find duplicates, this script removes identical titles. Due to formatting inconsistencies in the Scopus and Web of Science databases, a few steps are taken to simplify the titles. The procedure works like this:

  1. Titles are converted to lower case letters only (Python’s lower() method).
  2. Only the first seven words of the title are included for further processing (to avoid long titles in multiple languages).
  3. A regular expression – [^A-Za-z0-9]+ – is applied to only allow letters and numbers (removing all special characters and spaces).
  4. The result is a string like this: aphotogrammetricapproachforassessingpositionalaccuracy, which is used as an unique identifier to avoid adding the same article twice to the final merging of the datasets.

Detta verkade fungera ganska bra på de dataset jag prövade med (se Githubsidan för länkar). Ett fåtal falska positiver (dvs. duplikater) kom med i den sammanslagna datamängden eftersom ovanstående algoritm inte (ännu) kan hantera stavfel i titlarna. Men rena stavfel är ganska ovanliga, det som skapar inkonsistens är i nio fall av tio avvikande anvädning av specialtecknen , . : ; ' " ? !, som det reguljära uttrycket ovan filtrerar bort.

Kommentera gärna om ni har förslag på förbättringar eller ser begränsningar som jag inte uppmärksammat. När man använder programmering för forskning är det viktiga inte att det fungerar så himla bra, utan att det går att beskriva hur det inte fungerar/dess begränsningar.

Kommentera

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

Time limit is exhausted. Please reload CAPTCHA.