From 5f30f566873c313b554f087c0f7e132efa54d64a Mon Sep 17 00:00:00 2001 From: Matthias Andreas Benkard Date: Tue, 28 Jul 2026 06:00:16 +0200 Subject: Recognise word-anchored insertions; close quotes at the next item MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The documented next step was the word-anchored structural insertion ("Vor den Wörtern „Aus dem Bereich Verkehr:“ wird folgender Absatz 5 eingefügt", Berlin Artikel 1 Nr. 2 b) bb)). StrukturEinfuegung now carries an optional WortAnker, the recogniser has a pattern for the form — placed before STRUKTUR_EINFUEGUNG, which bails out of recognition entirely when the StellenParser cannot read "den Wörtern «0»" — and the applier positions the new unit at the anchor line instead of a structural boundary. Two blockers turned up next to it, both measured on the corpus rather than assumed: The command was not cleanly recognisable at all. Its closing quotation mark is missing in the official text, so the quote swallowed items cc) and c); an anchor alone would have made the command look applicable with a huge foreign quote as its payload. The docs called a boundary at enumeration markers impossible, and that holds for the unguarded form: a quoted amendment provision carries command language itself. Guarded by four conditions together — the article's quotation marks demonstrably do not balance, the next line's marker is at the same or a shallower level than the one the quote opened on, that line carries command language, and closing here leaves the rest of the article balanced — it fires exactly twice in the whole sample corpus, both times where the missing mark belongs: Berlin before cc), and GV. NRW. Artikel 2 before 12. Without the guards it also fires inside quoted amendment provisions in the BayJG and GModG documents; the balance gate rules those out. The GV.-NRW. gazette encodes part of its umlauts decomposed (u + U+0308, 79 places, dozens of them "eingefügt:"/"angefügt:"). Invisible in the text, but a different word to every command pattern, so those commands could never match. TextBereiniger now normalises to NFC first — not NFKC, which would flatten the official sentence numbers ¹²³ and take SatzTeiler and Superskript their basis. Every other sample document, every gii-XML stem and every hand-kept plain-text stem is already NFC, so the pinned figures stay bit-identical. Berlin Artikel 1 is thereby fully recognised (6 of 6 commands, none unknown). One pinned statement changed for a stated reason: the NRW acceptance test asserted the article-heading warning, which is now preempted by the item boundary inside Artikel 2 — Nr. 12 survives instead of being swallowed. 241 tests green. Co-Authored-By: Claude Opus 5 Change-Id: Ic579bec6fecc2495a61b3dcf87c9ad71b42f34ae --- README.adoc | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) (limited to 'README.adoc') diff --git a/README.adoc b/README.adoc index d3a8eb5..dc1893d 100644 --- a/README.adoc +++ b/README.adoc @@ -107,13 +107,20 @@ ersetzt, eingefügt, gestrichen — sie werden auf die Inhaltsübersichts-Norm angewandt), das Einfügen und Ersetzen von Gliederungs-Überschriften („Nach § 33 werden die folgenden Überschriften zu Teil 3 … eingefügt“), Voranstellungen, Mehrfach-Ersetzungs- und --Einfügepaare, Verbünde aus Umnummerierung und Folgeänderung („§ 50 wird -zu § 38 und wird wie folgt geändert“) sowie die Neufassung der -Gesetzesüberschrift. Die PDF-Aufbereitung toleriert dabei +-Einfügepaare, Einfügungen, deren Position ein Wortanker statt einer +Stellenangabe bestimmt („Vor den Wörtern „Aus dem Bereich Verkehr:“ wird +folgender Absatz 5 eingefügt“), Verbünde aus Umnummerierung und +Folgeänderung („§ 50 wird zu § 38 und wird wie folgt geändert“) sowie die +Neufassung der Gesetzesüberschrift. Die PDF-Aufbereitung toleriert dabei Drucksachen-Artefakte (Seitenköpfe und -füße, Vorabfassungs-Wasserzeichen, -vertauschte oder gerade Anführungszeichen, verklebte Wortgrenzen) und -bestimmt die Brotschrift seitenweise, sodass auch Ministeriumsentwürfe -mit gemischten Layouts vollständig extrahiert werden. Auf den +vertauschte oder gerade Anführungszeichen, verklebte Wortgrenzen, zerlegt +kodierte Umlaute) und bestimmt die Brotschrift seitenweise, sodass auch +Ministeriumsentwürfe mit gemischten Layouts vollständig extrahiert +werden. Fehlt im amtlichen Satz ein schließendes Anführungszeichen, endet +das Zitat an der nächsten Strukturgrenze — an einer Artikel-Überschrift +oder, wo die Anführungszeichen eines Artikels nachweislich nicht +aufgehen, am nächsten Aufzählungspunkt des Änderungsgesetzes; gemeldet +wird das als Warnung. Auf den Beispieldaten werden damit alle Befehle der BGBl-Fassungen und der aktuellen Entwürfe angewandt (UWG/AGG/ProdHaftG: 0 manuell); was unsicher bleibt — etwa Befehle gegen eine ältere Gesetzesfassung, deren @@ -141,9 +148,9 @@ Paragraphen; die Unterschiede liegen im Gesetzblatt-Satz und in Befehlsidiomen. Belegt sind Sachsen (SächsBeamtVG), Niedersachsen (NEFG) und Nordrhein-Westfalen (Telemedienzuständigkeitsgesetz) mit vollen Akzeptanztests ohne Rest; für Schleswig-Holstein und Berlin -reicht die Prüfung bis zur Befehlserkennung, weil deren Landesportale -ihre Stammfassungen nur über eine anmeldepflichtige Schnittstelle -ausgeben. Welche Konvention welches Land beisteuert, welche +reicht die Prüfung bis zur Befehlserkennung — dort vollständig, aber ohne +Anwendung —, weil deren Landesportale ihre Stammfassungen nur über eine +anmeldepflichtige Schnittstelle ausgeben. Welche Konvention welches Land beisteuert, welche Stammfassungen woher stammen und was noch offen ist, verzeichnet `src/main/resources/sampledata/Landesrecht-Beispiele.adoc`. -- cgit v1.2.1