Files
Onyva-Postling/OPTIMIZATION_SETUP.md
2026-02-12 14:17:36 +01:00

6.1 KiB

🚀 Optimierungs-Setup

Diese Anleitung beschreibt die neuen Optimierungen und wie du sie einrichtest.

📦 Neue Features

1. LanguageTool Integration (Grammatik & Rechtschreibung)

  • Automatische Rechtschreib- und Grammatikprüfung
  • Kategorisierung von Fehlern
  • Auto-Korrektur für sichere Fehler

2. N-gram Fingerprinting (Bessere Stil-Nachahmung)

  • Analysiert typische 2-3 Wort-Kombinationen
  • Extrahiert Signature-Patterns
  • 2-3x bessere Stil-Nachahmung

3. Semantic Similarity Check (Style Validator)

  • Misst semantische Ähnlichkeit zu echten Posts
  • Verhindert "KI-Stil-Drift"
  • Objektive Style-Bewertung

4. Readability Scoring (Lesbarkeits-Analyse)

  • Wiener Sachtextformel (WSTF)
  • Flesch Reading Ease
  • Durchschnittliche Satzlänge
  • Automatische Verbesserungsvorschläge

5. Chain-of-Thought Prompting (Besseres Reasoning)

  • Writer denkt Schritt für Schritt
  • Explizite Sinnigkeits-Prüfung
  • Bessere Content-Qualität

6. Erweiterte Critic-Bewertung

  • Neues Kriterium: "Logik & Sinnigkeit" (20 Punkte)
  • Integration aller Quality Checks
  • Score-Penalties für Fehler

🔧 Installation

Schritt 1: Dependencies installieren

pip install -r requirements.txt

Schritt 2: NLTK Daten herunterladen

python -c "import nltk; nltk.download('punkt')"

Oder führe das Setup-Script aus:

python scripts/setup_nltk.py

Schritt 3: LanguageTool Setup (Optional)

Option A: Nutze den Online-Service (einfach)

  • Keine weitere Einrichtung nötig
  • Nutzt automatisch den öffentlichen LanguageTool Server

Option B: Self-Hosted (empfohlen für Produktion)

  1. Download LanguageTool:
wget https://languagetool.org/download/LanguageTool-stable.zip
unzip LanguageTool-stable.zip
  1. Starte den Server:
cd LanguageTool-*
java -cp languagetool-server.jar org.languagetool.server.HTTPServer --port 8081
  1. Konfiguriere in .env:
LANGUAGETOOL_URL=http://localhost:8081

📊 Erwartete Verbesserungen

Metrik Vorher Nachher Verbesserung
Stil-Match ~70% ~90% +20%
Grammatikfehler 2-3/Post 0-1/Post -70%
Rechtschreibfehler 1-2/Post 0/Post -100%
Lesbarkeit Variabel Konsistent gut +50%
Sinnigkeit 80% 95% +15%

🎯 Wie die Quality Checks funktionieren

Ablauf im Workflow:

  1. Writer schreibt Post (mit N-gram Patterns & Chain-of-Thought)
  2. Critic bewertet Inhalt & Stil
  3. Grammar Checker prüft Rechtschreibung/Grammatik
    • Bei Fehlern: Score -1 bis -5 Punkte
  4. Style Validator prüft Ähnlichkeit zu echten Posts
    • Bei < 75% Ähnlichkeit: Score -5 Punkte
  5. Readability Checker prüft Lesbarkeit
    • Bei Problemen: Score -3 Punkte
  6. Finale Bewertung → Approved wenn Score ≥ 85

Score-System (NEU):

Bewertungskriterien (100 Punkte):

  • Authentizität & Stil-Match: 35 Punkte
  • Content-Qualität: 30 Punkte
  • Logik & Sinnigkeit: 20 Punkte (NEU!)
  • Technische Korrektheit: 15 Punkte

Penalties:

  • Grammatikfehler: -1 pro Fehler (max -5)
  • Style-Drift: -5 Punkte
  • Readability-Probleme: -3 Punkte

🧪 Testing

Test die Grammatik-Prüfung:

from src.agents.grammar_checker import GrammarCheckAgent

checker = GrammarCheckAgent()
result = await checker.process("Ich habe ein Fehler gemacht.")
print(result)
# Output: {'has_errors': True, 'error_count': 1, ...}

Test die Style-Validierung:

from src.agents.style_validator import StyleValidator

validator = StyleValidator()
result = await validator.process(
    generated_text="Dein neuer Post",
    reference_texts=["Beispiel Post 1", "Beispiel Post 2"],
    threshold=0.75
)
print(result["avg_similarity"])  # z.B. 0.82

Test die Lesbarkeit:

from src.agents.readability_checker import ReadabilityChecker

checker = ReadabilityChecker()
result = await checker.process("Dein Text hier")
print(result["verdict"])

🎛️ Konfiguration

Alle Thresholds können angepasst werden:

In orchestrator.py:

# Style Validator Threshold
style_result = await self.style_validator.process(
    generated_text=current_post,
    reference_texts=example_post_texts,
    threshold=0.75  # Ändern für strengere/lockerere Prüfung
)

# Readability Targets
readability_result = await self.readability_checker.process(
    text=current_post,
    target_grade=10.0,      # Wiener Sachtextformel (4-15)
    target_flesch=60.0,     # Flesch Score (0-100)
    max_sentence_length=20  # Durchschnittliche Wörter pro Satz
)

📝 Troubleshooting

LanguageTool nicht verfügbar?

  • Check: Ist language-tool-python installiert?
  • System läuft weiter, warnt aber nur
  • Grammar Check wird übersprungen

NLTK Tokenizer Fehler?

  • Führe aus: python -c "import nltk; nltk.download('punkt')"
  • Oder nutze das Setup-Script

SentenceTransformer Download langsam?

  • Beim ersten Start lädt es ~500MB Model
  • Danach gecached und schnell
  • Bei Problemen: Check Internet-Verbindung

Zu viele false positives bei Grammatik?

  • LanguageTool ist sehr streng
  • Nutze auto_correct=False (Standard)
  • Oder filtere bestimmte Regel-IDs

🔄 Migration für bestehende Setups

  1. Backup deiner Datenbank
  2. pip install -r requirements.txt
  3. NLTK Daten herunterladen
  4. Orchestrator neu starten
  5. Teste mit einem Post

Keine Datenbank-Änderungen nötig! Die neuen Checks werden automatisch in critic_result gespeichert.

📈 Monitoring

Check die Logs für Quality Check Ergebnisse:

Quality checks complete - Grammar: 2 errors, Style: 0.87%, Readability: ✅

Alle Details werden in generated_post.critic_feedback gespeichert:

{
  "overall_score": 87,
  "grammar_check": {...},
  "style_check": {...},
  "readability_check": {...}
}

🎉 Fertig!

Dein LinkedIn Workflow ist jetzt optimiert für:

  • Perfekte Rechtschreibung & Grammatik
  • Authentischer Schreibstil
  • Optimale Lesbarkeit
  • Logische, sinnvolle Texte

Erwartete Verbesserung: 50-70% bessere Post-Qualität!