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
Der Link zur Originalquelle öffnet einen neuen Tab.