Leermodules Dataverwerking PDF

Summary

Deze document bevat informatie over dataverwerking, specifiek over data opschonen met OpenRefine en het gebruik van reguliere expressies. Het beschrijft verschillende technieken en tools voor datamanagement en analyse van datasets.

Full Transcript

Leermodule 1: Data voorbereiden met Open Refine =============================================== 1.1 Intro Oprichting van een database Als je met gegevens werkt, kan je 2 scenario\'s tegenkomen 1. Eigen bronnen maken analoge omzetten naar digitale database a. Welk formaat b. Software...

Leermodule 1: Data voorbereiden met Open Refine =============================================== 1.1 Intro Oprichting van een database Als je met gegevens werkt, kan je 2 scenario\'s tegenkomen 1. Eigen bronnen maken analoge omzetten naar digitale database a. Welk formaat b. Software : excel c. Structuur? 2. Hergebruik van bestaande gegevens a. Gegevens moeten consistent zijn   Hybride situaties: beide kunnen bestaande dataset gebruiken en daar informatie aan toevoegen - Mogelijk ontvangt u een gegeven set waaraan u informatie moet toevoegen - Mogelijk moet u gegevens samenvoegen die in twee verschillende gegevenssets zijn verzameld - Een bestaande gegeven set herstructureren   Richtinggevende vragen - Schoon genoeg? Datacleaning proces - Gestandaardiseerd en consistent? Data standaardisatie - Efficiënte manier gestructuurd? Antwoord op de ene vraag kan invloed hebben op de andere   Waarom is het belangrijk om tijd aan dit proces te besteden? - Tijdswinst : bespaart je tijd - Gemakkelijker om uw gegevens te delen en samen te werken in uw werk - Beter inzicht in je materialen   Wat kun je gebruiken? - Iedereen doet het anders, Excel, tekstbestanden... - Echter : Open Refine ! Wat is OpenRefine: - Released in 2010, acquired by Google, it was named Google Refine - Since 2012 Google is not supporting this project anymore - Now OpenRefine is: - Open source and free - Desktop application - Uses a browser to run but no internet connection - A reference for data cleaning   Complementariteit met andere cursussen Opbouw leermodule: Gegevens opschonen standaardisatie van gegevens structuren van gegevens introductie van reguliere expressies   **[1.1 Gegevens opschonen]** Uw gegevens zullen nooit helemaal schoon en gestandaardiseerd zijn Ruis verminderen? - Opschonen = essentieel vooral voor grote datasets die mogelijk niet volledig dubbel zijn gecontroleerd - Ruis tot minimum te beperken Verbeteren van de verkenning Verbeteren van de exploitatie   [Ontbrekende gegevens] - Lege rijen zijn makkelijk te verwijderen - Lege cellen : onbekend of ontbrekende waarde   [Inconsistente waarden ] - Fouten die je moet aanpakken - Datums zijn niet consistent [Dubbele waarden]   **[1.2 Standaardisatie Data]** Dataset 1: LP Dataset 2: RS Dataset 3: MB   Een manuscript identificeren: Dataset 1 - Plaats, bibliotheek, Ms- nummer in dezelfde kolom - Soms, maar niet altijd wordt er een komma tussen de naam van de bib en het MS-nummer gezet   Manuscript identificeren: Dataset 2: - 3 verschillende kolomen - Stad, bib, MS = dataset 3   Verschillende standaarden - Stad : niet altijd aanwezig   Verschillende normen : bibliotheek - Bibliotheca Apostolica - Soms niets - BAV : bib... - 3 manieren   Verschillende normen: handschriften - Soms MS - Soms niet - Soms lat en soms Lat   Verschillende standaarden : onverenigbare keuzes - Naam bib afgekort   Typische problemen in datasets: A blue and white rectangular sign Description automatically generated with medium confidence   Enkele tips: **assigning identifiers:** - Identifiers zijn de sleutel tot het ondubbelzinnig maken van de records - Reeksen cijfers en tekens die elke record op unieke wijze identificeren - 2 mogelijkheden: - Bestaande identificatoren gebruiken - Uw eigen ID maken Bronnen voor identifiers; - Viaf - Wikidata - ISNI - CERL   Conventions: - Library of congress - Society of american archivists - Cerl thesaurus - Niso    **[1.4 Reguliere expressies]** = manier om patronen te beschrijven waardoor een computer softwarematig tekst kan herkennen. Er bestaat hiervoor een formele syntaxis, die deels is gestandaardiseerd   Wat is reguliere expressie? - Wanneer u naar een tekenreeks zoekt, zoekt u over het algemeen naar een exacte overeenkomst in een tekst - In verschillende tools editors kun je heel gemakkelijk een generalisatie introduceren : - Maak de zoekopdracht niet hoofdlettergevoelig - Gebruik een \* om meerdere eindes toe te staan - Reguliere expressies generaliseren over deze mogelijkheden   Tekenklassen: - Vrijheid met betrekking tot het personage dat je wilt matchen - (ml)ove is zowel move als love - Typische klassen zijn onder meer - Lijst van letter (abc) = a,b,c - uitgesloten letters (\^abc) = elk teken behalve a,b,c - Bereik vanletters - (a-z) - (a-zA-Z)   Vooraf gedefinieerde tekenklassen:. : elk teken : Bijvoorbeeld: h.llo matcht zowel \"hallo\" als \"hullo\". /d : staat voor elk cijfer /s : staat voor een spatieteken / w: elk woordteken De backslach geeft aan dat wat volgt een speciaal teken is   Negatieve tekenklassen: /D: een niet cijfer /S; een teken zonder spaties /W: elk niet-woordteken   Grens matchers: - Soms wil u er zeker van zijn dat sequenties op specifieke posities in de snaar worden opgehaald - \^begin van een regel - \$ einde van een regel - /b een woordgrens : Bijvoorbeeld: \\bkat\\b matcht \"kat\", maar niet \"katten\".   Hulpmiddel reguliere expressies : **quantifiers** - Soms moet u een letter een ander aantal keren laten herhalen - Stel dat u op de letter \"b\" zoekt - b? : één of 0 herhalingen van b - b\* : zero or more repititions - b+ : een of meerdere - b{n} : precies n keer   Reguliere expressies en Open Refine - Er zijn verschillende manieren om reguliere expressies te coderen, verschillende \"talen\" die u kunt gebruiken om de patronen uit te drukken - OpenRefine stelt verschillende mogelijkheden voor - Focussen op GREL (General Refine Expression Language) - Specifieke toepassing van de Java-syntaxis   ![A screenshot of a computer Description automatically generated](media/image2.png) Leermodule 2: Inleiding tot de statistiek ========================================= **[Intro Statistiek wat bedoelen we daarmee? ]** - Om een algemene definitie van statistiek biedt Wikipedia een nuttige inleiding - Statistiek is de wetenschap en de techniek van het verzamelen, bewerken, interpreteren en presenteren van gegevens. Statistische methoden worden gebruikt om grote hoeveelheden gegevens, zoals uit een geneeskundig, industrieel of sociaal onderzoek, om te zetten in bruikbare informatie. De principes van de statistiek komen voort uit de regels van de wiskunde en de wetten van de logica.   Formele definitie : statistiek zijn gebaseerd op een functie genaamd \'steekproeffunctie\' Steekproeffunctie = functie van een verzameling van observaties - G=g (X1,..... Xn) is een steekproeffunctie - We maken vrij veel gebruik van steekproeffuncties   Voorbeeld: - In Oktober 2024 is 24,1% van de KUL studenten internationale student   2 soorten statistiek : 1. **Beschrijvend** : richt zich op het samenvatten en beschrijven van gegevens. Dit omvat het berekenen van gemiddelden, mediaan, modus, en het weergeven van gegevens met grafieken zoals histogrammen en staafdiagrammen. Het doel is om een duidelijk beeld te geven van de gegevens die je hebt verzameld. 2. **Inferentieel** : gaat een stap verder door conclusies te trekken en voorspellingen te doen op basis van een steekproef van gegevens. Dit omvat technieken zoals hypothesetesten, schatten van populatieparameters, en het berekenen van betrouwbaarheidsintervallen. Het doel is om uitspraken te doen over een grotere populatie op basis van de gegevens uit een steekproef.   Beschrijvende statistiek beschrijft wat de gegevens laten zien, terwijl inferentiële statistiek helpt om conclusies te trekken en voorspellingen te doen over een bredere populatie.   In deze cursus vooral beschrijvende statistieken Verschillende situaties waarin beschrijvende statistiek gebruik wordt: - **Demografische Studies**: Onderzoekers gebruiken beschrijvende statistiek om de demografische kenmerken van een steekproef te beschrijven, zoals leeftijd, geslacht, inkomensniveaus en opleidingsniveau. - **Enquêteresultaten:** Bij het analyseren van enquêtes gebruiken onderzoekers beschrijvende statistiek om de frequentie van antwoorden, gemiddelde scores en standaarddeviaties te presenteren. - **Experimentele Gegevens**: In experimenten helpt beschrijvende statistiek om de resultaten samen te vatten, zoals de gemiddelde reactietijden, foutpercentages of andere gemeten variabelen.   Geesteswetenschappen kunnen typische beschrijvende statistieken zijn : - **Tekstanalyse**: Onderzoekers kunnen beschrijvende statistiek gebruiken om de frequentie van woorden of zinnen in een corpus van teksten te analyseren. Dit kan helpen bij het identificeren van veelvoorkomende thema's of onderwerpen. - **Digitale databanken**: Beschrijvende statistiek kan worden gebruikt om de inhoud van digitale databanken samen te vatten, zoals het aantal documenten, de gemiddelde lengte van documenten, en de verdeling van documenten over verschillende tijdsperioden. - **Analyse van digitale beelden:** Beschrijving van de eigenschappen van de pixels in een dataset van afbeeldingen, zoals de intensiteit, de kleurverdeling, de entropie etc.    Hoe doe je statistieken? Om de statische test uit te voeren kunt u uw toevlucht nemen tot verschillende benaderingen. Er is software die is afgestemd op statistische analyse en die verschillende niveaus van expertise vereist. Hier een beschrijving van drie van de meest gebruikte programma's. - **SPSS (Statistical Package for the Social Sciences) :**SPSS is een softwarepakket dat wordt gebruikt voor interactieve of batchgewijze statistische analyse. - **Excel:** Microsoft Excel is een spreadsheetprogramma dat basis statistische functies bevat en de mogelijkheid biedt om complexere analyses uit te voeren met add-ins zoals de Analysis ToolPak. - **SAS (Statistical Analysis System) :** SAS is een uitgebreid softwarepakket dat wordt gebruikt voor geavanceerde data-analyse, multivariate analyse, business intelligence en datamanagement. Het biedt een breed scala aan tools en functies voor het verwerken en analyseren van grote hoeveelheden gegevens. Een belangrijk kenmerk van SAS is dat het zijn eigen programmeertaal heeft, die speciaal is ontworpen voor datamanipulatie en statistische analyse.   Probleem? Geen open source Alternatief dat wel open source is : R en Python (programmeertalen)   **[2.1 Kwalitatieve vs Kwantitatieve variabelen ]** We hebben al gezien dat er twee soorten variabelen zijn - Kwalitatieve (categorische) : eigenschappen of categorieën die geen numerieke waarden hebben. - Kwantitatieve (numerieke) : meetbare hoeveelheden en hebben numerieke waarden   Kwalitatief / categorische variabelen : - Nominaal meetniveau - Gegevens worden gecategoriseerd zonder een specifieke volgorde - Voorbeelden : bloedgroep, haarkleur, soorten dieren, taal, genre... - Ordinaal meetniveau - Gegevens worden gecategoriseerd met een specifieke volgorde, maar zonder gelijke afstand tussen categorieën. Rangorde is belangrijk - Voorbeelden : opleidingsniveau , klantentevredenheid...   Kwantitatieve / numerieke waarden : - Interval meetniveau - Gegevens worden gecategoriseerd met gelijke afstand tussen waarden, maar zonder een absoluut nulpunt - Voorbeelden : temperatuur in Celcius of Farenheit - Opmerking: 0 graden betekent niet de afwezigheid van temperatuur, maar specifieke temperatuurwaarde op de schaal. Jaar 0 betekent niet dat er niets eerder is gebeurd. - Ratio meetniveau - Gegevens worden gecategoriseerd met gelijke afstanden tussen waarden en een absoluut nulpunt - Voorbeelden : lengte, gewicht, inkomen - 0 cm betekent geen lengte en de afstanden tussen de waarde zijn gelijk. - 0 kg betekent geen gewicht en je kunt verhoudingen berekenen - 0 euro betekent geen inkomen en je kan verhoudingen en percentages berekenen   Waarom is dit onderscheid zo belangrijk? - Keuze en interpretatie van statische methode: - De keuze van beschrijvende statistiek hangt af van het meetniveau van de variabelen - BV : het gemiddelde is geschikt voor interval, ratio variabelen, maar niet voor nominale variabelen - Het meetniveau bepaalt welke conclusies je kunt trekken. - Bij nominale gegevens kun je alleen de frequentie van categorieën vergelijken, terwijl je bij ratio gegevens ook verhoudingen kunt berekenen - Data visualisatie - Het type grafiek dat je gebruikt om gegevens te visualiseren hangt af van het meetniveau. - Voor nominale gegevens gebruik je bv staafdiagrammen of cirkeldiagrammen, terwijl je voor interval en ratio gegevens histogrammen of scatterplots kunt gebruiken.   Discrete vs Continue (Kwantitatieve)   **[2.2 Van databases naar statistieken]** : Draaitabellen - Vorige : vooral met tabellen - Over het algemeen was elke rij een record - De informatie bestond uit zowel kwalitatieve velden als kwantitatieve - Nu concentreren op hoe tabellen kunnen transformeren om kwantitatieve informatie te krijgen   Hier passen we een voorbeeld uit Hoorcollege 2 enigszins aan - ![](media/image4.png)Bij het doornemen van deze tabel zou je een aantal natuurlijke vragen kunnen opwerpen, zoals: hoeveel burgers worden door elke partij \"geregeerd\", of hoeveel grondgebied wordt door elke partij bestuurd? Of (hoewel, toegegeven, iets minder interessant, hoeveel burgers zijn er per zonenummer etc.) Uiteraard is deze tabel maar een zeer kleine greep uit de West-Vlaamse steden, dus er kunnen geen serieuze statistieken worden gemaakt!!   Concreet, als je de vraag wilt beantwoorden hoeveel burgers elke partij bestuurt, wil je per partij het aantal burgers optellen. Dit zou een nieuwe tabel maken (zie volgende dia)   In dit geval was CD&V (Brugge, Roeselare, Waregem) de enige partij die aan verschillende steden werd toegewezen, en dus tellen we alleen over die rijen op. Voor de andere partijen rapporteren we alleen de waarden van de bijbehorende rij.   [Draaitabellen ] - Typisch voorbeeld van draaitabel - Stellen gebruikers in staat om grote hoeveelheden gegevens op een flexibele en interactieve manier samen te vatten, analyseren, verkennen en presenteren - Gegevens worden geaggregeerd binnen één of meer afzonderlijke variabelen (hier politieke partijen) - De gegevens die we willen samenvatten kunnen op verschillende manieren verwerkt worden - Som van inwoners - De rest gaan we nog zien   Categorische variabelen samenvoegen :  ![](media/image6.png)In dit geval kunnen we ons afvragen: hoeveel boeken zijn er in het Frans en in het Nederlands (categorische variabele) geschreven? Dit geeft de draaitabel van de volgende dia.   Dit aantal komt overeen met het aantal rijen waarin de twee talen respectievelijk voorkomen.   ![](media/image8.png)We zouden ons ook kunnen afvragen hoeveel \"verschillende\" auteurs in het Frans en het Nederlands hebben gepubliceerd? Hier levert het tellen van de rijen niet het juiste resultaat op, omdat in verschillende gevallen dezelfde auteur in één taal lijkt te hebben gepubliceerd. In dit geval tellen we de \*verschillende waarden\* die voorkomen in de rijen van het Nederlands en het Frans. Dat wil zeggen dat we Hugo Claus en Louis-Paul Boon slechts één keer voor Nederlands tellen, en Georges Simenon en Maurice Materlinck slechts één keer voor het Frans. De resulterende draaitabel wordt weergegeven in de volgende dia.  Nummerieke waarden samenvoegen : - Verschillende mogelijkheden voor - In de database van de Anime vraag je je bijvoorbeeld af : - Wat is de langste anime? - Hoeveel weergaven zijn er gemiddeld geregistreerd voor elke anime? Als we teruggaan naar dit voorbeeld, kunnen we bijvoorbeeld vragen: wat is het hoogste aantal pagina\'s voor een Nederlands en een Frans boek? We kunnen ook vragen: wat is het vroegste publicatiejaar per auteur? De resultaten worden weergegeven in de volgende dia Hoe bouw je een draaitabel : in Excel ** ** **[2.3 Centrale Tendens ]** - Soms kan het handig zijn om een lijst met numerieke waarde in één getal samen te vatten - ![](media/image10.png)Bijvoorbeeld als u informatie over verschillende groepen wil vergelijken   We zullen dit eenvoudige voorbeeld van de leeftijden van een groep studenten gebruiken om de drie maten van centrale tendens te introduceren (ook wel centrummaat, liggingsmaat of centrumgetal genoemd)  De drie maatstaven die we gaan onderzoeken zijn de modus, de mediaan en het gemiddelde. Ze bevatten verschillende informatie over de dataset en moeten voor verschillende doeleinden worden gebruikt, en met enige voorzichtigheid.   **Modus** = eenvoudige en intuïtieve maatstaf voor centrale tendens - Waarde die het vaakst voorkomt in je gegevens - Er is maar één modus - Bi of multimodale distributie = twee waarden komen hetzelfde aantal keren voor en zijn meest voorkomend   In het geval van onze tabel zien we dat vijf studenten 19 zijn, en dat de andere leeftijden lagere cijfers krijgen. Daarom is de modus 19. Dit kan worden gevisualiseerd met een staafdiagram, waarbij de hogere balk de meest geattesteerde leeftijd vertegenwoordigt - Kan worden berekend door allerlei variabelen : categorisch en numeriek ![](media/image12.png)  Modus voor continue variabelen - Als je i.p.v. categorisch (auteurs) of discrete (leeftijd) variabelen continue variabelen hebt, is het moeilijker - Deze tabel is onwaarschijnlijk dat veel waarden hetzelfde gaan zijn - Zo kan je bv waarde gaan groeperen in aangepaste intervallen - Op deze manier wordt uw distributie \"discreet\" **Mediaan** = de waarde die zich in het midden van de dataset bevindt - Ten minste 50% van de waarden kleiner of gelijk is en ten minste 50% gelijk aan of groter is dan de mediaan - In onze dataset is de mediaan 20 - 14 totaal studenten - 9 met leeftijd groter dan 20 - 8 met leeftijd keiner dan 20   Eindige lijst van discrete getallen (oneven) - Als we de waarde van de kleinste naar de grootste ordenen hebben we 18, 19, 19, 19, 19, 19, 20, 20, 21, 22, 23, 34, 35, 45 - We hebben 13 geordende waarden, dus de 7de waarde heeft 6 waarden die lager of gelijk zijn en 6 groter of gelijk - 1 leeftijd van 20 even verdwenen ter illustratie   Bij even getallen (14) : 18, 19, 19, 19, 19, 19, 20, 20, 20, 21, 22, 23, 34, 35, 45 - We hebben 14 geordende waarden en de mediaan wordt gegeven door het gemiddelde van de twee centrale waarden - In dit geval 20, 20 dus 20   In het geval van een andere dataset zouden we het volgende hebben   **Rekenkundig gemiddelde** = de som van een aantal getallen gedeeld door het aantal getallen - Concreet in het geval van de leeftijd in de dataset van de studenten, hebben we dat het gemiddelde gelijk is aan : 23,64   Gemiddelde VS Mediaan - Verschillen aanzienlijk met betrekking tot de gevoeligheid voor uitschieters - Als er in een dataset een of meer waarden zijn die aanzienlijk hoger of lager zijn dan de meeste andere waarden : - Het gemiddelde zal sterk worden beïnvloed - De mediaan wordt niet beïnvloedt - Om deze reden is het rekenkundig gemiddelde beter geschikt voor datasets zonder uitschieters en de mediaan met uitschieters   [Skewed distributions] - Om dit te formaliseren kunnen mediaan en rekenkundig gemiddelde beide worden gebruikt met numerieke variabelen - Ze verschillen aanzienlijk in het geval van de zogenaamde skewed distributions - = een type verdeling waarbij de waarde niet gelijkmatig zijn verdeeld rond het gemiddelde - Dit betekend dat de meeste waarden zich aan één kant van het gemiddelde bevinden, waardoor de verdeling een \"staart\" aan één kant heeft   Rechtsscheef : positief scheef - Lage waarden aan rechterkant - ![](media/image14.png)Inkomstenverdelingen, waar de mensen een gemiddeld inkomen hebben, maar enkele mensen zeer hoge - Als gevolg hiervan wordt het gemiddelde door deze uitschieters naar rechts \"gesleept\" en wordt het hoger dan de mediaan, die daarentegen niet wordt beïnvloed door hoge uitschieters. **Bij positieve scheve verdelingen is het gemiddelde dus hoger dan de mediaan** Linksscheef : negatief scheef - Lage waarden aan linkerkant - Leeftijden bij pensionering, waar de meeste mensen rond een bepaalde leeftijd met pension gaan, maar enkele veel eerder stoppen Als gevolg hiervan wordt het gemiddelde door deze uitschieters naar links "gesleept" en wordt het lager dan de mediaan, die daarentegen niet wordt beïnvloed door lage uitschieters. **Bij negatieve scheve verdelingen is het gemiddelde dus lager dan de mediaan.**   Welke statistieken voor welke variabelen? ![A white rectangular table with black text Description automatically generated](media/image16.png)   **Let op**: voor de mediaan van ordinaal meetniveau: Bij een even aantal observaties is het niet altijd duidelijk hoe de mediaan te bepalen, omdat er geen exacte middelste waarde is. In dat geval kan de mediaan worden berekend als het gemiddelde van de twee middelste waarden, maar dit kan lastig zijn bij ordinale data zonder gelijke afstanden   **[ 2.4 Een algemeen overzicht van de data]** - Soms interessant om te vergelijken hoe bepaalde waarde zich verhouden tot het totaal van de dataset - Een eenvoudige manier om dit te doen is bijvoorbeeld door de waarde te delen door het totaal om een verhouding te krijgen   Overige metingen : 2 andere mogelijkheden 1. **Cumulatieve som** : d.w.z. nagaan hoe het totaal aantal waarnemingen evolueert 2. **Percentielen** : d.w.z. een manier om een bepaalde score/hoeveelheid te situeren op het totaal van de scores/hoeveelheden   [Cumulatieve waarden : ] - Sommige gevallen, vooral als de waarden in een bepaalde volgorde zijn geordend kan je vragen hoeveel van je variabelen er tot aan een bepaald punt is bereikt - Als ik weet hoeveel boeken er elke dag gedrukt zijn, zou ik na een week kunnen vragen hoeveel boeken er totaal gedrukt zijn.   Voorbeeld : de tabel geeft het aantal keren weer dat het woord \'geluk\' in elk hoofdstuk van een boek wordt gedrukt Als we de \"running total\" willen berekenen, kunnen we een nieuwe kolom toevoegen waar de voorvallen worden opgeteld ![](media/image18.png)   De visualisatie toont zowel de tellingen per hoofdstuk van \"geluk\" (maten) als de cumulatieve som (lijn) van de tellingen. Deze visualisatie maakt bijvoorbeeld duidelijk dat in de laatste hoofdstukken de vermelding van geluk aanzienlijk vertraagt en ze slechts minimaal bijdragen aan het totaalbedrag.   [Percentiles : ] - Percentielen worden in de statistiek gebruikt om scores aan te geven waaronder een bepaald percentage van de scores wordt gevonden - Op dezelfde manier geeft de percentielrang aan welk percentage van de scores onder die score ligt : De percentielrang geeft aan welk percentage van de scores strikt lager is dan een bepaalde score. - Als je score zich bevindt in het 75e percentiel, betekent dit dat 75% van de scores lager of gelijk is aan jouw score. - NB Percentielen kunnen zowel inclusief als exclusief zijn: d.w.z. u kunt beslissen of u wilt dat het gekozen percentage gemiddelden \"lager of gelijk\" is of strikt lager is dan de aangegeven waarde - Inclusief : Rekenen de gekozen waarde mee bij het percentage - Exclusief : Rekenen alleen de scores die **strikt lager** zijn mee - Wanneer u daarentegen de percentielrang geeft, is deze altijd exclusief, d.w.z. als uw percentielrang 60% is, betekent dit dat 60% van de gemiddelden strikt lager is dan die van u   Percentielen en mediaan : Als je erover nadenkt is het 50e percentiel hetzelfde als de mediaan 50% van de waarnemingen is lager of gelijk aan die waarde   **[2.5:  Spreidingsmaten ]** - Bij de bespreking van de centrale maatregelen (modus, mediaan, gemiddelde) hebben we vermeld dat ze zich anders kunnen gedragen op basis van hoe \"verspreid\" de dataset is - In dit gedeelte introduceren we metingen die kunnen worden gebruikt om rekening te houden met de variabiliteit van de gegevens - Intuïtief wil je inschatten hoe ver de waarden zijn ten opzichte van de centrale waarde   **Spreidingsbreedte :** - Een eerste meting is de spreidingsbreedte/variatiebreedte (range) - Geeft het verschil tussen de hoogste en laagste waarde in een dataset aan. - Bv van het aantal paginas: 776 - 196 : 580 - Geeft niet altijd volledige plaatje weer   **Variantie :** - Een maat voor de spreiding van een reeks waarden - Hoe groter de variantie, hoe meer de waarden van het \"gemiddelde\" afwijken - Formeel is de variantie het gemiddelde van de kwadraten van de afwijking van het gemiddelde - Variatie van leeftijden   Enkele observaties : - Variantie wordt uitgedrukt in kwadratische eenheden van de oorspronkelijke data, wat soms interpretatie moeilijker kan maken - Variantie is gevoelig voor uitschieters - Variantie vertelt ons niet of onze waarden hoger of lager zijn dan het gemiddelde   **Standaardafwijking :** - Berekend door de wortel van de variantie te gebruiken - Vandaar dat de eenheden nu van dezelfde soort zijn als de oorspronkelijke waarden niet meer gekwadrateerd.   Algemene interpretatie - Het geeft aan hoe ver de individuele data punten gemiddeld van het gemiddelde af liggen   **[2. 6: Datavisualisaties]** Waarom? - Visualiseren van data helpt om inzicht te krijgen in de inhoud van je dataset - Het helpt ook om statistische informatie te nuanceren - Francis Anscome creëerde in 1973 het zogenaamde \'kwartet van Anscombe\' waarbij vier datasets identieke statistische parameters hebben maar zeer verschillende soorten gegevens   [Nominale data: ] **Cirkeldiagrammen** : grafiek die data weergeeft als een sector van een cirkel, waarbij elke sector een proportie van het geheel vertegenwoordigt - Ze worden vaak gebruikt om de verdeling van categorieën binnen een dataset te tonen - Beperkingen? - Vaak moeilijk om de grootte van de sectoren nauwkeurig te vergelijken, vooral als de verschillen klein zijn. Leidt tot misinterpretaties - Cirkeldiagrammen werken het beste met een beperkt aantal categorieën. **Staafdiagrammen** : tonen de frequentie van categorieën - Zowel horizontaal als verticaal - Assen duidelijk labelen en consistente schalen gebruiken - Afgekapte grafieken zijn bijzonder gevaarlijk - Volgorde van de etiketten kiezen - Alfabetisch - Toenemende / afnemende volgorde van frequentie   [Kwantitatieve data: ] **Histogrammen** : verdeling van een dataset weer - Het verdeelt de data in intervallen en toont hoe vaak waarden binnen elk interval voorkomen - Vaak gebruikt om de vorm van de data te visualiseren - Vaak gebruikt voor continue gegevens, maar kunnen ook worden gebruikt met discrete gegevens   **Lijngrafiek** : type grafiek dat datapunten verbindt met een rechte lijn - Vaak gebruikt om veranderingen in data over tijd te visualiseren - x-as vertegenwoordigt meestal de tijd of een andere continue variabele - y-as toont de waarde van de gemeten variabelen   **Spreidingsdiagrammen** : type grafiek dat de relatie tussen twee numerieke variabelen weergeeft - Elke punt in de grafiek vertegenwoordigt een waarneming met een waarde voor beide variabelen - x-as vertegenwoordigt waarden van de eerste variabelen - y-as toont de waarden van de tweede variabelen   Cumulatieve frequentie/**somgrafiek** : - Toont de opeenstapeling van waarde in een dataset - x-as vertegenwoordigt de datapunten of tijdsintervallen - y-as cumulatieve som/frequentie toont   Algemene aandachtspunten : - Elke visualisatie die u gebruikt enkele algemene toepassingen - Maak het duidelijk - Labels - Titel - Eenheden - Maak het transparant - Vermeld de bron - Maak het leesbaar - Let op de schaal - Gebruik de kleuren alleen als ze zinvolle info overbrengen - Maak uw gegevens zo onderscheidend mogelijk Leermodule 3: Data online ========================= **[3.1 Netwerken : waar hebben we het over? ]** Netwerken zijn systemen die apparaten met elkaar verbinden, zodat ze gegevens kunnen uitwisselen. - **Apparaten** : omvat computers, printers... - **Verbindingsmiddelen** : hubs, switches en routers zorgen voor de overdracht van gegevens tussen apparaten - **Protocollen** : de regels die bepalen hoe gegevens worden verzonden en ontvangen - **Netwerkarchitectuur** : dit verwijst naar de indeling en organisatie van het netwerk, inclusief de topologie. - **Peer-to-Peer netwerken:** alle computers spelen dezelfde rol. Elk apparaat kan zowel gegevens verzenden als ontvangen, zonder een centrale server. - **Client-Server netwerken:** In client-server netwerken vragen clientcomputers informatie aan servercomputers. Servercomputers zijn vaak groter en duurder. Twee verschillende soorten netwerken - Veelvoorkomende servers - Webservers : - Bewaren meestal webpagina\'s en programma\'s - Toegankelijk vanaf elke locatie op het internet - Ontvangen meestal HTTP-verzoeken en zijn vaak verantwoordelijk voor veilige toegang tot de pagina\'s - Dataservers - Reageren op verzoeken met informatie uit de database   Soort netwerken - **Bekabelde** netwerken - Verbonden via fysieke apparaten - Meer stabiel en veilig : niet zichtbaar voor andere netwerken - Meestal sneller, maar minder flexibel - **Draadloze** netwerken - Gebruiken radiosignalen of microgolfstraling - Mogelijke interferentie; als ze niet goed beveilig zijn, kunnen ze worden onderschept - Veranderingen in signaalsterke zijn mogelijk - Echter, meer flexibel en minder duur   Verbindingsmiddelen - **Hubs** : verbind apparaten met elkaar door het bericht door te geven aan alle apparaten - **Schakelaars**: registreer het bestemmingsadres van alle aangesloten computers, zodat het bericht alleen aan geselecteerde computers kan worden doorgegeven - **Routers** : verbind netwerken met elkaar - **Gateways**: zijn in staat om netwerken met behulp van verschillende protocollen met elkaar te verbinden   Protocollen - Reeks regels om de interactie tussen entiteiten te reguleren - In een netwerk zijn er verschillende lagen die zorgen voor de overdracht van het bericht, elk met specifieke regels, gedefinieerd door het protocol - Twee van de bekendste protocollen - TCP/IP - TCP: Transmission Control Protocol - IP: Internet Protocol (IP adres is een unieke identificatiecode voor een computer of netwerk) - HTTP - HTTP: Hypertext Transfer Protocol   - -   -   [Internet en het World Wide Web ] Internet - een wereldwijd netwerk dat computers, tablets, andere apparaten in staat stelt om met elkaar te communiceren - Het bestaat uit kabels en apparaten die deze communicatie mogelijk maken World wide web - Een organisatorisch systeem voor informatie dat toegankelijk is via het internet - Het is belangrijk op te merken dat je het internet kunt gebruiken zonder het WWW, bv emails versturen of telefoongesprekken voeren - Wanneer je een website opent, stuurt je browser een HTTP-verzoek naar een server. De server retourneert gegevens zoals HTML, CSS en JavaScript.   Hoe werkt het? - Wanneer je een webpagina opent, stuurt je browser een HTTP verzoek naar de server die de pagina host. De server reageert door de gevraagde gegevens terug te sturen, die vervolgens door de browser worden weergegeven. - De server kan drie soorten informatie verzenden - HTML : structuur en inhoud van webpagina's - CSS : opmaak en stijl - Javascript : gedrag en interactiviteit   Client - server Naast CSS- en Html-bestanden kan de browser ook andere bestanden opvragen, zoals afbeeldingen of multimedia-inhoud. **HTML** : Hyper Text Markup Language. - HTML is de opmaaktaal die de structuur van een webpagina definieert. Het vormt de basis waarop CSS en JavaScript functioneren. HTML-elementen zoals koppen, paragrafen en afbeeldingen organiseren de inhoud van de pagina. **CSS** : (Cascading Style Sheets) - biedt instructies voor de presentatie, opmaak, stijl en lay-out van de webpagina. Het bepaalt hoe HTML-elementen worden weergegeven, inclusief kleuren, lettertypen en indelingen, waardoor de visuele aantrekkingskracht van de pagina wordt verbeterd. **Javascript** : - een programmeertaal die het gedrag van verschillende onderdelen van de webpagina controleert. Het maakt interactieve elementen mogelijk, zoals knoppen, formulieren en animaties, waardoor de gebruikerservaring dynamischer en boeiender wordt.    [3.2 Gegevens van het web halen] - Websites worden gebruikt om gegevens en informatie te delen - Deze kunnen worden geconsumeerd door menselijke lezers die een website raadplegen - Maar data kunnen ook automatisch worden opgehaald voor grootschalige data-analyse - In dit onderdeel zullen we twee manieren onderzoeken om dit te doen - Web-scraping - API\'s (application Programming Interfaces) ![](media/image20.png)\ **Scrapen** = computertechniek waarbij software wordt gebruikt om informatie van webpagina\'s te extraheren en al dan niet te analyseren. Meestal probeert de software een deel van het WWW te onderzoeken via gebruik ven het op codes gebaseerde Hypertext Transfer Protocol (HTTP) Bij webscraping wordt een programma gebruikt dat toegang krijgt tot een website, relevante pagina\'s identificeert en de volledige pagina of specifieke delen van het html-bestand retourneert met de inhoud van de pagina\'s. Meestal wordt de inhoud getransformeerd in een soort (semi)gestructureerd bestand, zoals we eerder hebben gezien: - XML - csv-bestanden - relationele SQL-databases - Een ander dataformaat dat vaak voorkomt is JSON, specifiek voor data-uitwisseling tussen webapplicaties. Het maakt gebruik van door mensen leesbare tekst en slaat sleutel-waardeparen en matrices op.   Scrapen : stappen - Drie hoofdfases voor webscraping - De webscraper stuurt een HTTP verzoek naar een webserver om toegang te krijgen tot een website (op basis van wat de programmeur heeft gecodeerd) - Vervolgens inspecteert het de HTML inhoud en extraheert het de relevante delen - De relevante gegevens worden lokaal opgeslagen op een opslag die wordt beheerd door de \"scraper\"   Hoe zie je de html - structuur van een pagina - Chrome : right click \> show page source   Belangrijke punten om te overwegen : - Staat de website waarvan u uw gegevens wilt ophalen scraping toe? - Elke website heeft een robots.txt pagina die uitlegt wat wel en niet is toegestaan op het gebied van scrapen - Typ het adres van de startpagina gevolgd door /robots.txt - Voorkom dat u in korte tijd meerdere verzoeken naar een website stuurt - Kan uw IP adres blokkeren - Probeer het zo langzaam mogelijk te maken - Houd rekening met juridische termen - Schrapen is legaal - Maar de reden waarom, mogelijks niet   Hoe gaan we scrapen in deze portfolio? - Openrefine - Één URL of meer verstrekken en OpenRefine stuurt een HTTP verzoek naar de website om de inhoud van de pagina\'s te krijgen - De inhoud wordt vervolgens opgeslagen in uw OpenRefine project en u kunt OpenRefine gebruiken om HTML code te parsen - Het is ook mogelijk om slechts een deel van de HTML inhoud op te halen door het HTTP verzoek aan te passen   **API** - Is een set regels en protocollen die bepaalt hoe softwaretoepassingen met elkaar communiceren - Een veelgebruikte analogie om API\'s uit te leggen is in vergelijking met restaurants. - De gebruiker kan gezien worden als een klant van het restaurant. - Ze bestellen wat ze willen aan de ober (in de bovenstaande figuur is de klant de API-consumer, de ober de API). - De ober geeft vervolgens de bestelling door aan de keuken (hier de web-/application server), met behulp van de specifieke termen die het keukenpersoneel zal herkennen. - Vervolgens stuurt de server met behulp van ingrediënten die in de keuken (hier de database, endpoint) worden gevonden de bestelling terug naar de ober (API) die deze terugbrengt naar de klant.   Voorbeelden van API\'s - Elke dag gebruiken we API\'s - Weer snippets - Sommige websites tonen weersinformatie die ze ophalen van websites van meteologische departementen - Reizen Bookings - Websites met verschillende opties voor het vinden van de beste combinatie van vluchten en hotels halen informatie op van websites van hotels en luchtvaartmaatschappijen door API\'s - Googlemaps - Haalt info uit API\'s van verschillende bedrijven voor openingstijden, fotos...   Hoe gaan we API\'s gebruiken? - OpenRefine heeft ingebouwde functies voor toegang tot verschillende API\'s - In portfolio 2 API\'s - Een voor het koppelen van geografische coördinaten aan plaatsnamen - Een voor het evalueren van het \"sentiment\" : positief, negatief, neutraal - van een reeks tweets   **[2.3 : Structureren van gegevens op het web: ]** - Scraping geeft zeer luidruchtige gegevens : html bestanden bevatten de structuur van de pagina, maar niet echt de structuur van de gegevens - API retourneert gegevens die zijn gestructureerd volgens het model/de beslissingen van de provider - In de afgelopen decennia zijn er ook pogingen gedaan om gegevens op een gestandaardiseerde en gestructureerde manier op het web te delen - Linked data: voorstel van de uitvinder van het web - Twee van belangrijkste elementen van linked data zijn : - Het gebruik van uniform resource identifiers - Het gebruik van standaard datamodellen   Retrieving identifiers on the web - Leermodule 1: belang van het toekennen van identifiers aan je data - Enkele bronnen - Wikidata - VIAF - CERL - Mogelijk om het HTTP-protocol te gebruiken om uw gegevens automatisch te verrijken - Identifier providers hebben in feite API\'s die u kunt gebruiken om uw gegevens te matchen met stabiele identifiers   Bronnen voor ID\'s   Hier zijn enkele bronnen die je kunt gebruiken: - **VIAF (Virtual International Authority File):** VIAF is een internationale database die autoriteitsbestanden van nationale bibliotheken en andere instellingen samenvoegt. Het doel is om een gemeenschappelijke bron te bieden voor de unieke identificatie van namen van personen, organisaties en titels van werken. VIAF-identifiers helpen bij het eenduidig identificeren van auteurs en andere entiteiten, zelfs als hun namen in verschillende talen of vormen voorkomen. Dit voorkomt verwarring en maakt het eenvoudiger om informatie over dezelfde entiteit uit verschillende bronnen te combineren. - **Wikidata:** Wikidata is een vrije en open kennisbank die door iedereen bewerkt kan worden. Het dient als een centrale opslagplaats voor gestructureerde data van Wikimedia-projecten zoals Wikipedia. Wikidata-identifiers (Q-nummers) zorgen voor een unieke identificatie van concepten, objecten en entiteiten. Dit maakt het mogelijk om gegevens uit verschillende bronnen te koppelen en te integreren, wat de interoperabiliteit en herbruikbaarheid van data bevordert. - **ISNI (International Standard Name Identifier):** ISNI is een gestandaardiseerd systeem voor het uniek identificeren van de publieke identiteit van bijdragers aan creatieve werken, zoals auteurs, artiesten en onderzoekers. ISNI-identifiers zorgen voor een unieke en consistente identificatie van personen en organisaties, wat belangrijk is voor het beheer van rechten en het verbeteren van de vindbaarheid van werken. Dit helpt bij het vermijden van ambiguïteit en het correct toewijzen van werken aan hun makers. - **CERL (Consortium of European Research Libraries) :** CERL is een consortium van Europese onderzoek bibliotheken dat zich richt op het verbeteren van de toegang tot en het behoud van het Europese culturele erfgoed, met name oude en zeldzame boeken. CERL-identifiers helpen bij het uniek identificeren van oude en zeldzame boeken en hun auteurs. Dit is cruciaal voor het nauwkeurig catalogiseren en delen van informatie over historische werken, en voor het bevorderen van onderzoek en samenwerking tussen bibliotheken.   Voor boeken: - **DOI (Digital Object Identifier) :** DOI is een unieke alfanumerieke string die wordt toegewezen aan digitale objecten, zoals artikelen, boeken, en datasets. Het biedt een permanente link naar de locatie van het object op het internet. DOI's zorgen voor een stabiele en betrouwbare manier om digitale objecten te identificeren en te vinden, zelfs als de URL verandert. Dit is vooral nuttig voor academische publicaties en onderzoeksdata. - **CERL (Consortium of European Research Libraries):** CERL is een consortium van Europese onderzoeksbibliotheken dat zich richt op het verbeteren van de toegang tot en het behoud van het Europese culturele erfgoed, met name oude en zeldzame boeken. CERL-identifiers helpen bij het uniek identificeren van oude en zeldzame boeken en hun auteurs. Dit is cruciaal voor het nauwkeurig catalogiseren en delen van informatie over historische werken, en voor het bevorderen van onderzoek en samenwerking tussen bibliotheken. - **USTC (Universal Short Title Catalogue):**USTC is een database die alle boeken die tussen 1450 en 1650 in Europa zijn gedrukt, registreert. Het biedt een uitgebreide bibliografische beschrijving van deze werken.USTC-identifiers zorgen voor een unieke identificatie van vroege gedrukte boeken, wat onderzoekers helpt bij het vinden en bestuderen van deze werken. Dit bevordert het onderzoek naar de geschiedenis van het boek en de verspreiding van kennis in de vroege moderne periode.   Voor plaatsen - **GeoNames :** GeoNames is een geografische database die informatie bevat over meer dan 11 miljoen geografische namen en locaties wereldwijd. Het biedt gedetailleerde gegevens zoals coördinaten, hoogte, bevolkingsaantallen en administratieve indelingen. GeoNames-identifiers zorgen voor een unieke identificatie van geografische locaties, wat helpt bij het nauwkeurig vinden en koppelen van geografische data uit verschillende bronnen. Dit is vooral nuttig voor geografische informatiesystemen (GIS) en locatiegebaseerde diensten. - **World Historical Gazetteer :** De World Historical Gazetteer is een digitale infrastructuur die historische plaatsnamen en hun veranderingen in de tijd documenteert. Het biedt een platform voor het koppelen van historische gegevens aan geografische locaties. Identifiers van de World Historical Gazetteer helpen bij het uniek identificeren van historische plaatsen en hun varianten door de tijd heen. Dit is cruciaal voor historisch onderzoek en het begrijpen van geografische veranderingen in historische contexten. - **Pleiades:** Pleiades is een gemeenschapsgestuurde digitale gazetteer en geografische database van oude plaatsen. Het richt zich op de klassieke oudheid en biedt gedetailleerde informatie over locaties zoals steden, heiligdommen en wegen. Pleiades-identifiers zorgen voor een unieke identificatie van oude plaatsen, wat onderzoekers helpt bij het vinden en bestuderen van deze locaties. Dit bevordert het onderzoek naar de geografie en geschiedenis van de klassieke oudheid.   Voorbeeld: reconciliation functie in OpenRefine - OpenRefine biedt de mogelijkheid om uw records te matchen met Wikidata items - Door gebruik te maken van specifieke API wordt de lijst met meest waarschijnlijke kandidaten teruggestuurd, samen met hun identifier - U kunt aanvullende informatie aan API verstrekken, bijvoorbeeld informatie uit andere kolommen - Dankzij deze match kunt u uw database verrijken met aanvullende informatie die u in het Wikidata-record vindt - In ons portfolio : coordinaten   Gestandaardiseerde datamodellen gebruiken - Standaarden kunnen niet alleen worden gebruikt bij het identificeren van records, maar ook bij het ontwerpen van uw datamodel - Voor verschillende domeinen zijn er conventies over welke velden moeten worden aangenomen - Dit vergemakkelijkt het delen van gegevens op het web omdat het categorieën direct herkenbaar maakt - Modellen zijn te vinden in verschillende domeinen van cultuur tot taalkunde inclusief afbeeldingen   Voorbeeld : CIDOC-CRM voor cultureel erfgoed - Conceptual Reference Model - Biedt een standaard vocabulaire en kader voor het beschrijven en uitwisselen van informatie over cultureel erfgoed - Elk object in de collectie wordt behandeld als een individuele entiteit - Elk object heeft een unieke set van eigenschappen en relaties met andere objecten - Zeer belangrijk voor archeologen   Taalkundige informatie annoteren - Taalgegevens annoteren - Annoteren betekent de tekst verrijken met bijvoorbeeld extra info - Morfologische info - Identificatie van benoemde entiteiten - \"sentiment\" (positief, negatief, neutraal) van een woord - Er zijn standaarden ontwikkeld om deze annotaties vergelijkbaar te maken over verschillende projecten en talen heen   Universal dependencies voor taalkundige annotaties - Een gerenommeerd project is \"universal dependencies\" - Het biedt standaarden om online open toegangelijke syntactische treebanks te publiceren - Belangrijkste doel? Is het bereiken van cross linguïstische consistentie - Gebaseerd op afhankelijkheidsgrammatica   Afbeeldingen delen op het web - **IIIF** (prononceerd "Triple-Eye-Eff") (International Image Interoperability Framework) is een set van standaarden die zijn ontworpen om de publicatie en uitwisseling van afbeeldingen en metadata te vergemakkelijken   Definieert specifieke formaten en protocollen voor het publiceren van afbeeldingen, waardoor het mogelijk is om beelden op een consistente manier te delen. Dit omvat richtlijnen voor hoe metadata moet worden gestructureerd en gepresenteerd, zodat gebruikers gemakkelijk toegang hebben tot relevante informatie.   - - -   Het framework maakt gebruik van API\'s om interactie tussen verschillende systemen mogelijk te maken. Dit betekent dat ontwikkelaars applicaties kunnen bouwen die naadloos kunnen communiceren met IIIF-compatibele bronnen. Hierdoor kunnen gebruikers afbeeldingen op verschillende manieren bekijken, zoals in zoom-instellingen of in verschillende formaten, zonder dat ze zich zorgen hoeven te maken over de onderliggende technische details.   Wat als je geen gegevens hebt? Computers kunnen ons hierbij helpen.    **[2.4 Reguliere expressies: ]** = manier om patronen te beschrijven waardoor een computer softwarematig tekst kan herkennen. Er bestaat hiervoor een formele syntaxis, die deels is gestandaardiseerd   Wat is reguliere expressie? - Wanneer u naar een tekenreeks zoekt, zoekt u over het algemeen naar een exacte overeenkomst in een tekst - In verschillende tools editors kun je heel gemakkelijk een generalisatie introduceren : - Maak de zoekopdracht niet hoofdlettergevoelig - Gebruik een \* om meerdere eindes toe te staan - Reguliere expressies generaliseren over deze mogelijkheden   Concreet maak je heel vaak gebruik van de zoekfunctie in een tekst. Vaak zoek je naar een precieze string, maar je kunt ook eenvoudig enkele variaties aanbrengen. Reguliere expressies maken het mogelijk om dit soort generalisatie te vergroten   Tekenklassen: - Vrijheid met betrekking tot het personage dat je wilt matchen - (ml)ove is zowel move als love - Typische klassen zijn onder meer - Lijst van letter (abc) = a,b,c - Uitgesloten letters (\^abc) = elk teken behalve a,b,c - Bereik van letters - (a-z) - (a-zA-Z) De eerste vorm van generalisatie die is toegestaan is het feit dat je voor een bepaalde positie verschillende alternatieven kunt aandragen: je kunt bijvoorbeeld de letters opsommen die die positie kunnen innemen, zoals je in het eerste voorbeeld ziet. Of u kunt enkele tekens \"uitsluiten\": stel je voor dat je alle namen wilt vinden die niet eindigen op een \"e\", dan kun je deze mogelijkheid gebruiken. U kunt ook een reeks letters aangeven, bijvoorbeeld als u geïnteresseerd bent in alle woorden die beginnen met de eerste drie letters van het alfabet, of met een hoofdletter van A tot Z\...   Vooraf gedefinieerde tekenklassen: -. : elk teken - /d : een cijfer - /s : een spatieteken - / w: elk woordteken   Sommige klassen van tekens komen bijzonder vaak voor en hebben daarom een specifieke \"snelkoppeling\" gekregen, die u in de dia ziet staan. Bijvoorbeeld de. geeft meestal \'elk teken\' aan, terwijl de \\d een cijfer enz. aangeeft. De backslash geeft aan dat wat volgt een speciaal teken is   Negatieve tekenklassen: - /D: een niet cijfer - /S; een teken zonder spaties - /W: elk niet-woordteken - Op dezelfde manier krijgen de aanvullende klassen naast de genoemde klassen ook een specifieke \'snelkoppeling\', zoals je in deze dia kunt zien.    Grens matchers: - Soms wil u er zeker van zijn dat sequenties op specifieke posities in de snaar worden opgehaald - \^begin van een regel - \$ einde van een regel - /b een woordgrens   In sommige gevallen kan het belangrijk voor u zijn om woorden op te halen die op een bepaalde positie in de tekenreeks voorkomen. Voordat we woorden hebben genoemd die op een bepaalde manier eindigen of beginnen, kun je met reguliere expressies dit specificeren, door symbolen te geven om het begin of het einde van een tekenreeks aan te duiden, maar ook het begin/einde van een woord. We zullen later enkele toepassingen zien!   Hulpmiddel reguliere expressies : quantifiers - Soms moet u een letter een ander aantal keren laten herhalen - Stel dat u op de letter \"b\" zoekt - b? : één of 0 herhalingen van b - b\* : zero or more repititions - b+ : een of meerdere - b{n} : precies n keer Soms weet je bijvoorbeeld niet hoe vaak een bepaalde letter wordt herhaald, of dat hij überhaupt aanwezig is. Vandaar dat sommige symbolen kunnen aangeven dat het teken (of de klasse van tekens) dat er onmiddellijk aan voorafgaat, een bepaald aantal keren kan voorkomen, of 0 of 1 keren, of 1 of meer keren enz.   Reguliere expressies en Open Refine - Er zijn verschillende manieren om reguliere expressies te coderen, verschillende \"talen\" die u kunt gebruiken om de patronen uit te drukken - OpenRefine stelt verschillende mogelijkheden voor - Focussen op GREL (General Refine Expression Language) - ![](media/image22.png)Specifieke toepassing van de Java-syntaxis In navolging van de tool/programmeertaal die u gebruikt, zijn er verschillende specifieke syntaxen voor het schrijven van reguliere expressies, ook al blijven de algemene principes hetzelfde. Omdat reguliere expressies essentieel zijn voor het opschonen van de bestanden, biedt Open Refine een functie om deze op kolommen uit te voeren en ze te gebruiken om waarden te vervangen/cellen te splitsen/nieuwe kolommen te maken op basis van de vorige.   Hier zijn enkele voorbeelden om het potentieel van deze tool te zien! U kunt alle Nederlandse woorden die eindigen op \"en\" vastleggen Of alle datums met een bepaald formaat. Evenals alle zinnen die eindigen met een uitroepteken!   Reguliere Expressies in OpenRefine - GREL (General Refine Expression Language) is een krachtige expressietaal die wordt gebruikt in OpenRefine, een tool voor datacleaning en transformatie - We bespreken : zoeken, matchen en vervangen   Matchen : - Match functie wordt gebruikt om te controleren of een bepaalde string overeenkomt met een opgegeven patroon. Dit is handig voor validatie of om een specifiek patroon in gegevens te identificeren. - Als je value.match(/pattern/) gebruikt, moet de gehele inhoud van de cel overeenkomen met het patroon. - Je kunt haakjes gebruiken om een specifiek deel van de overeenkomst terug te geven, dat toegankelijk is met een index dat begint vanaf 0.   Find: - Find functie zoekt naar een specifieke substring binnen een string en retourneert een lijst van elke keer dat in de substring voorkomt. Als de substring niet wordt gevonden, retourneert de lege lijst - U kunt de index vervolgens gebruiken om toegang te krijgen tot een specifiek item van de lijst   Replace : - value.replace(/pattern1/, "string2"): hier is de value de inhoud van de kolom, pattern1 is een reguliere expressie en string2 is de string waarmee je het wil vervangen. Reguliere expressies zijn omgeven door / terwijl normale strings tussen \"\" staan. - Wanneer je meerdere replace-aanroepen aan elkaar schrijft, wordt de output van de eerste replace gebruikt als input voor de volgende.   Vooraf gedefinieerde tekenklassen (\\S en \\s), quantifiers en grens matchers (ankers) - - - - - - - -   Gebruik van **capturing groups :** - Haakjes stellen ons in staat om een deel van het patroon vast te leggen en het opnieuw te gebruiken bij het vervangen van het patroon door iets anders. Dit wordt weergegeven in de string die wordt gebruikt om te vervangen met het \$ gevolgd door een nummer, dat de positie van de groep in de lijst van geïdentificeerde groepen aangeeft. - value.replace(/(.\*),/, \"\$1°N,\").replace(/-(.\*)°N,/, \"\$1°S,\") - Met de eerste replace matchen we het patroon \"reeks van tekens gevolgd door een komma\" vangen we de waarde naar de komma en vervangen we deze door een reeks die bestaat uit de waarden gevolg door N - Met de tweede replace matchen we het patroon \"-\" gevolgd door een willekeurig aantal tekens gevolgd door N. - Als we dit in eenvoudige woorden willen uitleggen: als we beginnen met een expressie zoals \"-12, 35\", behandelen we de waarde voor de komma en transformeren we deze eerst in \"-12°N\", en vervolgens zorgen we ervoor dat, als het negatief is, de waarde wordt omgezet in de bijbehorende positieve waarde gevolgd door \"°S\". Als de waarde al positief is, verandert de tweede replace niets. Op dit moment blijft het deel na de komma onveranderd. Â