Prioritätslogik (mit Fuzzy als Fallback)¶
Die komplexe Fuzzy-Berechnungen werden nur als Fallback genutzt.
Die neue Prioritätslogik (mit Fuzzy als Fallback)¶
Mit dieser Bedingung (if not current_rule_matched:), in Kombination mit dem Modus default_mode_is_all = True (Kumulierung), ergibt sich ein zweistufiger Prioritäts-Workflow:
Phase 1: Der High-Priority (Deterministische) Durchlauf¶
Die Engine durchläuft die gesamte Liste fuzzy_map_pre (Modul-Reihenfolge > Zeilennummer).
A. Stopp-Kriterium (Höchste Priorität)¶
Wenn eine Regel einen Full Match (^...$) erzielt, stoppt die Verarbeitung für dieses Token sofort.
Prioritäts-Konsequenz: Die Regel, die am höchsten in der Liste steht und einen Full Match erzielt, gewinnt definitiv und beendet den Prozess.
B. Kumulations-Kriterium (Hohe Priorität)¶
Wenn eine Regel keinen Full Match, aber einen partiellen Match oder eine sonstige Ersetzung (ohne Stopp-Kriterium) erzielt:
Die Ersetzung wird angewendet.
WICHTIG: Die Variable
current_rule_matchedwird aufTruegesetzt.Die Verarbeitung geht zur nächsten Regel über (Kumulation).
Prioritäts-Konsequenz: Die Reihenfolge der Regeln ist hier entscheidend für die Anwendungsreihenfolge. Frühere Regeln modifizieren den Text für spätere Regeln.
Phase 2: Der Low-Priority (Fuzzy) Fallback¶
Der Fuzzy-Check wird nur ausgelöst, wenn der gesamte deterministische Durchlauf (Phase 1) abgeschlossen ist und keine einzige Regel angewendet wurde (current_rule_matched ist immer noch False).
Wenn der Fuzzy-Check ausgeführt wird, gilt:
Die Fuzzy-Funktion sucht im gesamten Text nach Wörtern, die dem Zielwert (
replacement) ähnlich sind (basierend auf der Schwelle).Wenn ein Fuzzy-Match gefunden wird, erfolgt die Ersetzung.
WICHTIG: Die die Fuzzy-Funktion stoppt die Verarbeitung sofort, nachdem der erste Fuzzy-Match gefunden wurde.
Was das für die Priorität der Fuzzy-Regeln bedeutet:¶
# Pseudo-Code:
for rule in fuzzy_map_pre:
# 1. Deterministic/Regex checks here...
# Wenn Phase 1 beendet ist und KEIN Match gefunden wurde:
if not current_rule_matched:
# 2. Fuzzy Fallback
for rule in fuzzy_map_pre: # WIRD HIER DIE LISTE NOCHMAL DURCHLAUFEN?
# Führe den Fuzzy-Check auf Basis der replacement/threshold der Regel durch.
**Die Fuzzy-Funktion, wird nur am Ende aufgerufen.
Finales Prioritäts-Fazit¶
Unabhängig davon, wie die Fuzzy-Suche im Detail implementiert ist, solange die deterministische Phase (Phase 1) zuerst und in der Reihenfolge der Liste durchläuft, gilt:
Die höchste Priorität liegt bei den Regeln, die ganz oben in fuzzy_map_pre stehen, und sich an der Determinismus-Logik beteiligen (Full Match oder Kumulation).
Regeln mit Stopp-Kriterium (^…$): Müssen zuerst stehen, um ihre hohe Priorität auszuspielen.
Regeln zur Kumulation (partieller Match): Müssen in der logischen Reihenfolge der Transformationen stehen (vom Rohtext zur finalen Form). Sie setzen
current_rule_matchedaufTrueund blockieren damit den späteren Fuzzy-Fallbacks für diesen Token.Fuzzy-Fallback: Dies ist die niedrigste Priorität. Es wird nur aktiv, wenn die gesamte Kaskade der deterministischen Regeln versagt hat.
Wichtig: Jede Regel (auch eine kumulierende, nicht-stoppende Regel), die in Phase 1 zuschlägt, deaktiviert den Fuzzy-Fallback für dieses Token. Dies muss beim Design der generischen Regeln berücksichtigt werden.