← Syntagma Forschung · Iterationsprüfer · FORSCH-PROV0459 · Technische Dokumentation · Paket v0.1.0 (ZIP, AGPL-3.0) · Anleitung

FORSCH-PROV0459_technische-doku_v1.0_2026-10-06_doku

title: “Iterationsprüfer — Technische Dokumentation”
kennung: “FORSCH-PROV0459”
komponente: “Werkzeug Iterationsprüfer v0.1.0 Phase 1a”
author: “Thomas Schüller”
date: “2026-10-06”
license: “AGPL-3.0-or-later (Code) / CC BY 4.0 (dieses Dokument)”

Technische Dokumentation

Überblick

Der Iterationsprüfer liest einen Text und gibt eine strukturierte Einschätzung aus, ob der Text eine Iteration behauptet, die er nicht nachweist. Er ist eine reine Textanalyse ohne Netzzugriff und ohne Modellaufruf.

Eigenschaft Wert
Sprache Python 3.10 oder neuer
Abhängigkeiten keine außer der Standardbibliothek
Umfang 491 wirksame Codezeilen
Tests 14, davon 5 Negativtests
Ausgabe JSON und Markdown
Netzzugriff keiner in Phase 1a

Aufbau

iterationspruefer/
├── kern.py        Datenmodell, Satz- und Spracherkennung, Aggregation
├── marker.py      Vokabulare, Marker M1, M2, M5
├── cli.py         Kommandozeile
├── __init__.py    check() und bericht()
└── __main__.py    Einstieg für python -m

kern.py

Enthält die Datenklassen Beleg, MarkerErgebnis und Pruefergebnis, die Basisklasse Marker sowie AdapterPlatzhalter für die noch nicht implementierten Marker.

Hilfsfunktionen: hash_text bildet die SHA-256-Summe des Eingangstexts als Anker; erkenne_sprache unterscheidet Deutsch und Englisch über das Verhältnis von Funktionswörtern; satz_spans zerlegt den Text in Satzbereiche; umgebung liefert den Zeichenbereich von ±n Sätzen um eine Position; aggregiere bildet den gewichteten Mittelwert über alle Marker mit vorhandenem Ergebnis.

Gewichte und Schwellen stehen als Konstanten GEWICHTE und SCHWELLEN am Dateikopf und sind der vorgesehene Anpassungspunkt.

marker.py

Je Marker eine Klasse mit einheitlicher Schnittstelle pruefe(text, sprache) -> MarkerErgebnis.

M1 Eliminationsbehauptung ohne Spur. Sucht Eliminationsvokabular. Für jeden Treffer wird im Umkreis von zwei Sätzen geprüft, ob ein konkreter Kandidat benannt und ein Grund genannt ist. Kategoriale Ausschlussklassen im selben Satz erhöhen den Wert gesondert. Die Teilgewichtung setzt fehlenden Grund mit 0,6 und fehlenden Kandidaten mit 0,4 an, weil der Grund die Nachvollziehbarkeit trägt.

M2 Kriterien nach der Bewertung. Bestimmt die textuelle Position von Kriteriennennungen und Auswahlentscheidungen. Steht mindestens ein Kriterium vor der ersten Auswahl, wird der Wert auf 70 Prozent gedämpft. Der Marker misst textuelle Reihenfolge, nicht logische Argumentstruktur; das ist in der Ausgabe vermerkt.

M5 Konkretisierungs-Asymmetrie. Trennt Substanzzahlen von Strukturzahlen. Strukturzahlen (Woche 1, Phase 2, Schritt 3) werden verworfen. Für jede Substanzzahl wird im Umkreis eines Satzes nach Quellenmarkern oder nach Rechenmarkern gesucht. Zusätzlich wird der Trend über die Texthälften gebildet: steigt der Anteil unbelegter Zahlen um mehr als 15 Prozentpunkte, erhöht sich der Wert um 0,1.

Vokabulare

Alle Wortlisten stehen am Kopf von marker.py als benannte Konstanten, getrennt nach Sprache. Sie sind der Hauptwartungspunkt: Modellausgaben verändern sich, die Listen altern. Empfohlene Prüfung halbjährlich.

Schnittstellen

Kommandozeile

python3 -m iterationspruefer DATEI [--lang de|en] [--model NAME] [--format md|json] [--out DATEI]
python3 -m iterationspruefer -        # liest von stdin

Rückgabewerte: 0 bei Erfolg, 2 bei Eingabefehler.

Bibliothek

from iterationspruefer import check, bericht
e = check(text, sprache="de")
e.aggregat          # 0.0 bis 1.0 oder None
e.empfehlung        # accept | review | reject | unbestimmt
e.marker["M5"].belege
print(bericht(e))

JSON-Ausgabe

Felder: tool, version, schema, timestamp, input_hash, input_meta, markers, aggregate, recommendation, notes. Jeder Markereintrag führt score, evidence mit Zeichenpositionen, confidence, method und note.

Das Feld notes weist aus, welche Marker nicht implementiert sind und dass der Aggregatwert deshalb nach unten verzerrt.

Entwurfsentscheidungen

Kein Modell im Prüfweg. Das zu erkennende Muster wird von Sprachmodellen erzeugt. Ein Modell als Prüfinstanz würde dieselben Muster reproduzieren, statt sie zu erkennen. Belegt bei Zhu u. a. 2025 und Li u. a. 2025. Die Prüfung bleibt deshalb strukturell.

Teilgewichtung statt Ja-Nein. Frühe Fassungen bewerteten je Treffer binär. Das erzeugte Maximalwerte bei Texten mit einer einzigen unglücklichen Formulierung. Die Teilgewichtung bildet Abstufungen ab.

Negativtests zuerst. Siehe Betriebshandbuch, Abschnitt Prüfung.

Grenzen

Falsch-Positive bei Lehrtexten und Strategiepapieren. Falsch-Negative bei sorgfältig formulierten performativen Texten. Modellabhängigkeit, da die Marker an einer Ausgabe entwickelt wurden. Sprachabhängigkeit auf Deutsch und Englisch. M2 misst Reihenfolge im Text, nicht im Argument.

Nächste Phasen

Phase Inhalt Zustand
1a M1, M2, M5 strukturell fertig
1b M4 als Anbindung an veröffentlichte Sycophancy-Metriken offen
1c M3 und M3b über Semantic Scholar oder OpenAlex offen
2 Anbindung an die Plattform offen
3 Vorab-Festlegung mit Hash-Sperre offen

Vor Phase 1c ist die Lizenz des Repositoriums UKPLab/eacl2026-assessing-paper-novelty zu prüfen und anzubinden statt nachzubauen.