• No results found

Automatisch verzamelen en samen- voegen van bibliografische gegevens

N/A
N/A
Protected

Academic year: 2021

Share "Automatisch verzamelen en samen- voegen van bibliografische gegevens"

Copied!
43
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Bachelor Informatica

Automatisch verzamelen en

samen-voegen van bibliografische gegevens

Justin van Wageningen

June 16, 2015

Supervisor(s): Raphael ‘kena‘ Poss (UvA)

Inf

orma

tica

Universiteit

v

an

Ams

terd

am

(2)
(3)

Abstract

Het onderhouden van een bibliografie en deze presenteren op een website kost onderzoekers een hoop tijd. Deze scriptie omschrijft een tool die ontwikkeld is om bibliografische gegevens te verzamelen en waar nodig samen te voegen. Daarnaast zal de tool zoeken naar PDF bestanden en deze samenvoegen met de BibTEX equivalent. Uiteindelijk is het mogelijk met deze gegevens een website te genereren. Er zal onder andere onderzocht worden wat de beste manier is om PDF bestanden en BibTEX bestanden aan elkaar te linken.

(4)
(5)

Contents

1 Inleiding 5

1.1 Context . . . 5

1.1.1 Waar is vraag naar? . . . 5

1.2 Probleemstelling . . . 5 1.3 Onderzoeksvragen . . . 6 1.4 Strategie . . . 6 1.5 Uitdagingen . . . 6 1.6 Organisatie . . . 6 2 Achtergrondinformatie 9 2.1 Wat is BibTEX ? . . . . 9 2.2 Gerelateerde tools . . . 9 2.2.1 Mendeley . . . 9 2.2.2 EndNote . . . 10 2.2.3 Zotero . . . 10 2.2.4 RefWorks . . . 10 2.3 Gebruikte middelen . . . 10 2.3.1 Python . . . 10 2.3.1.1 BibTEX parser . . . . 10 2.3.1.2 LATEX encoder . . . . 11 2.3.1.3 Fuzzywuzzy . . . 11 2.3.2 Dropbox . . . 11 2.3.3 PDFtoText . . . 11

2.3.4 Optioneel: Google Scholar . . . 11

2.3.5 Optioneel: iNotify . . . 12

3 Functioneel ontwerp 13 3.1 Flowchart . . . 13

3.2 Configuratie mogelijkheden . . . 13

3.2.1 Waar kan de gebruiker de configuratie aanpassen? . . . 14

3.3 Vergelijken van BibTEX bestanden . . . . 14

3.3.1 Verschillende soorten ratio vergelijking . . . 14

3.3.2 Normalisatie . . . 14

3.3.2.1 Normalisatie titel . . . 15

3.3.2.2 Normalisatie jaar . . . 15

3.3.2.3 Normalisatie citatiesleutel . . . 15

3.3.2.4 Normalisatie maand . . . 15

3.3.2.5 Normalisatie van namen . . . 15

3.4 Samenvoegen BibTEX bestanden . . . . 16

3.4.1 Formele definitie samenvoegen . . . 16

3.4.2 Specifieke vormen van samenvoegen . . . 16

(6)

3.6 PDF matching . . . 17

3.6.1 Google Scholar . . . 17

3.6.2 PDFtoText . . . 17

4 Implementatie 19 4.1 Overzicht . . . 19

4.2 Parseren van de configuratiemogelijkheden . . . 19

4.3 Zoeken naar BibTEX en PDF bestanden . . . . 20

4.4 Parseren van BibTEX bestanden . . . . 21

4.5 Normaliseren BibTEX bestanden . . . . 21

4.5.1 Normalisatie titel . . . 21

4.5.2 Normalisatie namen . . . 21

4.5.2.1 Zelf ontwikkelde algoritme . . . 21

4.5.2.2 Pybtex . . . 22

4.6 Bestanden vergelijken . . . 22

4.6.1 Vergelijken van BibTEX bestanden . . . . 22

4.6.2 Zoeken naar juiste BibTEX voor PDF . . . . 23

4.6.2.1 Met Google Scholar . . . 23

4.6.2.2 Zonder Google Scholar . . . 23

4.7 Voorbeeld . . . 24

4.8 Genereren van website . . . 24

4.9 Andere toepassing tool . . . 25

4.10 Packaging . . . 25 5 Evaluatie 27 5.1 Kwantitatieve experimenten . . . 27 5.1.1 Methodologie . . . 27 5.1.2 Resultaten experimenten . . . 28 5.2 Gebruikersonderzoek . . . 30 5.2.1 Methodologie . . . 30 5.2.2 Resultaten gebruikersonderzoek . . . 31 6 Discussie 35 6.1 Hoe wordt ervoor gezorgd dat er geen duplicaten voorkomen in de gezamenlijke opslag? . . . 35

6.2 Hoe wordt ervoor gezorgd dat de tool niet teveel middelen gebruikt? . . . 35

6.3 Hoe wordt ervoor gezorgd dat de tool past in de workflow van de gebruikers? . . 36

6.4 Wat is de beste manier om PDF en BibTEX bestanden matchen? . . . . 36

6.5 Overige discussie . . . 37

7 Conclusie 39 7.1 Samenvatting . . . 39

7.2 Zal de tool gebruikt worden? . . . 39

(7)

CHAPTER 1

Inleiding

Wetenschappers verhuizen vaak van de ene onderzoeksgroep naar de andere tijdens hun carri`ere. Verhuizen betekent dat er een hoop data meegenomen word. Het werk dat door de onderzoeker tot aan de verhuizing is gedaan, wordt meegenomen naar de volgende werkgever. De website die bij de nieuwe onderzoeksgroep verkregen wordt, moet uiteraard opnieuw gevuld en bijgehouden worden.

1.1

Context

Onderzoekers gebruiken voor het onderhouden van hun bibliografie software naar zijn of haar keuze of houden dit handmatig bij. Het is wenselijk om een groepswebsite up-to-date te houden en te zien waar de groep op dit moment mee bezig is.

1.1.1

Waar is vraag naar?

Een gedeelte van het vooronderzoek bestond uit het doen van korte interviews met onderzoekers. Hieruit is gebleken dat er vraag is naar de volgende drie toepassingen die de onderzoekers moet helpen in hun dagelijkse werkzaamheden: verbetering van METIS, gemakkelijker onderhouden van hun websites en het inkorten van referenties in hun artikelen. METIS is het systeem dat gebruikt wordt op de Universiteit van Amsterdam waarin onderzoekers hun publicaties en pre-sentaties moeten zetten voor de administratie van de Universiteit. Het programma heeft een hoop nadelen, daarom zouden ze graag wat anders willen zien. Onderhouden van websites kost de onderzoekers op dit moment veel tijd, iedereen doet dit op een andere manier. Onderzoekers krijgen vaak een maximum aantal pagina’s voor hun artikelen. Meestal zitten ze daar net over heen en moeten ze bijvoorbeeld hun referenties minimaliseren. Dit gebeurd nog vaak met de hand, een standaard hiervoor is welkom.

1.2

Probleemstelling

Het probleem van het bijwerken van de website is dat mensen hun data op verschillende manieren onderhouden. Hiervoor bestaat nog geen gezamenlijke opslag. Het kost de onderzoekers veel tijd om hun website up-to-date te houden. Tijdens het doen van onderzoek wordt er per paper of artikel vaak een bibliografie opgesteld. Hierdoor staat de informatie vaak verspreid op de computer en zitten er vaak duplicaten tussen. Het kan dus wenselijk zijn dat de data verzameld wordt op ´e´en plek en daar gedeeld kan worden met bijvoorbeeld de onderzoeksgroep. Hiervoor

(8)

is een tool ontwikkeld. Deze tool zal automatisch, met minimale input van de gebruiker, de computer doorzoeken voor bibliografische bestanden en deze bestanden gebruiken om een website te genereren.

1.3

Onderzoeksvragen

De volgende onderzoeksvragen zullen in deze scriptie behandeld worden:

• Hoe wordt ervoor gezorgd dat er geen duplicaten voorkomen in de gezamenlijke opslag? • Hoe wordt ervoor gezorgd dat de tool niet teveel middelen gebruikt?

• Hoe wordt ervoor gezorgd dat de tool past in de workflow van de gebruikers? • Wat is de beste manier om PDF en BibTEX bestanden te matchen?

1.4

Strategie

De problemen kunnen opgelost worden door het ontwerpen van een tool die de computer van de gebruiker gaat doorzoeken naar BibTEX en PDF bestanden. De bestanden zullen opgeslagen wor-den in een gezamenlijke opslag. Als er duplicate BibTEX entries zijn, zullen deze samengevoegd worden. Ook zal er een link gelegd worden tussen PDF en BibTEX bestanden. Als er een match gevonden is zal er een veld in de BibTEX entry komen met daarin een link naar de PDF.

1.5

Uitdagingen

Het ontwikkelen van de tool brengt meerdere uitdagingen met zich mee:

1. De gebruiker mag geen last hebben van het programma, het mag niet te veel middelen gebruiken.

2. De tool moet in de workflow van de onderzoeker passen.

3. Ge¨ındexeerde bestanden mogen niet, zonder veranderd te zijn, nogmaals ge¨ındexeerd wor-den.

Deze uitdagingen komen voort uit de probleemstelling. Zo mag de gebruiker geen last hebben van de tool. Als de tool een blok aan het been van de gebruiker is, doordat deze traag is of niet voldoet aan de verwachting van de gebruiker, zal de tool snel aan de kant geschoven worden en zal de gebruiker snel overgaan op de oude manier van werken. De gebruiker zou de gehele dataset die op dit moment gebruikt wordt aan moeten passen aan de tool. Het is de bedoeling dat de tool meegaat in de workflow van de gebruiker. Om te zorgen dat de tool niet te traag wordt, wordt er onderzocht of de ge¨ındexeerde bestanden niet nogmaals ge¨ındexeerd dienen te worden.

1.6

Organisatie

Allereerst zal er in hoofstuk 2 achtergrond informatie gegeven worden over wat BibTEX is, welke gerelateerde tools er bestaan en welke middelen gebruikt gaan worden om de tool te ontwikkelen. Daarna zal er in hoofdstuk 3 een ontwerp gegeven worden waarin verder in wordt gegaan op hoe de tool werkt en specifiek hoe de normalisatie en het samenvoegen van bestanden werkt. Vervolgens zal er uiteengezet worden in hoofdstuk 4 hoe de tool ge¨ımplementeerd is. Daarna zullen er een aantal experimenten, in de vorm van een kwalitatief en een kwantitatief onderzoek, in hoofdstuk 5

(9)

met de tool gedaan worden. In hoofdstuk 6 zullen de resultaten van deze experimenten besproken worden.

(10)
(11)

CHAPTER 2

Achtergrondinformatie

De tool gaat op zoek naar zogenaamde BibTEX en PDF bestanden, deze zal de tool samenvoe-gen en opslaan in een map die automatisch gesynchroniseerd zal worden met de rest van de onderzoeksgroep.

2.1

Wat is BibTEX ?

BibTEX [5] is een bestandsformaat en kan gebruikt worden als database voor bibliografische gegevens. Deze bibliografische gegevens kunnen in LATEX gebruikt worden om referenties aan het gemaakte werk te koppelen. BibTEX bestaat uit een entry, deze entry bestaat uit velden en de velden bestaan uit records. In het onderstaande voorbeeld is een entry met citatiesleutel ’Justin2015’ weergegeven met de records author, title en year. Het veld author bestaat uit, in dit geval ´e´en record met daarin, de naam van de auteur. Het veld title bevat een record met daarin de titel van de publicatie en het veld year bevat het record die het publicatiejaar weergeeft. Uiteraard kan bijvoorbeeld het veld author uit meerdere records bestaan.

@ b a c h e l o r { J u s t i n 2 0 1 5 , a u t h o r = { J u s t i n van Wageningen } . t i t l e = {{G} e a u t o m a t i s e e r d e {B} i b {B} a s e i n t e r f a c e } , y e a r = {2015} }

2.2

Gerelateerde tools

Volgens Wikipedia [1] bestaan er veel tools die behulpzaam kunnen zijn bij het bijhouden van bibliografische gegevens. De volgende tools zullen behandeld worden: Mendeley, EndNote, Zotero en RefWorks.

2.2.1

Mendeley

Mendeley is gratis een referentie management programma, met een online en offline interface, en kan meer dan alleen het bijhouden van een bibliografie. Het tracht het onderzoeksprocess te stroomlijnen [3]. Hensley claimt dat Mendeley makkelijk te leren is en dat Mendeley een uitge-breide PDF functionaliteit heeft. Zo kan het PDF metadata importen, automatische naamgeving

(12)

en opslaan. Ook kunnen er notities gemaakt op papers en artikelen en deze kunnen gedeeld wor-den met collega’s [7]. Nadeel van het importeren van PDF metadata is dat het alleen bij de webinterface kan. Mendeley kan geen website genereren.

2.2.2

EndNote

EndNote is de meest gebruikte referentie manager in de wetenschap [3]. Het heeft een web- en desktopinterface. EndNote kan een publicatie profiel maken en er kan samengewerkt worden met andere onderzoekers. Nadeel is dat de tool niet intu¨ıtief aanvoelt en het niet gratis is. EndNote kan referenties exporteren in de door jou gekozen style [7].

2.2.3

Zotero

Zotero is een free-to-use referentie manager. Volgens Hensley is het intu¨ıtief in gebruik en blinkt uit op het gebied vinden van metadata op het internet. Zotero synchroniseerd data tussen computers.

2.2.4

RefWorks

RefWorks is een web-based referentie management pakket, waarvoor jaarlijks betaald moet wor-den. Het pakket kan referenties verkrijgen uit andere pakketen, RSS feed en websites. Hensley claimt dat het pakket lastig in gebruik is, zo bestaat er voor elk artikel een ander proces om deze te exporteren.

2.3

Gebruikte middelen

In deze paragraaf wordt een opsomming gegeven van de gebruikte middelen. Hoe de middelen werken en waarvoor ze gebruiken wordt globaal toegelicht.

2.3.1

Python

Voor het ontwikkelen van de tool wordt de programmeertaal Python gebruikt. Python op zichzelf heeft veel features die helpen bij het manipuleren van tekst. De tool past vaak manipulatie van tekst toe. Als aanvulling worden packages gebruikt. Deze packages zijn over het algemeen open-source, hiervan is de code openbaar en kan er precies gezien worden wat de code doet. Eventuele aanpassingen kunnen hierin gemaakt worden. Deze tool maakt hoofdzakelijk gebruik van drie packages: BibTEX parser, Fuzzywuzzy en LATEX encoder.

2.3.1.1 BibTEX parser

De package BibTEX parser zorgt ervoor dat een BibTEX bestand, dan wel niet met meerdere entries, omgezet kan worden naar een zogenaamde BibDatabase. Deze BibDatabase is een Python dictionary die de records van de BibTEX bestanden representeerd. In de tool worden hiermee BibTEX bestanden geopend om vergeleken en eventueel samengevoegd te worden. Ook bestaat de mogelijk om de BibDatabase weer om te zetten in een BibTEX bestand.

@ a r t i c l e { Dasdan1999 ,

a u t h o r = { Dasdan , A l i and I r a n i , Sandy S . and Gupta , R a j e s h K. } , j o u r n a l = { Annual ACM IEEE D e s i g n Automation C o n f e r e n c e } ,

p a g e s = { 3 7 } ,

(13)

optimum c o s t t o t i m e r a t i o p r o b l e m s } } , y e a r = {1999}

}

Bovenstaande entry zal omgezet worden naar de volgende Python dictionary: {

u ’ t i t l e ’ : u ’ E f f i c i e n t a l g o r i t h m s f o r optimum c y c l e mean and optimum c o s t t o t i m e r a t i o problems ’ ,

u ’ j o u r n a l ’ : u ’ Annual ACM IEEE D e s i g n Automation C o n f e r e n c e ’ ,

u ’ a ut ho r ’ : u ’ Dasdan , A l i and I r a n i , Sandy S . and Gupta , R a j e s h K. ’ , ’ i d ’ : ’ Dasdan1999 ’ , u ’ y e a r ’ : u ’ 1 9 9 9 ’ , ’ type ’ : u ’ a r t i c l e ’ , u ’ pages ’ : u ’ 3 7 ’ } 2.3.1.2 LATEX encoder

De packages LATEX encoder geeft ons de mogelijkheid om LATEX specifieke symbolen om te zetten naar unicode. Zo wordt bijvoorbeeld ’$\mu$’ omgezet naar de griekse letter µ. Dit is nodig tijdens het normaliseren van een string.

2.3.1.3 Fuzzywuzzy

Fuzzywuzzy is een library ontwikkeld voor Python die de ratio van twee strings kan berekenen. Waarbij een ratio van 100 betekent dat de twee strings identiek zijn en waarbij een ratio van 0 betekent dat de strings volledig niet hetzelfde zijn. Een voorbeeld hiervan is bijvoorbeeld:

f u z z . r a t i o ( ” t h i s i s a t e s t ” , ” t h i s i s a t e s t ! ” )

Dit voorbeeld geeft een ratio van 96, deze strings verschillen dus 4% van elkaar. Naast ratio zijn er nog drie methoden ge¨ımplementeerd in de package, hierover meer in sectie 4.1.

2.3.2

Dropbox

Dropbox wordt gebruikt als gezamenlijke opslag. Dropbox zorgt ervoor dat gebruikers die een map met elkaar delen, dat deze map op elke computer er altijd hetzelfde uitziet en dezelfde inhoud heeft. Deze tool zal helpen met het synchroniseren van de data tussen de gebruikers.

2.3.3

PDFtoText

PDFtoText is een tool die gebruikt wordt om een PDF bestand om te zetten naar platte tekst. Hiervoor wordt het in de tool ook gebruikt.

2.3.4

Optioneel: Google Scholar

Google Scholar is Google’s zoekmachine waar gebuikers naar wetenschappelijke artikelen kunnen zoeken. Hiervoor is een Python library geschreven. Door een query op te bouwen uit de eerste 20 woorden van de PDF, kan de library de BibTEX entry ophalen bij Google Scholar. Het grootste nadeel van deze tool is dat Google alleen ’menselijke’ gebruikers toelaat en houdt niet van geautomatiseerde zoekacties. Als Google ontdekt dat het niet een mens maar een computer is die gebruik maakt van Google zal deze computer voor een geringe tijd geblacklist worden. Dit

(14)

houdt in dat er tijdelijk niet van de dienst gebruik gemaakt kan worden. Dit is niet wenselijk, vandaar dat het een optionele feature van de tool word. Het idee om Google Scholar te kunnen gebruiken om gegevens op te halen komt uit de door Mendeley gebruikte methode. Mendeley maakt gebruik van de tool PDFMeat [2], wat staat voor PDF Metadata Acquisition Tool. Hierin wordt het idee geopperd om Google Scholar te gebruiken voor incorrecte of ontbrekende metadata van een PDF.

2.3.5

Optioneel: iNotify

iNotify houdt bij of bestanden gewijzigd zijn of niet. Het kan als het ware bestanden ’tracken’. Als het merkt dat er een bestand gewijzigd is, kan daar een actie aan gehangen worden. Dit is zeer wenselijk, maar gezien het tijdschema een optionele feature geworden.

(15)

CHAPTER 3

Functioneel ontwerp

In dit hoofstuk wordt verder ingegaan op hoe de tool werkt en specifiek hoe de normalisatie en het samenvoegen van bestanden werkt.

3.1

Flowchart

3.2

Configuratie mogelijkheden

De gebruiker krijgt een aantal configuratie mogelijkheden. De gebruiker kan kiezen of ze ge-bruik willen maken van de Google Scholar feature. Daarnaast zal de gege-bruiker zelf de controle houden over de bestanden die doorzocht worden. De gebruiker zal hiervoor folders aangeven die doorzocht mogen worden. Als alle bestanden gevonden en eventueel samengevoegd zijn, zal de

(16)

gebruiker een keuze moeten maken welke BibTEX bestanden er getoond moeten worden op de persoonlijke site en welke getoond moeten worden op de groepswebsite.

Een aantal configuratie mogelijkheden zijn voortgekomen uit gesprekken die gevoerd zijn met onderzoekers. Niet alle onderzoekers vonden het fijn dat hun computer zonder hun medeweten doorzocht wordt. Andere configuratie mogelijkheden zijn voortgekomen uit ontwerp beslissingen, zo is het lastig op te maken uit bestanden of het een groepspublicatie was of niet.

3.2.1

Waar kan de gebruiker de configuratie aanpassen?

De tool krijgt een configuratie bestand waarin de configuratie in een geordende manier aangegeven kan worden. Dit bestand wordt opgedeeld in verschillende secties, hierdoor is het makkelijk on-derscheid te maken tussen de verschillende elementen. Zo zal er een sectie bibtex zijn, maar ook een sectie pdf. Deze kunnen hierdoor op verschillende plekken opgeslagen of gezocht wor-den.

3.3

Vergelijken van BibTEX bestanden

Entries van BibTEX bestanden moeten vergeleken worden om te kijken of er duplicaten tussen zitten. Deze duplicaten moeten vervolgens samengevoegd worden. Het vergelijken van de entries wordt gedaan op drie velden: type, title en year. Dit zijn drie factoren die relatief simpel te vergelijken zijn en toch veel zeggen over de gelijkenis van de entries. De velden waarop vergeleken wordt, moeten eerst worden genormaliseerd (met uitzondering van het type van de entry). De velden type en year worden exact vergeleken, maar bij title is een exacte vergelijking niet mogelijk. Een titel hoeft niet per se precies hetzelfde zijn, hiervan wordt de ratio berekend. De ratio verteld ons hoeveel de strings op elkaar lijken, onderzoek moet nog uitwijzen wat de beste ratio is.

3.3.1

Verschillende soorten ratio vergelijking

Ratio wordt berekend voor twee te vergelijken strings. De uitkomst van de ratio is het percentage van de hoeveelheid overeenkomsten van de twee strings. Deze ratio kan op vier manieren berekend worden.

• Ratio: Hoeveel procent van de strings komen overeen?

• Partial ratio: Hoeveel procent van de substring zit er in de string?

• Token sort ratio: Gesorteerde woorden vergelijking in plaats van letters vergelijken • Token set ratio: Unieke woorden vergelijken

• Extract from list: Strings vergelijken met lijst en beste keuze terug geven

3.3.2

Normalisatie

De normalisatie van de te vergelijken velden moet gedaan worden om ervoor te zorgen dat er bijvoorbeeld in de titel geen vreemde tekens staan. BibTEX maakt gebruik van accolades in de opmaak, dit zegt echter niets over de inhoud van de titel. Tevens kan er LATEX opmaak gebruikt worden, deze moet ook gefilterd worden.

(17)

3.3.2.1 Normalisatie titel

De titel wordt genormaliseerd door allereerst alle LATEX opmaak om te zetten naar hun unicode equivalent. Vervolgens worden alle niet ASCII characters uit de string verwijderd. Als laatste worden alle uppercase letters naar lowercase omgezet.

3.3.2.2 Normalisatie jaar

Tijdens het testen is naar voren gekomen dat de aangeleverde BibTEX bestanden niet altijd goed te parsen zijn. Zo zijn er voorbeelden gevonden waarbij het jaar verkeerd geparseerd wordt. In dit veld wordt naast het jaar ook het volgende veld weergegeven. Deze zal genormaliseerd worden door middel van het toepassen van een reguliere expressie. BibTEX velden worden gescheiden door een komma. Dus alles achter de komma kan verwijderd worden, waardoor alleen het jaartal overblijft. Voor de zekerheid wordt er daarna gekeken of er alleen maar getallen staan en geen andere karakters meer.

3.3.2.3 Normalisatie citatiesleutel

Elke BibTEX entry heeft een citatiesleutel, hiermee wordt de entry ge¨ındentificeerd als het ge-bruikt wordt in bijvoorbeeld LATEX. Deze entry moet uniek zijn, anders weet LATEX niet welke entry gebruikt moet worden. Het enige wat een unieke combinatie geeft, is een combinatie van de genormaliseerde type, year en title. De id zal er als volgt uitzien ’<year> <type> <title>’.

3.3.2.4 Normalisatie maand

De maand kan op drie verschillende manieren geschreven worden: 1. Voluit: Januari, Februari, etc. . .

2. Afgekort met punt: Jan., Feb., etc. . . 3. Afgekort zonder punt: Jan, Feb, etc. . .

Tijdens het samenvoegen is het nodig dat dit veld er altijd hetzelfde uitziet, daarom zal deze altijd genormaliseerd worden naar de voluit geschreven variant. Zo zal bijvoorbeeld de maand ’Feb.’ omgeschreven worden naar de maand ’February’. Voor de volledige variant worden de Engelse maanden gebruikt, omdat dit voor internationaal gebruik wenselijk is.

3.3.2.5 Normalisatie van namen

Namen kunnen op de volgende manieren weergegeven worden [4]: • Voornamen/Initialen tussenvoegsel(s) Achternaam/Achternamen • tussenvoegsel(s) Achternaam/Achternamen, Voornamen/Initialen

• tussenvoegsel(s) Achternaam/Achternamen, Titel(s), Voornamen/Initialen

Het normaliseren van deze entry is niet gemakkelijk. Als eerste zullen de speciale karakters gefilterd moeten worden. Vervolgens zullen ze worden omgezet naar een gestandaardiseerde vorm, die voor elke naam hetzelfde is. Wat de tool in eerste instantie doet is de achternamen vergelijken, zodat er gezien kan worden of de naam toegevoegd moet worden of al bestaat. Als de achternaam nog niet bestaat wordt de gehele naam toegevoegd. Als de achternaam wel bestaat zal er naar de voornamen of initialen gekeken worden. Het aantal voornamen en initialen moet geteld worden, voordat ze vergeleken worden. Dit omdat ’Cees Janssen’ wel gelijk is aan ’C. S. M. Janssen’ en ook gelijk moet zijn aan ’Cees Simon Janssen’, maar andersom hoeft dit niet per definitie waar te zijn. ’Cees Simon Janssen’ is niet per definitie gelijk aan ’C. Janssen’. Soms

(18)

wordt ervoor gekozen om maar ´e´en voornaam of initiaal in te vullen in plaats van de volledige naam. Hieronder staat een tabel met daarin wat meer voorbeelden:

C. S. M. Janssen C. Janssen Cees Janssen Cees Simon Janssen

Cees Janssen Cees Simon Janssen Cees S. M. Janssen Cees S. Janssen Cees van Janssen

Bij het normaliseren van namen worden drie aannames gedaan:

1. In de naam wordt alleen de eerste initiaal of voornaam genoemd, anders alle initialen en voornamen.

2. Er mogen geen tussenvoegsels met hoofdletters geschreven worden, deze moeten beginnen met een kleine letter, zoals ook in de BibTEX conventie aangeven is. De paper van Bib-TeXing van Patashnik [6] en de paper van Hufflen [4] geven aan dat dit de conventie is. Als dit niet gebeurd, zal het tussenvoegsel als achternaam gerekend worden.

3. Meerdere achter- of voornamen moeten tussen accolades staan, anders kan er niet bepaald worden of het meerdere voornamen of achternamen zijn. Let wel, dit is alleen noodzakelijk als er van de eerste notatie gebruik gemaakt word.

3.4

Samenvoegen BibTEX bestanden

Als er een BibTEX bestand gevonden wordt die al eens ge¨ındexeerd is bij bijvoorbeeld een collega, dan zal deze samengevoegd moeten worden. Er bestaan drie methoden:

• Additie: Het toevoegen van een nog niet bestaand record binnen een veld. • Combinatie: Het combineren van de records van een veld.

• Nieuw veld: Het toevoegen van een nieuw veld binnen een entry.

3.4.1

Formele definitie samenvoegen

Voor het samenvoegen van twee bestanden wordt een nieuw symbool ge¨ıntroduceerd: ⊕ Additie:

{β = {A, ...}} ⊕ {β = {C, ..}} = {β = {A, C, ...}} Combinatie:

{β = {AB, ...}} ⊕ {β = {ABC, ..}} = {β = {ABC, ...}} Nieuw veld:

{β = {...}, α = {...}} ⊕ {β = {..}, θ{...}} = {β = {...}, α{...}, θ{...}}

3.4.2

Specifieke vormen van samenvoegen

De meeste entries hoeven niet samengevoegd te worden, bij de meeste velden kan degene gekozen worden die de meeste informatie bevat (de langste string). ´E´en van de velden waarbij dit niet kan is het veld author, hierin staat de auteur of staan auteurs. Dit is ook het geval bij het veld editors.

(19)

3.5

Gezamenlijke opslag

Voor de gezamenlijke opslag zal gebruik gemaakt worden van Dropbox. Per BibTEX entry zal er een file aangemaakt worden, omdat het de complexiteit ten goede komt. Het is niet de bedoeling dat bestanden doorzocht moeten worden om te kijken of een bestand al bestaat. Het is wenselijk dit sneller te kunnen doen. Een oplossing hiervoor is het kiezen van een slimme bestandsnaam, deze bestandsnaam zal bestaan uit een combinatie van de genormaliseerde velden waarop vergeleken wordt. Dit zijn de velden type, year en title. Alle bestanden zullen een bestandsnaam krijgen die er als volgt uitziet: ’<year> <type> <title>.bib’

3.6

PDF matching

Naast BibTEX bestanden wordt er ook gezocht naar PDF bestanden. De PDF bestanden worden gelinkt aan een BibTEX bestand door middel van het toevoegen van een nieuw veld met daarin het pad van de gezamenlijke opslag, waar de PDF opgeslagen is. Veel tools maken gebruik van de metadata van de PDF om bijvoorbeeld de titel en auteurs van de PDF te extraheren. Van het internet verkregen PDF’s hebben vaak geen of foutieve metadata, dit is lastig te testen. Hierdoor is ervoor gekozen geen gebruik te maken van de metadata.

3.6.1

Google Scholar

In eerste instantie wordt er gekeken of er Google Scholar gebruikt mag worden of niet. Als Google Scholar gebruikt mag worden, zal er gezocht worden naar de bijpassende BibTEX via Google Scholar. Daarna kan de BibTEX samengevoegd worden met een al bestaande BibTEX of toegevoegd worden als deze nog niet bestaat. Deze methode heeft ´e´en groot nadeel, het kan niet te vaak achter elkaar gebruikt worden. Als het wel te vaak gebruikt wordt, zal Google Scholar de tool tijdelijk buiten spel zetten door deze te blacklisten. Deze blacklisting zal een aantal dagen duren alvorens de feature weer gebruikt kan worden. Dit is niet ideaal, daarom is er besloten dat dit een optionele feature wordt die door de gebruiker aan of uit gezet kan worden. Als de gebruiker niet wenst Google Scholar te gebruiken is er een alternatief.

3.6.2

PDFtoText

Gebruikmakend van PDFtoText zullen de eerste vijftien woorden van de PDF, ervan uitgaande dat de titel van het bestand daarin vermeld wordt, gebruikt worden om de bijbehorende BibTEX te vinden. Aan de hand van de titel van het bestand kan, met behulp van de ’Extract from list’ methode van Fuzzywuzzy, de beste match gevonden worden. Als deze ratio boven een bepaalde threshold zit, zal dit als de juiste worden beschouwd. Hoe hoog die threshold moet zijn zal onderzocht worden. Als dit niet het geval is zal er geen bestand bij de PDF gevonden worden en zal de PDF overgeslagen worden.

(20)
(21)

CHAPTER 4

Implementatie

In dit hofdstuk van de scriptie zal de implementatie behandeld worden. Het ontwerp, de flow en de gedane aannames zijn behandeld in het hoofdstuk Functioneel Design. Hier zal vooral op het technische aspect van de tool in worden gegaan.

4.1

Overzicht

De vorm van de tool is een programma gestructureerd in een frontend en een backend. De backend en frontend zijn beiden ontwikkeld in Python. Als het programma start, ziet de gebruiker een Graphical User Interface (GUI). Hiermee kan er, door de in het configuratie bestand aangegeven directories, gezocht worden naar de benodigde bestanden. Als de bestanden gevonden zijn en eventueel samengevoegd, komen de nieuwe entries in de lijst te staan. Vanuit die lijst kunnen bestanden geselecteerd worden die op de website gepubliceerd moeten worden. Deze lijst wordt opgeslagen in het daarvoor aangegeven bestand.

Bestand Naam Argumenten Return

main.py main -

-main.py dir to file list dirs, ext lijst paden en

be-standsnamen main.py bibtex entries, db folder, current file

-main.py pdf pdf files, shared pdf,

bib-tex folder, bibbib-tex files, gscholar

-normalize.py normalize title title genormaliseerde

ti-tel als string names.py getnames names, names norm

gscholar.py convert pdf to txt pdf string met platte

tekst gehele pdf Table 4.1: Functies met bestandsnaam, naam van de functie, argumenten van de functie en return waarde

4.2

Parseren van de configuratiemogelijkheden

Allereerst worden de, door de gebruiker aangegeven, configuraties uit het configuratie bestand geparseerd. Dit gebeurt in de functie main (Tabel 4.1), deze functie maakt gebruik van de

(22)

standaard ConfigParser die in Python zit. Hiervoor is wel een specifieke opmaak van het config-uratiebestand nodig. Het configconfig-uratiebestand bestaat uit secties, met daarin opties. Hieronder is het standaard meegeleverde configuratiebestand weergegeven, het bestaat uit drie secties: gen-eral, bibtex en pdf. Deze secties hebben ieder een aantal opties.

[general]

# Use Google Scholar to find the BibTex for a PDF. Caution: Really slow! google_scholar = False

bibtex_filetypes = .bib, .txt personal_website_bib = personal.bib group_website_bib = group.bib

# These URLs are needed to make an website using BibBase.org

# This link is the Dropbox share link of the file, found on Dropbox.com personal_link = https://www.dropbox.com/s/<some_hash>/justin.bib?dl=0 group_link = https://www.dropbox.com/s/<some_hash>/group.bib?dl=0

[bibtex]

# List of directories who need to be searched for

# bibliographic files (directories = ../bibtex/2* is also possible) directories = ../bibtex/

# Directory where the bibliographic files must be stored

shared_directory = /home/<username>/Dropbox/afstuderen/prototype/bibtex_normalized/

[pdf]

#Specify if there needs to be searched for PDF files. search_pdf = False

# List of directories who need to be searched for pdf files directories = ../pdf/

# Directory where the bibliographic files must be stored

shared_directory = /home/<username>/Dropbox/afstuderen/prototype/pdf_normalized/ Opties als directories kunnen een lijst van entries krijgen, deze entries moeten gesplitst worden door een komma. Naast het configuratiebestand is er een bestand mandatory fields.py. Hierin staan, in de vorm van een dictionary, per entry type de verplichte velden. Deze zouden door de gebruiker aangepast kunnen worden. Let wel, deze key-value paren moeten allemaal in kleine letters geschreven worden, aangezien de BibTEX parser dit ook doet.

4.3

Zoeken naar BibTEX en PDF bestanden

Nu de directories waarin gezocht mag worden bekend zijn, kan er begonnen worden met het zoeken naar BibTEX en PDF bestanden. Allereerst wordt er een lijst van alle BibTEX bestanden opgemaakt door de functie dir to file list (Tabel 4.1). Deze functie heeft als parameters een lijst van BibTEX bestanden en de extensie van de bestanden waarnaar gezocht moet worden. Er wordt recursief door de directory gelopen, zodat ook alle subdirectories meegenomen worden in de zoekopdracht. Vervolgens wordt er een lijst met paden en bestandsnamen gereturnt. Het zoeken naar PDF bestanden gebeurt op dezelfde wijze.

(23)

4.4

Parseren van BibTEX bestanden

Parseren van BibTEX bestanden wordt gedaan door de package BibTEX parser. Deze zet een BibTEX bestand om naar een lijst van Python dictionaries, voor elke entry binnen het bestand ´

e´en dictionary. Een entry type, zoals article of inproceedings, heeft bepaalde verplichte velden. Als deze verplichte velden niet aanwezig zijn, zal de entry overgeslagen worden.

4.5

Normaliseren BibTEX bestanden

Zoals in het functioneel design uitgelegd wordt, moeten de bestanden genormaliseerd worden alvorens deze met elkaar vergeleken of zelfs samengevoegd kunnen worden. Voor het normaliseren van de bestanden is er een library (normalize.py) ontwikkeld. Deze library bestaat uit een aantal functies die tezamen de meeste records kunnen normaliseren. Een gedeelte van de normalisatie van de auteur wordt gedaan door de package Pybtex. Dit is een package die volledige BibTEX bestanden kan parsen. De representatie ervan laat alleen te wensen over. Desalniettemin is de mogelijkheid tot het parseren van namen in de package zeer compleet. Zoals beschreven in sectie 3.3.2 Normalisatie worden de velden titel, jaar, citatiesleutel, maand en de namen genormaliseerd.

4.5.1

Normalisatie titel

Voor het normaliseren van de titel bestaat de functie normalize title (Tabel 4.1) die een string als parameter meekrijgt. Bij het normaliseren van de titel draait het om het filteren van alle speciale tekens, maar ook om het decoderen van LATEX tags. Deze LATEX tags hoeven niet altijd offici¨ele LATEX tags te zijn, deze kunnen ook zelf verzonnen en gedefinie¨erd zijn. Het probleem daarmee is dat die custom tags niet gedefinie¨erd zijn binnen het BibTEX bestand. Het decoderen van LATEX tags wordt gedaan door de package LATEX encoder. Het zet de LATEX tag om naar zijn unicode equivalent. Voor niet bestaande LATEX tags is de volgende oplossing: De tag wordt gedecodeerd en als dat gelukt is blijft de unicode equivalent in de string staan. Als dit niet het geval is zal de tag verwijderd worden, deze heeft voor het vergelijken van de titel geen meerwaarde. Uiteindelijk ziet het normaliseren van een titel er als volgt uit:

Specifying Loop Transformations for C2$\mu$TC Source to Source Compiler specifying loop transformations for c2tc source to source compiler

{"U}ber den {Z}ussammenhang der verschiedenen {B}egriffe der rekursiven {F}unktion uber den zussammenhang der verschiedenen begriffe der rekursiven funktion

4.5.2

Normalisatie namen

In eerste instantie was er voor het normaliseren van de namen, waaruit de velden author en editor bestaan, gedaan door een zelf ontwikkeld algoritme. Later is er besloten een gevonden package, Pybtex, te gebruiken, hierover in het hoofdstuk Discussie meer. De functie heet getnames (Tabel 4.1). Deze functie heeft als parameters een lijst met namen en een lijst met de genormaliseerde namen. Zoals uitgelegd in sectie 3.3.2.5: Normalisatie van namen, kunnen namen in drie verschillende formaten geschreven worden en is het wenselijk deze naar het tweede formaat te normaliseren. Deze is het meest makkelijk te parseren.

4.5.2.1 Zelf ontwikkelde algoritme

Allereerst worden de namen gesplitst op de ’ and ’ term, dit is de scheiding die tussen namen voor publicaties met meerdere auteurs. Daarna worden de namen ontdaan van alle speciale tekens,

(24)

behalve de accolades. Deze accolades worden gebruikt om meerdere voor- of achternamen aan te geven, maar ook om bijvoorbeeld hoofdletters of speciale tekens aan te geven. Vervolgens worden de verschillende formaten geparseerd naar een Name class object. Dit object bestaat uit:

• first: Alle voornamen en initialen van de persoon • middle: Tussenvoegsels van de persoon

• last: Alle achternamen van de persoon • title: Alle titels van de persoon

Het algoritme kan goed onderscheid maken tussen voornamen, tussenvoegsels, titels en achter-namen. Hierbij maakt het formaat waar het in geschreven is niet uit, totdat er bijvoorbeeld ingewikkelde constructies met accolades in de record zitten.

4.5.2.2 Pybtex

De Pybtex package wordt alleen gebruikt voor het omschrijven van de namen naar het juiste formaat. De package heeft een class genaamd Person, die class splitst de naam op in de volgende elementen:

• first: De eerste voornaam of initiaal van de persoon • middle: Rest van de voornamen van de persoon • prelast: Tussenvoegsels van de persoon

• last: Alle achternamen van de persoon • lineage: Alle titels van de persoon

Op een klein aantal voorbeelden waar de eigen implementatie ophoudt en de naam niet in het juiste formaat kan schrijven, kan de implementatie van dit Pybtex wel. Dit komt het eindresultaat ten goede, omdat hierdoor de namen beter samengevoegd kunnen worden. Een voorbeeld van waar de eigen implementatie ophoudt en Pybtex verder gaat is:

{\relax J}ustin van {{\relax W}ageningen {\relax O}verwater}

4.6

Bestanden vergelijken

Nu de benodigde velden genormaliseerd zijn, kunnen deze gebruikt worden om te kijken of deze entry al bestaat. Hiervoor zijn twee functies geschreven bibtex (Tabel 4.1) en pdf (Tabel 4.1). De functie bibtex zorgt ervoor dat de BibTEX bestanden worden vergeleken en samengevoegd of toegevoegd. De functie krijgt als parameters een lijst van entries, een directory waar de BibTEX bestanden opgeslagen moeten worden en het bestand waarnaar er op dat moment gekeken wordt. De PDF functie zorgt ervoor dat de PDF bestanden als veld in de juiste entry terecht komen en dat de PDF op de juiste wijze opgeslagen wordt in de gezamenlijke opslag (als symlink of copy). De functie heeft als parameters de PDF bestanden waarnaar gekeken moet worden, de gezamenlijke opslag directory, de gezamenlijke BibTEX directory, een lijst van alle BibTEX bestanden die in de gezamenlijke directory staan en of er wel of geen gebruik gemaakt mag worden van Google Scholar.

4.6.1

Vergelijken van BibTEX bestanden

De functie bibtex (Tabel 4.1) begint met het normaliseren van de benodigde velden en maakt daar vervolgens een bestandsnaam van. De bestandsnaam ziet eruit als aangegeven in sectie 3.5 Gezamelijke opslag. Door de vorm van de bestandsnaam, die uniek is, kan er snel gekeken worden of deze al bestaat door middel van os.path.exists. Als dat het geval is, zal het bestand

(25)

samengevoegd worden. Als dit bestand nog niet bestaat wordt deze aangemaakt en opgeslagen. Als het bestand bestaat, wordt er gekeken of er in dit bestand wel echt een entry staat. Als dit niet het geval is, omdat het om een of andere reden bijvoorbeeld een leeg bestand is, zal de entry alsnog zonder samenvoeging weggeschreven worden naar de harde schijf.

4.6.2

Zoeken naar juiste BibTEX voor PDF

De schijf wordt, zoals bekend, ook doorzocht naar PDF bestanden in de daarvoor aangegeven directories. Als een PDF bestand gevonden is, wordt er gekeken of de gebruiker Google Scholar wenst te gebruiken.

4.6.2.1 Met Google Scholar

Als de gebruiker Google Scholar wenst te gebruiken, wordt er gebruik gemaakt van het bestand gscholar.py. Dit is een package ontwikkeld om een BibTEX bestand op te halen van Google Scholar. Wat de package doet, is de eerste twintig woorden van de PDF pakken, met behulp van de tool PDFtoText. Deze twiting woorden worden als query in Google Scholar gezet en die geeft uiteindelijk een HTML pagina terug waar de BibTEX entry uitgehaald wordt. Aan deze entry wordt de link naar de PDF toegevoegd en deze entry wordt op dezelfde manier vergeleken als andere BibTEX entries. Als de entry bestaat wordt hij samengevoegd, bestaat hij niet wordt hij toegevoegd. Het grootste nadeel van het gebruiken van Google Scholar is dat het de tool heel erg traag maakt, na elke vraag aan Google Scholar moet er een pauze van 1 tot 2 seconden zijn zodat de tool niet geblacklist wordt.

4.6.2.2 Zonder Google Scholar

Als de gebruiker geen gebruik wenst te maken van Google Scholar, worden de eerste vijftien woorden van de PDF afgeknipt. Dit gebeurt met behulp van de tool PDFtoText en de functie convert pdf to txt() (Tabel 4.1). Deze functie heeft als argument een PDF bestand en die wordt volledig naar platte tekst omgezet. Hierbij wordt de aanname gedaan dat de titel in de eerste vijftien woorden zit. Deze woorden worden samengevoegd tot een string en deze string wordt vergeleken met een lijst van alle BibTEX bestanden in de gezamenlijke opslag. Dit gebeurt met de functie extractBest van de package Fuzzywuzzy. Deze functie gaat de beste match tussen de opgebouwde string en de bestandsnamen uit de lijst zoeken. De beste match hoeft niet altijd de juiste match te zijn, er komt naast de match een score uit hoeveel de twee op elkaar lijken. Deze score moet boven een bepaalde threshold zijn. Hierover meer in het hoofdstuk: Resultaten.

(26)

4.7

Voorbeeld

In deze sectie wordt er een voorbeeld van het samenvoegen van twee BibTEX entries (BibTEX entry 1 en BibTEX entry 2) getoond, hierbij wordt een PDF toegevoegd.

BibTEX entry 1:

@ a r t i c l e { j u s t i n . 1 5 ,

a d d r e s s = { S c i e n c e Park , Amsterdam , NLD} , a u t h o r = { J u s t i n van Wageningen } ,

t i t l e = { Automatisch v e r z a m e l e n en samenvoegen van b i b i o g r a f i s c h e g e g e v e n s } , y e a r = { 2 0 1 5 } , s c h o o l = {{U}v{A}} } BibTEX entry 2: @ a r t i c l e { j u s . 1 5 . bib , a u t h o r = { J . van Wageningen } ,

t i t l e = { Automatisch v e r z a m e l e n en samenvoegen van b i b i o g r a f i s c h e g e g e v e n s } ,

y e a r = { 2 0 1 5 } ,

s c h o o l = {{U} n i v e r s i t e i t van {A} msterdam } }

Samengevoegde BibTEX entries met PDF (citatiesleutel is afgekort): @ a r t i c l e { a r t i c l e 2 0 1 5 a u t o m a t i s c h ,

a d d r e s s = {{S} c i e n c e {P} ark , {A} msterdam , {NLD} } , a u t h o r = { van {W} a g e n i n g e n , J u s t i n } ,

a u t h o r n o r m = { van Wageningen , J } ,

s c h o o l = {{U} n i v e r s i t e i t van {A} msterdam } ,

t i t l e = { Automatisch v e r z a m e l e n en samenvoegen van b i b i o g r a f i s c h e g e g e v e n s } ,

t i t l e n o r m = { a u t o m a t i s c h v e r z a m e l e n en samenvoegen van b i b i o g r a f i s c h e g e g e v e n s } ,

y e a r = { 2 0 1 5 } , y e a r n o r m = { 2 0 1 5 } ,

p d f = {/home/ username / Dropbox / p d f / j u s t i n . 2 0 1 5 . p d f } }

4.8

Genereren van website

Nadat alle data verzameld is, kan er een website gegenereerd worden. Daarvoor is input van de gebruiker nodig. De tool is niet in staat te herkennen of iets een publicatie van een onderzoeker of onderzoeksgroep is. De input wordt gegeven in de GUI, waar een lijst van alle BibTEX bestanden in de gezamenlijke opslag gegeven wordt. Uit de lijst zal de gebruiker moeten selecteren welke publicaties op de persoonlijke of groepswebsite terecht moeten komen. Hiervoor zijn twee knoppen Generate personal website en Generate group website. Als op ´e´en van die twee knoppen gedrukt wordt, worden de geselecteerde BibTEX bestanden in ´e´en BibTEX bestand gezet. Dit bestand wordt naar BibBase gestuurd en deze geeft een HTML pagina terug. De website ziet er als volgt uit:

(27)

Figure 4.1: Website gegenereerd met BibBase.org

4.9

Andere toepassing tool

Sommige onderzoeksgroepen maken gebruik van een server waarop alle gegevens voor een onder-zoek opgeslagen worden. De tool zou door de groepsleider, die alle bestanden verzameld om deze samen te voegen, gebruikt kunnen worden alle benodigde bestanden uit de folders te halen. Over het algemeen kan de groepsleider niet schrijven in de directories van de rest van de groep, maar hij kan er wel lezen. De tool kan dan gebruikt worden om de benodigde bestanden uit de groep hun persoonlijke directories te halen en deze samen te voegen in een map waar de groepsleider wel schrijfrechten heeft. Dit kan een hoop tijd schelen, omdat de groepsleider niet iedereen hoeft te vragen de gegevens door de sturen naar hem of haar.

4.10

Packaging

De tool is beschikbaar als package en is installeerbaar via pip. De naam van de package is: Bib2Web.

(28)
(29)

CHAPTER 5

Evaluatie

5.1

Kwantitatieve experimenten

5.1.1

Methodologie

Er zijn een serie van experimenten uitgevoerd met de tool. Deze experimenten zullen uiteindelijk kwantitatieve resultaten geven. We zullen de accuracy meten van het vergelijken van BibTEX met BibTEX bestanden en van PDF met BibTEX bestanden. De vergelijking van PDF met BibTEX bestanden kan in de tool op twee verschillende manieren, met of zonder het gebruik van Google Scholar. Voor de vergelijking van PDF met BibTEX bestanden zal dit zich uiten in een diagram wat matching score afzet tegen accuracy, met verschillend aantal woorden wat van de PDF geknipt wordt. Ook zal de accuracy van Google Scholar berekend, zodat deze vergeleken kunnen worden. Dit is noodzakelijk om te testen of bijvoorbeeld de titel gevonden wordt en wat dit met de accuracy doet.

Voor het experiment voor het vergelijken van BibTEX bestanden zullen het aantal duplicaten geteld worden. Het vergelijken van BibTEX bestanden wordt niet gedaan aan de hand van een matching score, maar aan de hand van normalisatie. We gaan er vanuit dat normalisatie voldoende is. Niet matchen aan de hand van een matching score scheelt het een hoop tijd. Voor deze experimenten wordt er test data geproduceerd. De vergelijking van BibTEX bestanden bestaat uit 3231 entries, waarvan er 437 duplicaten zijn en 357 foutief zijn. Bij het vergelijken van PDF met BibTEX bestanden wordt er gebruik gemaakt van een test set van 100 PDF bestanden waarvan er 20 geen BibTEX equivalent hebben in de gezamenlijke opslag. Voor het gebruik van Google Scholar wordt dezelfde dataset gebruikt als voor het eigen ontwikkelde algoritme. Accuracy wordt als volgt berekent:

Accuracy =

goede positieve+ goede negatieve+ foute positieve + foute negatievegoede positieve+ goede negatieve (5.1) Naast de accuracy is executietijd ook een belangrijk punt dat getest moet worden, de gebruikers mogen immers geen last hebben van de tool. Aangezien dit geen tool is die de onderzoekers dagelijks zullen gebruiken en deze tool niet op de achtergrond draait, is executietijd niet prioriteit nummer ´e´en. Toch is het fijn niet een eeuwigheid te hoeven wachten op de resultaten. De volledig verkregen dataset zal geparseert en waar nodig samengevoegd worden. Dit experiment zal tien maal uitgevoerd worden en van die tien executies zal de gemiddelde executietijd berekent worden.

(30)

Om PDF bestanden met BibTEX bestanden te vergelijken en eventueel samen te voegen, moet er een aantal woorden uit de PDF gehaald worden. Aangezien we op zoek zijn naar een titel in een PDF om deze te kunnen vergelijken met BibTEX bestanden, zal er voor verschillend aantal woorden gemeten worden welke de hoogste accuracy heeft.

5.1.2

Resultaten experimenten

In figuur 5.1 zijn de resultaten te zien van het experiment waarbij de matching score van een PDF naar een BibTEX entry weergegeven wordt. De verschillende lijnen zijn het aantal woorden die gepakt worden van de PDF.

0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 Matching score Accuracy

Score vs. Accuracy PDF matching

15 woorden 25 woorden 35 woorden 45 woorden

Figure 5.1: Vergelijken van PDF bestanden met BibTEX bestanden. De matching score is afgezet tegen de accuracy.

In figuur 5.1 wordt weergegeven hoe de accuracy zich ontwikkeld ten opzichte van de matching score. De matching score bestaat uit een ratio, zoals uitgelegd in sectie 2.3.1.3. In de diagram is te zien dat hoe meer woorden er afgeknipt worden van de PDF, hoe hoger de accuracy word. De accuracy bereikt wel een plafond, het is niet zo dat de accuracy oneindig zal stijgen zolang er meer woorden van de PDF afgeknipt worden. We zien dat vanaf 35 woorden de accuracy niet beter word. Voor de accuracy maakt het niet uit of er 35 of 45 woorden afgeknipt worden, het is dan wenselijk om zo weinig mogelijk woorden af te knippen. De accuracy van het vinden van de juiste resultaten op Google Scholar is 0,68, terwijl de hoogste accuracy van het zelf ontwikkelde

(31)

algoritme 0,96 is. De verdere interpretatie van deze gegevens staat in hoofdstuk 6.

Het aantal fouten wat gemaakt is tijdens het vergelijken van BibTEX bestanden zijn 9 van 3231 entries. De fouten bestaan uit verschillen als:

inproceedings_2013_independence_a_misunderstood_property_of_and_for_probabilistic_real_time_systems.bib inproceedings_Marc_independence_a_misunderstood_property_of_and_for_probabilistic_real_time_systems.bib

Waarbij de gebruiker de maand ingevuld heeft bij het veld waar het jaar hoort te staan. Een ander voorbeeld is:

inproceedings_2009_specifying_loop_transformations_for_c2tc_source_ro_source_compiler.bib inproceedings_2009_specifying_loop_transformations_for_c2tc_source_to_source_compiler.bib Waarbij een typefout gemaakt is in de titel. Zoals eerder verteld wordt het vergelijken van

BibTEX bestanden niet gedaan aan de hand van een ratio, zoals bij PDF matching wel gedaan wordt. Daarom worden deze kleine fouten niet opgepikt.

Er zijn ook voorbeelden die voor de tool geen fouten zijn, maar die voor een mens wel als fout gezien worden. Dat waren er in totaal 15 van de 3231 BibTEX bestanden. Voorbeelden daarvan zijn:

inproceedings_1991_towards_a_new_model_of_abstraction_in_software_engineering.bib inproceedings_1992_towards_a_new_model_of_abstraction_in_software_engineering.bib article_1973_the_unix_time_sharing_system.bib

article_1974_the_unix_time_sharing_system.bib

Hierbij doet de tool precies wat er gevraagd is. Hij matched ze niet, omdat ze niet van hetzelfde publicatiejaar zijn. Als er in de entry gekeken wordt zijn ze wel hetzelfde.

(32)

0 200 400 600 800 1,000 1,200 1,400 1,600 1,800 2,000 2,200 2,400 2,600 2,800 3,000 0 10 20 30 40 50 60 70 80 90 100

Aantal BibTEX entries

Executietijd

Vergelijking van executietijd

Zoeken en samenvoegen van alleen BibTEX bestanden Zoeken en samenvoegen van PDF en BibTEX bestanden

Figure 5.2: Vergelijking van executietijd

In figuur 5.2 zijn executietijden van de tool weergegeven. De blauwe lijn bestaat uit het samen-voegen van alleen BibTEX bestanden, er word in deze executie niet gezocht naar PDF bestanden. Deze executie is snel en schaalbaar. Daarentegen is het zoeken en samenvoegen van PDF ´en BibTEX bestanden traag. De executietijd zit hem vooral in het doorzoeken van alle BibTEX bestanden naar de beste match.

5.2

Gebruikersonderzoek

5.2.1

Methodologie

Deze tool is ontwikkeld om door onderzoekers gebruikt te worden en daarom kan hun mening over de tool niet ontbreken in deze scriptie. De onderzoekers krijgen tijdens het gebruikersonderzoek een demonstratie van de tool. Nadat ze deze demonstratie hebben gezien, worden de volgende vragen gesteld:

1. Beschrijf in ´e´en of twee zinnen wat je van de tool vindt. 2. Wat vind je van de GUI?

(33)

4. Noem drie goede dingen.

5. Noem drie dingen die verbeterd kunnen worden.

De derde en de laatste twee vragen hebben veel overeenkomsten. Deze worden toch apart gesteld, zodat er minimaal drie goede en drie verbeteringen naar voren komen. Dit zou een goed kwali-tatief beeld van de tool moeten geven. Als de vragen gesteld zijn, zijn de onderzoekers vrij om nog wat toe te voegen dat volgens hen nog noemenswaardig is.

Voor het gebruikersonderzoek zijn we op zoek naar onderzoekers die voldoen aan het volgende profiel:

• Ervaring met het gebruik van bibliografische bestanden. • Onderhouden van persoonlijke en groepswebsite.

• Ze zijn op de hoogte van de vaardigheden en kennis die nodig zijn om inhoudelijke feedback te geven.

De demonstratie en kleine vragenlijst zal voorgelegd worden aan de volgende vijf onderzoek-ers: 1. Andy Pimentel 2. Roy Bakker 3. Simon Polstra 4. Clemens Grelck 5. Tadde¨us Kroes

Tijdens het doen van vooronderzoek voor de scriptie zijn een aantal van bovenstaande onderzoek-ers om hun mening gevraagd. Wat was er volgens hen nodig? Wat miste er aan de tools die nu bestaan? Wat is de workflow die nu gebruikt wordt? Deze onderzoekers zijn om deze rede weer geselecteerd om hun mening te vormen over de uiteindelijke tool. Het is een diverse groep, zo hebben Andy en Clemens heel veel ervaring en hebben veel gepubliceerd en zijn vaak geciteerd. Daarentegen staan Roy en Roeland aan het begin van hun academische carri`ere. Tadde¨us is bezig met het schrijven van zijn masterthesis, zijn masterthesis is een literatuuronderzoek. Hier-voor heeft hij een bibliografie op moeten stellen. Tadde¨us en Simon voldoen niet aan het profiel, Simon publiceerd op dit moment niets en Tadde¨us heeft nog niets gepubliceerd. Toch is het belangrijk hun te interviewen, omdat er dan diversiteit in de groep zit, zodat er vanuit meerdere invalshoeken naar de software gekeken wordt.

5.2.2

Resultaten gebruikersonderzoek

In tabel 5.2.2 is terug te vinden wat de antwoorden van de onderzoekers waren op de vragen (hoofstuk 5.2) na de demo. In de antwoorden zijn een aantal punten naar voren gekomen waar mensen enthousiast over zijn en waarvan ze van mening zijn dat verbeterd moeten worden. Over het algemeen, met uitzondering van C. Grelck, waren ze enthousiast over de tool. Ze vonden het handig om hun website op deze manier gemakkelijker bij te kunnen houden.Het zou ze een hoop tijd schelen met de hulp van de tool. Ook verzonnen ze zelf toepassingen van het programma, waar het in eerste instantie niet voor bedoeld is, maar wel voor gebruikt kan worden. Zo bedacht R. Bakker dat hij met de hulp van deze tool een overzicht van zijn bibliografische gegevens kan krijgen en zo snel de informatie kan vinden die hij nodig heeft over een bepaald onderwerp. Allen waren het erover eens dat de GUI simpel is, maar nog niet handig genoeg in gebruik. Zo zouden ze graag een filter optie willen zien. Het scrollen door 2000 entries en daaruit op basis van het type, jaar en titel je eigen of groepspublicaties vinden is niet gemakkelijk. Daarnaast is een Control-klik selectie methode niet handig, R. Bakker had een goede suggesties om daar vinkjes van te maken. De filtering gaat alsnog ge¨ımplementeerd worden. C. Grelck was

(34)

over het algemeen negatief over de tool, zoals het nu er uitziet zal hij het niet gaan gebruiken. Wanneer er een filtering systeem komt vindt hij de tool het overwegen waard.

(35)

Vraag A. Pimentel C. Grelck R. Bakker S. Polstra T. Kroes 1 Heel

enthousi-ast, bijzonder handig

Niet enthousi-ast, was scep-tisch Enthousiast, handige tool Nuttig, ook handig op dit moment om bestanden te zoeken

Gaat veel tijd schelen, leuk project

2 Iets uitgebrei-dere tabel zou handig zijn Simpel, mist filtering Lastig selectie maken met CTRL-klik, een vinkje zou makkelijker zijn

Simpel Simpel, mist

filtering en eventueel sortering

3 Ja, dit gaat

vooral tijd schelen

Nee, op dit mo-ment te lastig in gebruik Ja, zeker! Zeker de feature PDF− >BibTEX met de hulp van Google Scholar is interessant

Ja, niet per se waar het voor gemaakt is Nu nog niet, maar als ik ga publiceren wel 4 Tijd, KISS(Keep It Simple Stupid)

GUI is simpel Snel overzichten genereren van bestanden in een directory, blij met Google Scholar feature Zoeken pa-pers, website, samengevoegde BibTEX files Duplicaten verwijderen, genereren bib + website en er is een GUI 5 Zoeken op naam, boom-structuur web-site en meer flexibiliteit in website format Filteren GUI, groepspubli-catie vinden met filteren zelfs lastig Filters, sorter-ing en vinkjes in GUI Last changed, import oude website, filter-ing Citatiesleutel te lang, fil-teren GUI en config als pa-rameter vanaf commandline 6 Website te downloaden als PDF zou handig zijn Filters com-bineren, bi-jvoorbeeld alle article tussen 2010 en 2012 - -

-Table 5.1: Samenvatting van de antwoorden op de gegeven vragen, vragen zijn terug te vinden in hoofstuk 5.2: Gebruikersonderzoek

(36)
(37)

CHAPTER 6

Discussie

In dit hoofdstuk zullen de resultaten uit hoofstuk 7: Resultaten experimenten en hoofdstuk 8: Resultaten gebruikersonderzoek besproken worden. Aan de hand van deze resultaten zullen de volgende onderzoeksvragen, gedefinie¨erd in sectie 1.4: Onderzoeksvragen, beantwoord wor-den.

• Hoe wordt ervoor gezorgd dat er geen duplicaten voorkomen in de gezamenlijke opslag? • Hoe wordt ervoor gezorgd dat de tool niet teveel middelen gebruikt?

• Hoe wordt ervoor gezorgd dat de tool past in de workflow van de gebruikers? • Wat is de beste manier om PDF en BibTEX bestanden te matchen?

6.1

Hoe wordt ervoor gezorgd dat er geen duplicaten voorkomen in de

gezamenlijke opslag?

De manier waarop bestanden opgeslagen worden is uiteengezet in hoofdstuk 3. Het doel van de tool is om duplicate BibTEX bestanden samen te voegen. Dit wordt gedaan aan de hand van een genormaliseerde unieke bestandsnaam. Deze bestandsnaam is beschreven in sectie 3.5. Er wordt vanuit gegaan dat normaliseren van de benodigde velden voldoende is om duplicate BibTEX bestanden te vinden, hier wordt geen ratio berekening op los gelaten. De resultaten, te zien in sectie 5.1.2, laten zien dat dit voldoende is.

Kortom: Het juist normaliseren van de benodigde velden zorgt ervoor dat er weinig tot geen duplicaten bestanden zijn.

6.2

Hoe wordt ervoor gezorgd dat de tool niet teveel middelen

ge-bruikt?

Zoals beschreven in hoofdstuk 3: Functioneel Ontwerp, worden de BibTEX betanden in het volgende formaat opgeslagen: ’<year> <type> <title>.bib’. In combinatie met de normalisatie van het jaar, het type en de titel en deze manier van opslag zien we dat er snel gevonden kan worden of er duplicaten zijn. Dit zien we terug in de executietijd van het zoeken en eventueel samenvoegen van de BibTEX bestanden, zoals te zien in de resultaten. De executietijd van het vergelijken van PDF en BibTEX bestanden laat te wensen over. Dit komt doordat voor elke PDF de gehele lijst van BibTEX bestanden doorlopen moet worden voordat de beste match gegeven kan worden. Bij een kleine lijst van bijvoorbeeld 500 entries valt de executietijd mee, maar bij

(38)

een lijst van bijvoorbeeld 2000 entries begint dit tegen te vallen. Hetzelfde geldt voor het gebruik van Google Scholar, het omzetten van PDF naar platte tekst door PDFtoText kan verwaarloost worden. De HTTP-Request die gedaan wordt kost tijd en omdat er tijd moet zitten tussen de queries naar Google Scholar, moet er gepauzeerd worden. Dit komt de executietijd ook niet ten goede. Eer is voor gekozen de optie voor het zoeken van de PDF bestanden een optionele optie te maken, omdat de executietijd anders erg lang is. Het linken van PDF bestanden aan BibTEX bestanden is niet essentieel voor het genereren van de website,. Het kan alleen wenselijk zijn, omdat er dan direct vanaf de website naar de PDF kan worden gegaan.

Kortom: Het gebruik van de juiste normalisatie en opslag methode maakt het mogelijk om de tools niet teveel middelen te laten gebruiken. Dit geldt alleen voor het vergelijken en samenvoegen van BibTEX bestanden. De PDF bestanden kunnen niet op een effici¨ente manier vergeleken worden, omdat alle BibTEX entries doorzocht moeten worden.

6.3

Hoe wordt ervoor gezorgd dat de tool past in de workflow van de

gebruikers?

In het vooronderzoek zijn een aantal onderzoekers ondervraagd wat ze zouden verwachten van een tool die automatisch BibTEX en PDF bestanden zoekt en samengevoegd. Vanuit deze BibTEX bestanden wordt een website gegenereerd worden. Zoals beschreven in sectie 1.2: Waar is vraag naar?, is er te zien dat er zeker vraag is naar een tool die het makkelijker maakt om de onderzoeker zijn websites bij te houden. Het initi¨ele idee van de tool was dat alles volledig geautomatiseerd zou zijn, dus van het scannen naar bestanden, tot het genereren van een persoonlijke en groep-swebsite. Hier waren niet alle onderzoekers het mee eens. Naast dat het ineffic¨ıent is om de gehele harde schijf te doorzoeken naar bestanden, vonden de onderzoekers het ook niet fijn. Ze houden liever zelf de controle over hun gegevens. Daarom is ervoor gekozen om de onderzoekers, door middel van de directories in het configuratie bestand, te laten kiezen welke directories wel en niet doorzocht mogen worden voor zowel PDF als BibTEX bestanden. Daarnaast moet de tool gemakkelijk in gebruik zijn, dit is gedaan door een simpele GUI. In de resultaten van het gebruikersonderzoek is dit terug te zien, elke onderzoeker vond het simpel of zelfs KISS (Keep It Simple Stupid). Ook is het gebruik van Dropbox voor het synchroniseren van de bestanden handig, aangezien de gebruiker, naast de initi¨ele installatie, niks aan hoeft te doen.

Kortom: Het gebruik van gemakkelijke tools als Dropbox en de mate van configuratie zorgt ervoor dat het alle in workflows zouden moeten passen. Daarnaast is de tool simpel in gebruik. Hierdoor is de drempel laag om de tool in gebruik te nemen.

6.4

Wat is de beste manier om PDF en BibTEX bestanden matchen?

PDF bestanden en BibTEX bestanden zijn twee verschillende type bestanden, dit maakt het niet gemakkelijk om gelijkheid tussen deze bestanden te vinden. Google Scholar kan hierbij helpen. Nadeel van deze tool is dat je snel geblacklist word, soms zelfs met de pauze die in de tool verwerkt is. Daarom is er een alternatief ontwikkeld. Dit alternatief is uiteengezet in sectie 4.5.2.2: Zonder Google Scholar. Zoals in de resultaten te zien is, is de accuracy van het zelf ontwikkelde alternatief zelfs beter dan de accuracy van Google Scholar. Het verschil is te verklaren doordat Google Scholar uit het hele internet kan kiezen om de juiste match terug te geven en soms helemaal geen match kan vinden. Dit kan voorkomen, omdat er in de eerste twintig woorden van de PDF bijvoorbeeld koptekst zit en niet de titel, hierdoor heeft Google Scholar soms helemaal geen match. Bij het zelf ontwikkelde alternatief komt er altijd een beste match uit, alleen kan deze beste match foutief zijn. Daarom kijken we naar de score. In figuur 7.1 is te zien dat de hoogste accuracy is bij een score van 50 als we de eerste 35 woorden van de PDF afknippen.

(39)

Kortom: Het afknippen van de eerste 35 woorden van de PDF met behulp van PDFtoText en deze te matchen met de titel van de BibTEX bestanden in de gezamenlijke opslag.

6.5

Overige discussie

In sectie 3.3.2.5: Normalisatie namen staat dat ik eerst een algoritme voor het normaliseren van namen heb ontwikkeld. Dit werkte redelijk, maar was nooit ´echt naar mijn zin. Later heb ik een package gevonden die eigenlijk precies kan als wat ik wilde. De package Pybtex was ik tegengekomen tijdens het doen van vooronderzoek, deze package is heel slecht gedocumenteerd en de representatie van de BibTEX entries liet te wensen over. Door later toch de code van de package door te spitten vond ik dat het parseren van de namen precies is wat ik zocht. Daarom is er later in het ontwikkelproces alsnog besloten de eigen implementatie niet te gebruiken, maar Pybtex te gebruiken.

Tijdens het gebruikersonderzoek is naar voren gekomen dat de manier waarop de tool de ci-tatiesleutel opbouwt in de praktijk niet handig te gebruiken is. Hij zou veel te lang zijn. Achteraf gezien had daar een best effort minimalisatie op los gelaten moeten worden. Een voorbeeld van een best effort minimalisatie zou bijvoorbeeld een lange key als

article 1966 flow diagrams turing machines and languages with only two formation rules kunnen verkleinen naar atc 66 flow diagram turing.

(40)
(41)

CHAPTER 7

Conclusie

7.1

Samenvatting

In hoofdstuk 1 is de inleiding uiteengezet, bestaande uit de context, probleemstelling, onder-zoeksvragen, strategie, uitdaging en organisatie van deze scriptie. In hoofdstuk 2 is een achter-grond informatie gegeven over wat BibTEX is, de referentie management tools die al bestaan en de middelen die gebruikt worden om het probleem op te lossen. Vervolgens is er in hoofd-stuk 3 een ontwerp gegeven over hoe de tool eruit komt te zien en welke technieken er gebruikt worden. Hierin wordt besproken wat voor configuratie mogelijkheden er zijn en hoe bestanden vergeleken en samengevoegd worden. De implementatie van het ontwerp wordt besproken in hoofdstuk 4, hier wordt verder ingegaan op het technische aspect van de tool. De tool wordt onderworpen aan een aantal experimenten. De experimenten en de resultaten van de experi-menten kunnen gevonden worden in hoofdstuk 5. Naast dat er experiexperi-menten uitgevoerd zijn, is er ook een gebruikersonderzoek afgenomen. Het gebruikersonderzoek en de resultaten daarvan zijn ook te vinden in hoofdstuk 5. De, in hoofdstuk 1, onderzoeksvragen worden in hoofdstuk 6 beantwoord.

7.2

Zal de tool gebruikt worden?

Ik denk dat de backend van de tool goed genoeg is om in gebruik genomen te worden, de fron-tend laat nog wel wat te wensen over. De fronfron-tend is simpel, maar misschien wel iets t´e simpel waardoor niet alles even lekker werkt. Hierbij moet er gedacht worden aan bijvoorbeeld het selecteren van entries die op de persoonlijke of groepswebsite gepubliceerd kunnen worden. Ook is er enige achtergrondkennis nodig om de tool te configureren, dit zou wenselijk zijn om bijvoor-beeld via de GUI te kunnen doen. Voor het sectie Informatica is de tool direct te gebruiken. Zoals in de resultaten van het gebruikersonderzoek te zien is, vinden de meeste onderzoekers die ge¨ınterviewd zijn de tool handig en leuk. Hieruit kunnen we, vind ik, concluderen dat de tool een succes is.

7.3

Richtingen voor de toekomst

Voor verdere ontwikkeling van de tool zou er allereerst een nieuwe GUI ontwikkeld moeten worden. Deze GUI zou uitgebreider moeten zijn dan de huidige GUI. Om de tool toegankelijker te maken voor onderzoekers zou het gemakkelijker moeten zijn om de tool te configureren. Verder

(42)

zouden toepassingen als annotaties en het binnen de tool aanpassen van BibTEX bestanden de tool niet misstaan.

(43)

Bibliography

[1] Comparison of reference management software. http://en.wikipedia.org/wiki/ Comparison_of_reference_management_software. Accessed: 2015-03-15.

[2] David Aum¨uller and Erhard Rahm. PDFMeat. managing publications on the semantic desktop. Proceedings of the 20th ACM international conference on Information and knowledge management. Doi, 2011.

[3] Merinda Kaye Hensley. Citation management software: Features and futures. Reference User Services Quarterly, 50(3):pp. 204–208, 2011.

[4] Jean-Michel Hufflen. Names in {BibTeX} and {mlBibTeX}. TUGB, pages 243–253, 2006. [5] Nicolas Markey. Tame the BeaST The B to X of BibTeX, 2009.

[6] Oren Patashnik. Bibtexing. In Hidden Markov Models and Selected Applications in Speech Recognition. Proceedings of the IEEE 77, pages 257–286, 1988.

[7] Yingting Zhang. Comparison of select reference management tools. Medical reference services quarterly, 31(1):45–60, 2012.

Referenties

GERELATEERDE DOCUMENTEN

Voor meer informatie kunt u terecht bij de receptie of ga naar www.9292ov.nl.. Naar

monitor capture export flash:|tftp:|http:.../filename.pcap show wireless stats client summary | i &lt;Client_MAC&gt;. show wireless stats client

Toewijzing van gebruikersgroepen met AD-SSO (optioneel)In deze sectie leert u de SSO- gebruiker in kaart te brengen naar een andere specifieke groep dan de standaardgroep.Om

Er mag worden gevist in de grote vijver tussen De Twee Gebroeders en de Rival aansluitend de vijver langs de Noorderhogeweg in zuidelijke richting, de vijvers ten noorden van de

In de bermen van het vliegveld en de middenstrook zijn geen vegetatieopnames gemaakt en deze zones zijn dan ook niet zichtbaar op figuur 2.12. Voor deze zones

Ben je aan het werken in Microsoft Edge en kom je op een pagina een pdf-bestand tegen (bijvoorbeeld in OneDrive of SharePoint), klik op het pdf-bestand en deze wordt

Sportvissers met een geel/oranje gekleurde VISpas mogen alleen vissen in de wateren van hun eigen hengelsportvereniging en niet in de wateren in deze Gezamenlijke Lijst

Omgevingsvergunning Datum aanvraag: 14 februari 2012 Aanvraagnummer: 324101 Provincie Zeeland Formulierversie 2011.01 Pagina 1 van 2 Gegevens bevoegd gezag Provincie