fix: Glossar-Entwurf – alles auskommentiert, Korrekturlauf gegen Rohtext

Erkenntnisse aus dem ersten echten Lauf (Lahnstein):
- Auch „sichere“ Funde des Modells sind oft falsch (Deckmäntelchen →
  Deckmäntel, Lemmaß → Lebens); daher alle Einträge auskommentiert,
  sichere zuerst
- -k verglich den Text nach dem Glossar mit einer Korrektur ohne Glossar und
  zeigte verdrehte Paare (Brandt → Brand). Jetzt Vergleich mit dem Rohtext;
  was ein Glossar-Eintrag ganz oder teilweise erledigt, entfällt
- Satzzeichen am Rand werden entfernt, keine Doppelungen mehr

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-10 20:06:17 +02:00
commit ec5f806a88

View file

@ -68,8 +68,10 @@ def test_main_filters_and_formats(raw_file, glossary, monkeypatch, capsys):
draft = raw_file.with_name("rede.glossar.entwurf.txt").read_text(encoding="utf-8")
lines = draft.splitlines()
assert "Grotzki => Grotzky" in lines
# Everything is commented out, sure findings first
assert "# ? Grotzki => Grotzky" in lines
assert "# ? Ghard Kocher => Gerhard Kocher" in lines
assert lines.index("# ? Grotzki => Grotzky") < lines.index("# ? Ghard Kocher => Gerhard Kocher")
for dropped in ("Kremmel", "Nirgendwo", "gut =>", " => x"):
assert dropped not in draft
assert "Modell test:1b" in lines[0]
@ -89,8 +91,9 @@ def test_main_filters_and_formats(raw_file, glossary, monkeypatch, capsys):
def test_correction_changes_are_commented_out(raw_file, glossary, tmp_path, monkeypatch):
monkeypatch.setattr(gv.urllib.request, "urlopen", fake_model(ENTRIES[:2]))
corrected = tmp_path / "rede.korrigiert.txt"
# Corrected without glossary: "Kremmel" became "Kremml" (a model error)
corrected.write_text(
"Der Kreml und Egon Bahr trafen Host Telchik. Die Rechtsstaat Bahn war gut. "
"Der Kremml und Egon Bahr trafen Host Telchik. Die Rechtsstaat Bahn war gut. "
"Herr Grotzky und Ghard Kocher sprachen über das gedeihliche Verhältnis.\n",
encoding="utf-8",
)
@ -100,18 +103,23 @@ def test_correction_changes_are_commented_out(raw_file, glossary, tmp_path, monk
lines = out.read_text(encoding="utf-8").splitlines()
assert "# ? gedeiliche => gedeihliche (1×)" in lines
assert "# ? Rechtsstaatbahn => Rechtsstaat Bahn (1×)" in lines
# Already a model suggestion, already in the glossary: not listed twice
assert "# ? Kremmel => Kremml (1×)" in lines
# Already a model suggestion, or what the glossary does anyway: not listed
assert not any("Grotzki => Grotzky (" in line for line in lines)
assert not any("Egon Bar =>" in line for line in lines)
assert not any("Bar => Bahr" in line for line in lines)
def test_drafted_entries_are_valid_glossary(raw_file, monkeypatch, tmp_path):
monkeypatch.setattr(gv.urllib.request, "urlopen", fake_model(ENTRIES[:2]))
out = tmp_path / "entwurf.txt"
run_main(monkeypatch, "-i", raw_file, "-o", out)
terms, replacements = rk.read_glossary(out)
assert terms == []
assert replacements == [("Grotzki", "Grotzky")]
assert rk.read_glossary(out) == ([], []) # nothing active
# Removing "# ? " turns the lines into glossary entries
accepted = tmp_path / "glossar.txt"
accepted.write_text(out.read_text(encoding="utf-8").replace("# ? ", ""), encoding="utf-8")
_, replacements = rk.read_glossary(accepted)
assert replacements == [("Grotzki", "Grotzky"), ("Ghard Kocher", "Gerhard Kocher")]
def test_unreadable_model_answer(raw_file, monkeypatch, tmp_path, capsys):