feat: Glossar für die Magdeburg-Rede

- magdeburg.glossar.txt: 64 feste Ersetzungen (Namen, Orte, Hörfehler)
  und 10 Hinweis-Begriffe; jede Ersetzung trifft den Rohtext
- Test prüft jetzt beide Beispiel-Glossare gegen ihre Testdaten
- README: Glossare zu beiden Testdaten erwähnt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Dieter Schlüter 2026-10-10 18:11:58 +02:00
commit 8fe7c394f1
2 changed files with 13 additions and 8 deletions

View file

@ -86,7 +86,7 @@ Multi-Domain Task Force
``` ```
Ersetzungen ohne Treffer werden gemeldet (Tippfehler im Glossar). Ersetzungen ohne Treffer werden gemeldet (Tippfehler im Glossar).
`ramstein.glossar.txt` ist ein Beispiel für eine Rede über die US Air Base Ramstein. `ramstein.glossar.txt` und `magdeburg.glossar.txt` sind Beispiele zu den Testdaten.
## Testdaten ## Testdaten
@ -95,7 +95,7 @@ Ersetzungen ohne Treffer werden gemeldet (Tippfehler im Glossar).
für das Programm): für das Programm):
- `ramstein.de.*`: Rede über die US Air Base Ramstein (mit Glossar `ramstein.glossar.txt`) - `ramstein.de.*`: Rede über die US Air Base Ramstein (mit Glossar `ramstein.glossar.txt`)
- `magdeburg.de-orig.*`: Rede in Magdeburg (noch ohne Glossar) - `magdeburg.de-orig.*`: Rede in Magdeburg (mit Glossar `magdeburg.glossar.txt`)
```bash ```bash
./vtt2txt.py -i "testdaten/*.vtt" # erzeugt alle .txt neu ./vtt2txt.py -i "testdaten/*.vtt" # erzeugt alle .txt neu
@ -112,8 +112,8 @@ python3 -m pytest
``` ```
Die Tests brauchen kein Ollama: Modellaufrufe werden durch Fakes ersetzt. Geprüft Die Tests brauchen kein Ollama: Modellaufrufe werden durch Fakes ersetzt. Geprüft
werden Abschnittsbildung, Glossar (inkl. „jede Ersetzung in `ramstein.glossar.txt` werden Abschnittsbildung, Glossar (inkl. „jede Ersetzung in den Beispiel-Glossaren
trifft die Testdaten“), Streaming-Auswertung, Absatzgliederung (Text bleibt trifft ihre Testdaten“), Streaming-Auswertung, Absatzgliederung (Text bleibt
unverändert, 3–10 Sätze), Zwischenspeicher/Fortsetzen und die Kommandozeile. unverändert, 3–10 Sätze), Zwischenspeicher/Fortsetzen und die Kommandozeile.
`tests/test_vtt2txt.py` prüft die VTT-Umwandlung: jede `.vtt` in `testdaten/` `tests/test_vtt2txt.py` prüft die VTT-Umwandlung: jede `.vtt` in `testdaten/`
ergibt genau die zugehörige `.txt`, echte Wiederholungen bleiben erhalten, ergibt genau die zugehörige `.txt`, echte Wiederholungen bleiben erhalten,

View file

@ -107,10 +107,15 @@ def test_build_system_appends_terms():
assert "- Kreml\n- Egon Bahr" in system assert "- Kreml\n- Egon Bahr" in system
def test_sample_glossary_replacements_all_match(capsys): @pytest.mark.parametrize("glossary, sample", [
"""Every rule in ramstein.glossar.txt must hit the sample transcript.""" ("ramstein.glossar.txt", "ramstein.de.txt"),
_, replacements = rk.read_glossary(GLOSSARY) ("magdeburg.glossar.txt", "magdeburg.de-orig.txt"),
rk.apply_replacements(flat(SAMPLE.read_text(encoding="utf-8")), replacements) ])
def test_sample_glossary_replacements_all_match(capsys, glossary, sample):
"""Every rule in a sample glossary must hit its sample transcript."""
_, replacements = rk.read_glossary(REPO / glossary)
text = (REPO / "testdaten" / sample).read_text(encoding="utf-8")
rk.apply_replacements(flat(text), replacements)
assert "ohne Treffer" not in capsys.readouterr().out assert "ohne Treffer" not in capsys.readouterr().out