Klassificeren van referenties in wetteksten
2 november 2007 Bachelor Afstudeer Project Opleiding Kunstmatige Intelligentie Universiteit van Amsterdam
David de Bos (0382930)
[email protected]
Begeleiders Radboud Winkels
[email protected] Emile de Maat
[email protected]
Indien in het geval als bedoeld in artikel 3, eerste lid, onderdeel b, het karakter van landgoed niet in ernstige mate is aangetast kunnen Onze Ministers bij gezamenlijke beschikking, in afwijking in zoverre van het eerste lid, een kortere termijn van ten hoogste 5 jaren vaststellen en kunnen zij daarbij voorwaarden stellen. Alsdan vinden de artikelen 8 en 9c geen toepassing. Ingeval de in de eerste volzin bedoelde aantasting van het karakter van landgoed voortvloeit uit omstandigheden die het gevolg zijn van overmacht, wordt bovendien voor de toepassing van artikel 5.7, eerste lid, onderdeel c, van de Wet inkomstenbelasting 2001 en van artikel 220d, eerste lid, onderdeel d, van de Gemeentewet de onroerende zaak of het desbetreffende gedeelte daarvan gelijkgesteld met een landgoed. - stuk uit Artikel 4 van de Natuurschoonwet 1928
Introductie Dit project was onderdeel van het onderzoek dat gedaan wordt door het Leibniz Center for Law aan de Universiteit van Amsterdam. Hun hoofddoel is het zoeken naar manieren om wetteksten te vertalen naar formele talen. Eén van de onderdelen hierbij gaat over referenties. Wetteksten zijn met elkaar verbonden door middel van referenties. Bijvoorbeeld definities in een eerder beschreven artikel kunnen in andere artikelen geïmporteerd worden (‘als bedoeld in artikel 3, eerste lid, onderdeel b’); of artikelen kunnen niet van toepassing verklaard worden binnen een bepaalde context (‘Alsdan vinden de artikelen 8 en 9c geen toepassing.’). Eerder onderzoek gedaan door Emile de Maat [2] heeft een parser opgeleverd die referenties in wetteksten kan detecteren. Mijn onderzoek bouwt hierop voort en heeft als doel de gevonden referenties te klassificeren. Het detetecteren van referenties gebeurde met behulp van een grammatica: een stuk tekst wordt als referentie gezien, als het stuk tekst kan worden ontleed volgens de regels van de grammatica. Deze grammaticaregels zijn met de hand gemaakt, na het bestuderen van de structuur van referenties. Deze aanpak leverde een resultaat op van meer dan 95% gedetecteerde referenties. Eenzelfde aanpak heb ik gebruikt voor het klassificeren van de referenties. Iedere klasse heeft z’n eigen grammaticaregels. Wanneer een referentie en omliggende tekst herschreven kunnen worden volgens die regels, wordt de referentie als zodanig geklassificeerd. Hoewel klassificatie lastiger is dan detectie, is de verwachting dat eenzelfde resultaat behaald kan worden.
Het verslag is als volgt opgebouwd. In sectie 1 wordt besproken hoe de patronen, aan de hand waarvan klassificatie gaat plaatsvinden, gevonden zijn. Daarop volgt een bespreking van de gekozen klasse-indeling. Sectie 3 behandelt de uiteindelijke grammaticaregels en hoe deze regels geïmplementeerd zijn in een parser. Daarna worden de resultaten besproken en wordt afgesloten met een conclusie.
1 Patronen Klassificatie gebeurt altijd op basis bepaalde eigenschappen en kenmerken. Kenmerken van referenties zijn: de naam van de wet waarnaar verwezen wordt, de naam van de wet waarin de referentie voorkomt of de woorden voor en na de referentie. Dit laatste kenmerk is de meest logische om de klassificatie op te baseren. Aan de hand van de woorden die voor (prefix) of na (postfix) een referentie voorkomen (of eventueel beide) lijkt het mogelijk om te bepalen om wat voor soort referentie het gaat. Eén van de eerste onderdelen in het project was dus om een grote verzameling patronen te maken. Voor het verzamelen van de patronen zijn 16 wetteksten gebruikt. Deze wetteksten zijn door de bestaande parser gehaald om alle referenties te detecteren. Dit leverde een totaal van 4536 referenties op. Van iedere referentie moest vervolgens de prefix en postfix bepaald worden. Dit proces moest handmatig gedaan worden: een computer kan namelijk niet zien waar de prefix begint en de postfix eindigt. Om deze reden heb ik een willekeurige selectie van 500 referenties gemaakt, die met de hand bestudeerd en de relevante patronen van prefix / postfix opgeschreven. Bijvoorbeeld de zin “Alsdan vinden de artikelen 8 en 9c geen toepassing.”, leverde een prefix ‘vinden’, een referentie ‘artikelen 8 en 9c’ en een postfix ‘geen toepassing’ op. Op deze wijze zijn 119 unieke patronen gevonden. Aardig hierbij te vermelden is dat in het begin van deze zoektocht vaker een nieuw uniek patroon gevonden werd, zoals natuurlijk te verwachten is. Echter, ook aan het eind van het zoekproces bleven regelmatig nieuwe patronen opduiken, vaak kleine (taalkundige) variaties op reeds gevonden patronen. Daarom is het erg aannemelijk dat de gevonden 119 patronen niet alle mogelijke patronen zijn. Als je maar lang genoeg doorzoekt, is het in theorie mogelijk om alle patronen te vinden. Ik vraag mij alleen sterk af of dit praktisch gezien haalbaar is. Meer hierover zal ik in de conclusie bespreken.
2 Klasse-indeling Om de referenties te kunnen klassificeren moet je een klasse-indeling hebben. In [2] is al een voorstel voor een mogelijke indeling gemaakt. Deze is gebaseerd op de inhoudelijke verschillen tussen de referenties. Er wordt onderscheid gemaakt tussen normatieve referenties, meta-normatieve referenties, delegerende referenties, levensduur referenties en informatieve referenties. Zie [2] voor een uitgebreide beschrijving van deze klassen. Een andere manier is om te kijken naar uiteindelijke toepassingen. Als een wettekst namelijk in een formele taal gepresenteerd wordt aan een gebruiker, kunnen referenties gebruikt worden voor verschillende doelen. Ze kunnen bijvoorbeeld gebruikt worden om door te klikken naar een wettekst, of om een lijst te krijgen van alle wetteksten die op een bepaald artikel van toepassing zijn. De klasse-indeling die ik voorstel is gebaseerd op zowel de inhoudelijke verschillen als de verschillende toepassingen. Klasse Toepassing
Voorbeeld patroon als ... van toepassing is
Toepassing Lijst van wetteksten die van toepassing zijn op een bepaald artikel Definitie als bedoeld in ... Hyperlink naar wettekst of eventueel zonder hyperlink automatisch de definitie laten zien Gevolg ingevolge ... Hyperlink naar wettekst Levensduur inwerking treden van ... Lijst van wetteksten die op een bepaald moment gelden Uitzondering in afwijking van ... Lijst van wetteksten die afwijken van een bepaald artikel Onverminderd overminderd ... Extra aandacht voor de lezer (bv dikgedrukt) Overig waarin ... voorziet Verschillend Merk op dat ook de ontkenning van bovengenoemde klassen kan voorkomen. Zo wordt de referentie ‘in overeenstemming met ...’ geklassificeerd als (negatieve) uitzondering, en ‘... is niet van toepassing’ als (negatieve) toepassing. De klasse onverminderd is een klasse apart. Het woord ‘onverminderd’ voegt qua inhoud namelijk niets toe aan een artikel, men kan het net zo goed weglaten. Het
wordt alleen gebruikt om nog eens extra te benadrukken dat een bepaald artikel nog steeds geldig is. Een veelvoorkomend patroon is ook ‘het bepaalde in ...’ of variaties daar op. Deze waren eerst geklassificeerd als definitie. Echter, dit bleek niet juist. ‘het bepaalde in ...’ is namelijk onderdeel van de referentie zelf, en is niet onderdeel van het patroon waarop referenties geklassificeerd kunnen worden. Inderdaad bleek dat wanneer je ‘het bepaalde in ...’ beschouwd als (uitgebreide) referentie, daaromheen weer de bekende patronen te vinden waren. Bijvoorbeeld: ‘Het bepaalde onder artikel 2, lid a blijft buiten toepassing’. Tot slot een vergelijking met de klasse-indeling zoals voorgesteld in [2]. Klasse-indeling in [2] Normatief Meta-normatief Delegerend Levensduur Informatief
Gebruikte klasse-indeling definitie en gevolg toepassing en uitzondering (niet tegengekomen) levensduur
Lijst van wetteksten die op een bepaald moment geldig zijn
(niet tegengekomen) Onverminderd
(ontbrekende klasse) (ontbrekende klasse)
Toepassingen Hyperlinks naar wetteksten Lijst van wetteksten die een relatie hebben met een bepaalde wettekst
Overig
Extra aandacht voor de lezer Verschillend
Hieruit blijkt dat de klasse-indelingen met elkaar overeenkomen, wanneer je ze groepeert op toepassing.
3 Grammaticaregels De gevonden patronen zijn vervolgens omgezet naar grammaticaregels. De gewenste non-terminal noemen we citeFull (een volledige referentie), met als attribuut de klasse. Een citeFull kan worden herschreven: citeFull(klasse) <- [prefix(klasse)] citeExtended [postfix(klasse)]
Hierbij zijn de pre- en postfix de gevonden patronen voor iedere klasse.
citeExtended is een uitgebreide referentie; namelijk de referentie zoals gevonden door de parser van De Maat inclusief de woorden ‘het bepaalde in...’ en variaties daarop (zie sectie 2). Als zo’n patroon niet voorkomt, dan is citeExtended gelijk aan de originele cite (de referentie). Hieronder ter illustratie drie soorten uitgebreide referenties: citeExtended <- [lidwoord] [bepaling] in cite citeExtended <- [lidwoord] in cite [bepaling] citeExtended <- cite
Na het omschrijven van alle patronen naar grammaticaregels, zijn de 119 patronen gecomprimeerd tot een kleine 50 grammaticaregels (zie bijlage A). Daarnaast accepteren de grammaticaregels meer patronen dan er handmatig gevonden zijn. Neem bijvoorbeeld de twee patronen ‘indien…van toepassing is’ en ‘als…van toepassing zijn’. Die zijn in de grammatica herschreven naar: citeFull <- [indien | als] citeExtended van toepassing [is | zijn]
Nu worden dus ook de patronen ‘indien…van toepassing zijn’ en ‘als…van toepassing is’ herkend. Het zou zelfs zo kunnen zijn dat incorrecte Nederlandse zinnen door de grammatica herkend worden, maar dat hoeft geen probleem te zijn. De grammatica wordt immers niet gebruikt om zinnen te genereren.
4 Parser 4.1 Invoer Als invoer worden MetaLex bestanden gebruikt. MetaLex is een XML standaard voor juridische bronnen. Op de website van MetaLex staat een aantal voorbeeldbestanden uit het Nederlandse Basis Wetten Bestand (BWB). Het voordeel van MetaLex is dat de structuur van de wetteksten reeds aangegeven is: wat zijn kopjes, wat zijn zinnen, etc. Een wettekst in MetaLex formaat kan vervolgens geparseerd worden door de parser van De Maat, met als resultaat een MetaLex bestand waarin alle referenties aangegeven zijn. Zo’n bestand dient als invoer voor mijn parser. Hierbij dient opgemerkt te worden dat de parser een ‘perfecte’ invoer verwacht. Een ongeldig MetaLex bestand (met bijvoorbeeld een ontbrekende close-tag), of een MetaLex bestand waarin geen referenties zijn aangegeven zullen niet geparseerd worden. Om deze reden is de parser op dit moment slechts op 1 wettekst getest. De voorbeeldbestanden uit het BWB zijn namelijk niet direct bruikbaar als invoer en zullen eerst nog aangepast moeten worden.
4.2 Uitvoer De uitvoer is hetzelfde bestand als de invoer, maar dan met extra tags toegevoegd die aangeven waar een (volledige) referentie begint en tot welke klasse de referentie behoort. Tevens is er een tag toegevoegd die de originele referenties uitbouwt naar een uitgebreide referentie, zoals besproken in sectie 3. Ter verduidelijking zullen nu twee voorbeelden behandeld worden. Invoer: Alsdan vinden
de artikelen 8 en 9c geen toepassing. Uitvoer: Alsdan
vinden de artikelen 8 en 9c geen toepassing. Invoer: ...de schuldsaneringsregeling eindigt op grond van het bepaalde in
artikel 312, tweede lid. Uitvoer ...de schuldsaneringsregeling eindigt
op grond van het bepaalde in artikel 312, tweede lid. Merk op dat de pre- en postfix niet apart getagged zijn. Hun tag volgt namelijk logisch uit de positie ten opzichte van de (uitgebreide) referentie. 4.3 Werking van de parser Aangezien de invoer een MetaLex bestand is en daarin zinnen al getagged zijn, leek het zinvol om de parser alleen zinnen te laten verwerken, en deze zinnen één voor één aan de parser te geven. Daarnaast treden patronen nooit op buiten één zin en voorkom je dus op deze manier dat de parser dat per ongeluk wel doet. Het implementeren van de grammatica in de eigenlijke parser is gedaan met behulp van JavaCC (Java Compiler Compiler), een programma waarmee parsers gegenereerd kunnen worden. De parser van De Maat is ook hierin geprogrammeerd, vandaar dat het een logische stap was om hiermee verder te gaan. In JavaCC kan je gebruik maken van zowel grammaticaregels, als van reguliere expressies en pure javacode. Reguliere expressies zijn gebruikt om tokens te detecteren, grammaticaregels om de referenties te klassificeren, en vooral om de invoer en uitvoer te regelen.
5 Resultaten De parser is getest op de Natuurschoonwet 1928, waarin 92 referenties voorkwamen. De resultaten van klassificatie waren als volgt: Klasse Definitie Toepassing Gevolg Levensduur Onverminderd Uitzondering Overig
Frequentie 22 8 10 0 0 4 52
Zoals reeds gezegd is er slechts 1 wettekst gebruikt om de parser te testen. Hierdoor kan er weinig gezegd worden over trends binnen wetteksten in het algemeen. Wat wel direct opvalt is dat meer dan de helft van de referenties geklassificeerd zijn als ‘Overig’. Dat betekent dat meer dan de helft van de referenties eigenlijk niet geklassificeerd zijn. Om meer inzicht in de onderliggende problemen te heb ik de categorie ‘overig’ opgesplitst in vijf groepen, zodat een overzicht gekregen wordt in aantallen waar de problemen nog zitten. Probleem Technisch probleem Samengestelde referentie Onbekend patroon Onvolledige referentie Werkelijk ‘overig’
Frequentie 10 10 14 13 5
Allereerst zijn er dus min of meer triviale problemen van technische aard. De tokenizer van de parser maakt bijvoorbeeld onderscheid tussen spaties en enters. Als een patroon over meer dan 1 regel doorloopt, slaagt de parser er niet altijd in dit op te vangen. In sommige gevallen wel, maar in de meeste gevallen niet. Waarom dit gebeurt moet nog onderzocht worden, maar dit beïnvloedt de prestaties van de parser behoorlijk. Daarnaast zijn er drie inhoudelijke problemen. Ten eerste komen referenties vaak gecombineerd voor, zoals ‘...dan is artikel 3 van de Natuurschoonwet en artikel 24 van het Burgelijk Wetboek niet van toepassing.’. Alleen in de gevallen waarin ‘artikel 3 van de Natuurschoonwet en artikel 24 van het Burgelijk Wetboek’
volledig als 1 referentie gedetecteerd wordt, zal mijn parser deze referentie juist klassificeren. Waneer ‘artikel 3 van de Natuurschoonwet en artikel 24 van het Burgelijk Wetboek’ opgesplitst is in 2 losse referenties, dan zal mijn parser beide referenties niet kunnen klassificeren. Dit kan opgelost worden door een aantal extra grammaticaregels op te nemen, die 2 referenties en een voegwoord herschrijft naar 1 (samengestelde) referentie. Een tweede inhoudelijk probleem betreft het aantal patronen. Zoals eerder al gedacht, blijkt nu ook uit de resultaten dat niet alle patronen al gevonden zijn. Referenties met nieuwe patronen zullen dus als ‘Overig’ geklassificeerd worden. Het laatste probleem betreft de invoer. Nog niet alle referenties worden juist gedetecteerd; bijna álle referenties worden wel gedetecteerd, maar niet altijd volledig. Dus tekst die eigenlijk onderdeel is van de referentie, wordt nu gebruikt als pre- of postfix, en daardoor faalt de klassificatie. Eigenlijk zou de parser van De Maat dus nog aangepast moeten worden. Hier staat tegenover dat de referenties die wél geklassificeerd zijn 100% correct zijn. Er zijn namelijk geen patronen uit de ene klasse, die overeenkomen met patronen uit een andere klasse. Hierdoor heb je gegarandeerd de juiste klasse gekozen wanneer een patroon gevonden wordt.
6 Conclusie De conclusie zal helaas moeten zijn dat de parser op dit moment nog niet voldoende presteert. Mijn verwachting is echter dat deze methode wél bruikbaar is, aangezien wetteksten een redelijk strakke structuur hebben, en er niet een volledig vrije / natuurlijke taal gebruikt wordt. Hierdoor lijkt het mij dat het aantal patronen eindig is, en ook daarmate klein dat je ze allemaal op kan schrijven. Daarnaast zou het gebruik van sparse-datatechnieken nog een mogelijkheid kunnen zijn om de referenties die als ‘Overig’ geklassificeerd worden, alsnog aan een andere klasse toe te wijzen. Verder zijn de problemen die de slechte prestaties veroorzaken niet onoverkomenlijk. De technische problemen zijn makkelijk op te lossen; onvolledige referenties behoren tot het probleem van referenties detecteren (en mijn klassificatie gaat ervan uit dat dat probleem reeds opgelost is); en het probleem van samengestelde referenties is eigenlijk ook een ander probleem. Wel problemen die opgelost dienen te worden, maar die in weze niets met het klassificatie probleem te maken hebben. Na dit onderzoek zijn er verder nog volop mogelijkheden om door te gaan. Men kan kijken naar andere juridische bronnen, zoals jurispredentie. Volstaat daar dezelfde klasse-indeling? Vind je daar dezelfde patronen?
Of men kan proberen het detecteren en klassificeren van referenties eens op een andere manier aan te pakken. In plaats van handmatig opgeschreven grammaticaregels, valt te denken aan Machine Learning technieken die gespecialiseerd zijn in patroon herkenning, zoals Rapier [3]. Al met al een boeiend onderzoeksgebied waar nog volop te ontdekken valt. En ik heb geprobeerd mijn steentje daar aan bij te dragen.
Referenties [1] de Maat, E., Winkels, R., van Engers, T.. Hoofdstuk _Using NLP in LKS_ v3.4.pdf (nog niet gepubliceerd) [2] de Maat, E., Winkels, R., van Engers, T.. Automated Detection of Reference Structures in Law. [3] Califf, M.E., Mooney, R.J.. Bottom-Up Relational Learning of Pattern Matching Rules for Information Extraction, Journal of Machine Learning Research 4 (2003) 177210.
Bijlage A – de grammaticaregels /*********************************************************** * Grammar for classifying references found in legal texts * Created by David de Bos * Version September 14 2007 ***********************************************************/ // Rules for extending the ref ... = [de bepalingen|een bepaling van] [ref] = [het bepaalde|het gestelde] [bij|in|onder] [ref] = in [ref] bepaalde = [het]0-1 [in|bij] [en|of] krachtens [ref] [bepaalde]0-1 = het bepaalde [in|bij] [en|of] krachtens [ref] = hetgeen is bepaald in [ref] = [ref] // Toepassingsverklaring S = ... [is|zijn]0-1 [mede|niet|slechts|hier|ook]0-1 van(toepassing) [overeenkomstige](toepassing)0-1 [toepassing(toepassing)|toepasselijk] = [is|zijn]0-1 ... [mede|niet|slechts|hier|ook]0-1 van(toepassing) [overeenkomstige](toepassing)0-1 [toepassing(toepassing)|toepasselijk] = [vindt|vinden] ... [overeenkomstige]0-1 toepassing = ... [geldt|gelden] [niet]0-1 = [geldt|gelden] ... [niet]0-1 = ... [houdt|houden] op van toepassing te zijn = ... verder geen toepassing [vindt|vinden] = ... van toepassing verklaren = ... [niet](optioneel) van toepassing [bleek|bleken] = ... van toepassing [is|zijn] = ... geheel of gedeeltelijk buiten toepassing = ... blijft buiten toepassing // Als toegepast wordt S = bij [de]0-1 toepassing van ... = in [het]0-1 geval [van toepassing]0-1 van ... = indien toepassing is gegeven aan ... = indien ... toepassing [vindt|vinden] = voor de toepassing van ... = met [inachtneming|toepassing] van ... // Definitie S = in ... [geregelde|opgenomen|vermelde|bedoelde|genoemde|gesteld|gestelde|toegekend|toegekende|voorziene] = [als]0-1 [bedoeld|geregeld|omschreven|genoemd|gesteld] [in|onder|bij] ... = als in ... [bedoeld|bepaald|is voorgeschreven] = onder ... [bedoelde|vallen] = in de zin van… = zijn vermeld in... // Gevolgtrekking S = [op de voet van|ingevolge|volgens|als gevolg van|gegrond op de bepalingen der] ... = [op grond van|ingevolge] [het bepaalde in] ... = gegrond op de bepalingen der ... = uit ... voortvloeiende // Levensduur S = ... [Vervallen per = [inwerkingtreding|in werking treden] van ... = tot toepassing van ... over te gaan // Onverminderd S = onverminderd ... // Uitzonderingen S = in afwijking van ... = [afwijkt|afwijken] van ... = behoudens ... = van ... kan niet worden afgeweken = ... [is|zijn] ontheven van het verbod van ... // Overeenstemmingen S = in [strijd|overeenstemming] met ... = overtreding van ... = overeenkomstig ...
// alles wat niet als bovenstaand te classificeren is, classificeren we als Overig