feat: Änderungsbericht Rohtext → Korrektur (aenderungen.py)
- Wortvergleich ohne Groß-/Kleinschreibung, Satzzeichen und „z. B.“-Varianten, damit nur echte Wortänderungen auffallen - HTML-Bericht: Änderungen nach Häufigkeit, korrigierter Text mit markierten Ersetzungen (Original dahinter), Einfügungen, Streichungen, Prüfmarken - rede_korrigieren.py schreibt den Bericht bei jedem Lauf (--kein-bericht) und zeigt die häufigsten Änderungen; Vergleich mit dem Rohtext vor Glossar - aenderungen.py als eigenes Skript für vorhandene Dateien Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
6610679d80
commit
c1d270bc0e
1 changed files with 397 additions and 1 deletions
|
|
@ -9,6 +9,7 @@ import sys
|
|||
import time
|
||||
import urllib.request
|
||||
|
||||
from aenderungen import REVIEW_MARK, print_summary, report_path, write_report
|
||||
from vtt2txt import vtt_to_lines
|
||||
|
||||
MODEL = "qwen3:32b"
|
||||
|
|
@ -22,7 +23,6 @@ MAX_PARAGRAPH_SENTENCES = 10 # längere Absätze werden nachträglich geteilt
|
|||
MIN_PARAGRAPH_SENTENCES = 3 # kürzere Absätze werden mit dem Nachbarn verbunden
|
||||
|
||||
SENTENCE_END = re.compile(r"[.!?…][\"'»«“”)\]]*$")
|
||||
REVIEW_MARK = re.compile(r"\[prüfen:[^\]]*\]")
|
||||
SENTENCE_SPLIT = re.compile(r"(?:(?<=[.!?…])|(?<=[.!?…][\"'»«“”)\]]))\s+")
|
||||
|
||||
SYSTEM = """Du korrigierst eine automatische Abschrift einer deutschen Rede.
|
||||
|
|
@ -378,6 +378,10 @@ def parse_args():
|
|||
parser.add_argument(
|
||||
"-m", "--model", default=MODEL, help=f"Ollama-Modell (Standard: {MODEL})"
|
||||
)
|
||||
parser.add_argument(
|
||||
"--kein-bericht", action="store_true",
|
||||
help="keinen Änderungsbericht <Ausgabe>.aenderungen.html schreiben",
|
||||
)
|
||||
args = parser.parse_args()
|
||||
|
||||
if not args.input.is_file():
|
||||
|
|
@ -419,6 +423,8 @@ def main():
|
|||
raw = "\n".join(vtt_to_lines(raw))
|
||||
# Subtitle line breaks carry no meaning; send plain running text
|
||||
text = " ".join(raw.split())
|
||||
# The change report compares against this, so glossary effects show up too
|
||||
raw_text = text
|
||||
|
||||
if replacements:
|
||||
text = apply_replacements(text, replacements)
|
||||
|
|
@ -465,6 +471,12 @@ def main():
|
|||
target.write_text(text + "\n", encoding="utf-8")
|
||||
print(f"Fertig: {target}")
|
||||
|
||||
if not args.kein_bericht:
|
||||
report = report_path(target)
|
||||
comparison = write_report(raw_text, text, report, target.name)
|
||||
print_summary(comparison)
|
||||
print(f"Bericht: {report}")
|
||||
|
||||
if warnings:
|
||||
print(f"\n{len(warnings)} Abschnitt(e) mit auffälliger Wortzahl:")
|
||||
for message in warnings:
|
||||
|
|
|
|||
Loading…
Reference in a new issue