Het Nederlandse Gigacorpus

Met 234GB aan gevarieerde platte tekst, maarliefst 40 miljard tokens, is dit in ieder geval het grootste Nederlandse corpus. Maar daarnaast is dit corpus ook vrij beschikbaar en de kwaliteit is relatief hoog voor zijn omvang, zorg is gedragen voor het zo schoon mogelijk krijgen van de data. Ook bevat het corpus 400 miljoen forumposts in 10 miljoen threads met hun timestamp intact voor taalkundig onderzoek.

Downloaden

Je kunt door middel van deze torrent het gehele corpus downloaden. Let wel op dat ik de enige seeder ben en maar ongeveer 400mbit/s ter beschikking stel. Dus mocht je in staat zijn om te seeden, graag! De torrent bevat simpelweg een tekstbestand voor elke bron gecomprimeerd met ZSTD.

Ik heb helaas niet de compute (of financiële middelen) tot m'n beschikking om een GPT-J/GPT-NeoX/Megatron variant te trainen. Dus mocht jij die mogelijkheid wel hebben dan hoor ik graag van je

Motivatie

Moderne grote taalmodellen zijn afhankelijk van een gigantische hoeveelheid gevarieerde data, en talen die niet high resource zijn lopen systematisch achter op de talen met meer beschikbare data. Om ook het Nederlands een kans te geven in deze nieuwe wereld is een kant-en-klare dataset die vergelijkbaar is met The Pile noodzakelijk. Niet alleen voor transformer-gebaseerde taalmodellen maar ook voor betere woordvectoren, n-gram frequenties en andere simpelere taalmodellen. Daarnaast hoop ik dat de taalkundige en de recreatieve taalkunstenaars hiermee ook hun voordeel kunnen doen.

Inhoud

Samengevat bestaat het corpus uit deze delen:

NL-CC 102GB
Fora 82GB
Boeken 32GB
Rechtspraak 6.5GB
DBNL 4.8GB
Twitter 1.4GB
Wikipedia 1.1GB
DCEP 0.6GB
Ondertitels 0.6GB
Nieuwsartikelen 0.4GB
Wetboek 0.2GB
OpenWebText 0.15GB

NL-CC

We beginnen met Common Crawl's WARC files, gefiltered op Nederlands d.m.v. CLD2, vervolgens met jusText de inhoud ontrokken en vervolgens geparsed met FTFY om encoderingsfouten te repareren. Als laatste is de inhoud lokaal (per chunk) gededupliceerd, op regel-basis. Ook wil ik GNU Parallel noemen als een fantastisch gereedschap om dit ook echt in redelijke tijd gedaan te krijgen.

De reden om niet de WET files te gebruiken is omdat de HTML naar tekst conversie daar zonder enige overweging m.b.t. kwaliteit is gedaan, zoals jusText dat wel doet.

Fora

Deze dataset is een verzameling van 23 van de grootste Nederlandstalige fora, en bevat in ieder geval alle nog active fora met meer dan 5 miljoen berichten. In het totaal betreft het 400 miljoen posts in 10 miljoen threads. De timestamps voor iedere post zijn afgerond op het gehele uur en auteurs zijn geanonimiseerd.

Elke thread wordt voorafgegaan door 4417a475470c48a6bd0a3f1ca97a2442-base64(Threadnaam) en elke post door d81a52adf1b443e99610457ee489b5ef-unix timestamp-anonomized username.

Deze heb ik op een zo vriendelijk en efficiënt mogelijk manier gecrawled. Bij de meeste fora is het resultaat een grote hoeveelheid HTML die verder moet worden verwerkt naar platte tekst met minimale metadata. Om dit te bewerkstelligen heb ik een simpele applicatie ontwikkeld die voor alle bovenstaande fora deze informatie robuust kan ontrekken.

Ieder forum heeft z'n eigen configuratie en de basis functionaliteit heeft redundante controles ingebouwd, elementen als posts en quotes worden bijvoorbeeld op meerdere manieren geteld om er zeker van te zijn dat de parsing correct is. Daarnaast worden alle verdachte resultaten en mutaties aan de bron data (zoals encoderingsfouten, incorrecte datumtekst, lege threads/posts of niet herleidbare quotaties) apart opgeslagen en gecontroleerd.

Allereerst wordt bij het laden van de bestanden gegroepeerd op threads, alles op post-volgorde gezet, mojibake en encoderingsfouten gefixed en unicode genormaliseerd (NFKC), en sommige unicode karakters worden ge-ascii-ficeerd (zoals quotes, pijltjes, whitespace, ligaturen etc). Ook worden alle plaatjes van emoticons specifiek aan dat forum vervangen door unicode equivalente varianten.

Vaak is de tijd in Nederlandse tijd, dus met zomertijd. Dat betekend dat zonder additionele informatie 1 uur per jaar ambigu is (gezien deze 2 maal voorkomt), in die gevallen nemen we het eerdere uur aan, wat dus soms kan betekenen dat opeenvolgende posts in data niet in tijd opvolgend zijn.

Verdere HTML wordt gestripped met html2text. De taal wordt gedecteerd met CLD2 (en gefiltered als overduidelijk niet Nederlands). Daarnaast filteren we op 16kb regellengte, en zeer onwaarschijnlijke letter frequentie. Alle woorden van >32 letters worden geanalyseerd op redelijkheid, en extreem lange woorden die alleen bestaan uit 'haha' of andere herhalende elementen worden verkort.

Boeken

Alle Fiction boeken uit Library Genesis, en Z-library, die staan gemarkeerd als zijnde Dutch. In het totaal 62405+8621=71026 boeken. Deze zijn allen geconverteerd naar platte tekst met ebook-convert van Calibre. En vervolgens nogmaals op taal gefiltered met CLD2.

Kleine bronnen

Alle 600.000 uitspraken op Rechtspraak.nl, gedownload als tekstbestand en achter elkaar gezet.
Alle tekstbestanden van werken op DBNL. De archive.org twitter archive gefiltered op Nederlands, en met URLS, hashtags en mentions verwijderd. Nederlandse Wikipedia.org database dump met alle korte en automatische gegenereerde artikelen verwijderd. Nederlandse ondertitels van opensubtitles. Nieuwsartikelen zijn een webscrape van een 10-tal nieuwswebsites waaruit met de hand per website de content is ontrokken. Complete scrape van wetten.overheid.nl

Contact

Stuur gerust een berichtje naar bat.lucassen@gmail.com, of kom langs in de Rederijkers discord ik ben heel benieuwd of er iemand met dit corpus aan de slag gaat!

Legaliteit

In dit corpus zit tekst waarop copyright van toepassing is. Maar het daadwerkelijk onttrekken van een specifiek werk is geheel onpraktisch en ik schat in dat dit corpus niet als vervanging kan dienen voor het werk in kwestie. Maakt dat het legaal? Geen idee, ik ben geen advocaat en naar mijn beste weten is de legaliteit van dit soort corpora niet getoetst in een rechtbank. En tot die tijd dat dat expliciet is gemaakt stel ik dit corpus in ieder geval beschikbaar en ontrek ik me van enige aansprakelijkheid voor zover dat mogelijk is. Of ik op het verzamelwerk dat dit corpus is zelf weer copyright heb weet ik niet, mocht dat het geval zijn dan kun je het hierbij beschouwen als zijnde onder het CC BY license. Oftewel, vrij te gebruiken met attributie.