| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Split BefehlErkenner into a single-command pass and a fallback that
composes Sammelbefehle from commands chained with "und"/", wird":
- Multi-pair replacement ("… A durch B und C durch D ersetzt") emits one
Ersetzung per pair, crossed with the (possibly coordinated) Stelle.
- Verbund splitter probes each "und"/", wird" boundary; when both halves
parse — trying the right clause as-is, capitalized, or with the left
clause's locative prefix — it folds them into one Sammelbefehl.
The single pass no longer short-circuits when a pattern matches but its
Stelle is unparseable, so the fallback still gets a chance. Add
"ein Komma eingefügt" and anchor-first insertion patterns the splitter
needs, and let StellenParser.parseMehrfach inherit the component type for
bare-number continuations ("Absatz 1 und 5").
Cuts UnbekannterBefehl counts: GEG 50->36, IfSG 11->7, AGG/UWG 2->1.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Change-Id: I8f76edd0c9ed6cf68c10c50f535a8182e13e378e
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Add a Sammelbefehl command that applies one operation to several
"und"/"sowie"/comma-coordinated Stellen sharing a common prefix, and
resolve "Die bisherigen Absätze X bis Y werden zu den Absätzen X' bis Y'"
into descending single renumberings. Parsing gains
StellenParser.parseMehrfach; the applier folds sub-commands into one log
entry.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Change-Id: Iaa2c7161066d40d0605c00d3b6ca9a08696070e7
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The Bundesgesetzblatt has been published digitally via recht.bund.de
since 2023 in a new single-column layout, and pending amendment acts
are only available as Referenten-/Regierungsentwuerfe or Bundestag
printed papers. Both now work as patch inputs:
* PDF extraction filters out small print by font size (two-pass
PDFTextStripper): in the new BGBl format, footnote blocks and
superscript footnote markers would otherwise land in the middle of
the statutory text, even inside quoted passages.
* TextBereiniger recognizes the new page headers (BGBl "Seite N von
M", draft page markers " - N - ", Bundestag printed-paper headers)
and joins markerless end-of-line hyphenation (BT-Drs PDFs break
words without a hyphen character; regular wraps carry a trailing
space, so its absence is the signal -- gated on the source using
the trailing-space convention at all, protecting hand-written
plain-text inputs). BMJV draft templates draw the hanging opening
quote after the paragraph marker ("(1) „" / "§ 19„"); this
inversion is repaired.
* Drafts embed the statutory text between a cover sheet and a
Begruendung section; article scanning now stops at the Begruendung
heading. Articles without numbered items (single-command articles
like ProdHaftG-RegE Artikel 2) are parsed from the preamble rest.
* Target-law matching is declension-tolerant ("Das Allgemeine
Gleichbehandlungsgesetz" matches "Allgemeines
Gleichbehandlungsgesetz") via rough word-stem comparison.
* New command form StrukturErsetzung ("§ 2 Absatz 2 wird durch die
folgenden Absätze 2 und 3 ersetzt"); "durch die folgende
Überschrift/den folgenden § N ersetzt" map to Neufassung; plural
insertions ("die folgenden Absätze 6 und 7"), triple-letter outline
markers (aaa), the compound punctuation replacement ("durch ein
Komma und die Wörter ... ersetzt"), and Inhaltsuebersicht-Angaben
inside a context frame are recognized.
End-to-end smoke tests cover the four new datasets: UWG (new BGBl
format, footnote-filter assertion), GEG 2023 ("Heizungsgesetz",
121 commands), AGG (BT-Drs draft against an unconsolidated base --
the first dataset with real diffs, spot-checked against the official
BMJV synopsis), and ProdHaftG (draft whose Artikel 1 is a replacement
law and only Artikel 2 amends the base).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Change-Id: Id1b12bc0bee4178bd1a5c55b3a83f6e13944af69
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the full vertical slice from input files to a two-column HTML
synopsis:
* gesetz, gesetz.gii: immutable law model (Gesetz/Norm/Absatz) and an
offline loader for the gii-norm XML format of gesetze-im-internet.de,
flattening DL enumerations, tables, and pre blocks.
* aenderung: amendment command model as a sealed interface with records
(Ersetzung, Neufassung, Einfuegung, Anfuegung, Aufhebung, Streichung,
Umnummerierung), including UnbekannterBefehl as the mandatory
fallback -- unrecognized commands are reported, never dropped.
* aenderung.parse: text extraction (PDFBox in content-stream order for
two-column BGBl PDFs, plain text as escape hatch), BGBl header and
hyphenation cleanup, quote extraction with placeholder substitution
(quoted blocks cannot confuse the command regexes; unbalanced quotes
-- which occur in real BGBl documents -- become warnings), outline
scanning with successor-validated markers (1., a), aa), aa1)), and
the command recognizer with context-frame stacking.
* anwendung: sequential command application with a per-command protocol
(ANGEWANDT / MANUELL_PRUEFEN plus reason), scope resolution down to
sentence/enumeration ranges via a German sentence splitter.
* synopse: norm pairing, word-level diff via java-diff-utils, and a
self-contained HTML renderer with a Manuell-pruefen section.
The CLI gains -o/--output, --vollstaendig, --artikel, --extract-only,
and hidden debug flags (--dump-gesetz, --dump-befehle).
On the IfSG sample (Drittes Bevoelkerungsschutzgesetz, BGBl. I 2020
S. 2397), 63 of 75 commands in Artikel 1 and 2 parse into typed
commands; the remainder are ranges and compound commands that are
deliberately out of scope for v1.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Change-Id: I93ef8ba300f1cac70916722f23c0cefc5f62da2b
|
| |
|
|
|
|
|
|
|
| |
With the new configuration, Tika can now extract text from PDFs and
XML documents.
Also configures logging for the application.
Change-Id: I7a89c2b232ed4e220665dd335a5f5a0cc3ef2994
|
| |
|
|
| |
Change-Id: I9736779cf57050a1dfd43d18625eb464a7179a9f
|
| |
|
|
| |
Change-Id: I704d78b7553f057f73e1387078623d8fe5d0b154
|
| |
|
|
| |
Change-Id: I37d6cbb000df63013277fe4628cdb6570d68101a
|
|
|
Change-Id: I5609adfca13ffad643a3db93e848fc01636b066a
|