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_matched wird auf True gesetzt.

  • 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:

  1. Die Fuzzy-Funktion sucht im gesamten Text nach Wörtern, die dem Zielwert (replacement) ähnlich sind (basierend auf der Schwelle).

  2. Wenn ein Fuzzy-Match gefunden wird, erfolgt die Ersetzung.

  3. 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).

  1. Regeln mit Stopp-Kriterium (^…$): Müssen zuerst stehen, um ihre hohe Priorität auszuspielen.

  2. Regeln zur Kumulation (partieller Match): Müssen in der logischen Reihenfolge der Transformationen stehen (vom Rohtext zur finalen Form). Sie setzen current_rule_matched auf True und blockieren damit den späteren Fuzzy-Fallbacks für diesen Token.

  3. 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.