bk99.de entertain the web since 1997

Eine Rechtschreibkorrektur in wenigen Zeilen Python

Zusammenfassung

Peter Norvig baut ein kleines probabilistisches Korrekturprogramm und erklärt damit Sprachmodell, Fehlermodell, Kandidatensuche und ehrliche Evaluation.

Ideen

  • Ein Worthäufigkeitsmodell schätzt die Wahrscheinlichkeit möglicher Korrekturen.
  • Löschen, Vertauschen, Ersetzen und Einfügen erzeugen Kandidaten mit Editierabstand eins.
  • Nur bekannte Wörter begrenzen die sehr große Kandidatenmenge.
  • Bayes trennt Wortwahrscheinlichkeit und Tippfehlerwahrscheinlichkeit konzeptionell voneinander.
  • Ein getrenntes Testset verhindert unbewusste Anpassung an Entwicklungsbeispiele.
  • Kontext aus benachbarten Wörtern löst Mehrdeutigkeiten einzelner Wörter.

Einsichten

  • Kleine Modelle erklären komplexe Systeme besser als undurchsichtige Produktionsimplementierungen.
  • Explizite Vereinfachungen zeigen zugleich Funktionsweise und Grenzen eines Modells.
  • Mehr Trainingsdaten helfen nur, wenn Modell und Fehlerannahmen dazu passen.
  • Evaluation verwandelt eine überzeugende Demonstration in eine überprüfbare Behauptung.

Fakten

  • Das Korpus enthält 1.115.504 Wörter und 32.192 unterschiedliche Einträge.
  • Das Entwicklungsset erreichte 75 Prozent korrekte Ergebnisse.
  • Das getrennte Testset erreichte 68 Prozent korrekte Ergebnisse.
  • Ein Wort mit acht Buchstaben erzeugt bei einem Editierschritt 442 Kandidaten.

Empfehlungen

  • Trenne Trainings-, Entwicklungs- und Testdaten konsequent voneinander.
  • Beginne mit einem erklärbaren Modell und dokumentiere jede Vereinfachung.
  • Profiliere zuerst, bevor du die Implementierung auf Geschwindigkeit optimierst.

Referenzen

Originalartikel lesen →