Eine Rechtschreibkorrektur in wenigen Zeilen Python
Zusammenfassung
Peter Norvig baut ein kleines probabilistisches Korrekturprogramm und erklärt damit Sprachmodell, Fehlermodell, Kandidatensuche und ehrliche Evaluation. Das Korpus enthält 1.115.504 Wörter und 32.192 unterschiedliche Einträge.
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 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
Links zur Originalquelle und zum Webarchiv öffnen einen neuen Tab.