Es mangelt an Spell-Checking Programmen

Eigentlich sollte man denken, dass im Laufe der Jahre genug Manpower in die automatische Rechtschreibkontrolle investiert wurde. In der Tat ist die Anzahl an derartiger Software groß. Firefox besitzt einen eingebauten Spellchecker, unter Linux gibt es aspell, Online Webseiten werden auf http://praxistipps.chip.de/rechtschreibpruefung-online-die-3-besten-sites_27316 vorgestellt und speziell für englische Rechtschreibung gibt es noch weitaus mehr Programme. Leider sind derartige Tools in der Praxis nur wenig hilfreich. Sie basieren auf manueller Mitarbeit. Man muss sich einen Absatz anschauen die unterkingelten Wörter anklicken und einen der Vorschläge akzeptieren. Manchmal werden auch Wörter unterkringelt die zwar korrekt geschrieben sind, aber der Software unbekannt sind. Und ganz schwer ist es, wenn man Deutsch und Englisch mischt, im Regelfall wird die Rechtschreibkontrolle dann zur Farce.

Wo liegt das Problem? Eigentlich sollte man denken, es wäre möglich eine Software zu schreiben die nichts weiter kann als die Rechtschreibung zu checken. Wo man also einen fehlerhaften Text hineingibt und die korrigierte Fassung herauskommt. Leider gibt es so eine Software aktuell nicht. Jedenfalls nicht für Normaluser. Gerüchten zufolge ist im IBM Watson Bluemix API eine Rechtschreibkontrolle enthalten die auf semantischer Ebene arbeitet, aber wer hat schon einen Zugang zu dieser Höllenmaschine? Und so muss man leider konstatieren, dass bis heute das Problem noch nicht gelöst wurde. Also lieber Hacker, wer schreibt die erste brauchbare Rechtschreibkontrolle? Sie müsste folgende Features besitzen:

– gemischte Sprachen: Deutsch und Englisch im selben Text
– Umlaute
– sehr große Wortliste
– Kontexterkennung
– interaktionsfrei, das heißt der User muss nirgendwo draufklicken sondern die Software agiert autonom

Die gute Nachricht lautet dass vom technischen her eine solche Software möglich ist. Man muss da keine superneue Technologie wie neuronale Netze oder ähnliches einsetzen. Sondern das Geheimnis besteht darin, dass man sehr viele Features hintereinanderschaltet. Also in einer Pipeline viele kleine Details berücksichtigt. Es bedarf also keines komplett neuen Systems mit innovativen Algorithmen sondern es reicht aus, wenn die Software immer weiter verbessert bis sie irgendwann perfekt ist.

Als Ausgangsbasis gibt es bereits viele Dinge auf die man zurückgreifen kann. Eine Programmiersprache wie Python ist bereits als OpenSource vorhanden, eine Entwicklungsumgebung mit der man komplexe Software entwickeln kann wie Geany gibt es ebenfalls. Offene Wörterbücher sind in Wikipedia enthalten (und zwar für alle Sprachen), auch Librarys zum Grammatik-Check werden in der Literatur diskutiert. Was noch fehlt ist eine Software die man ähnlich einfach nutzen kann wie den Befehl „grep“ unter Linux. Wo man also ein Tool hat, was tatsächlich in der Lage ist, die Rechtschreibung zu checken und zu verbessern.

Existierende Programme wie Hunspell scheitern weniger an der fachlichen Realisierung. Hunspell wurde beispielsweise in C++ programmiert, steht als Debian Package bereit und lässt sich mit unterschiedlichen Wörterbüchern nutzen, sondern das eigentliche Problem ist dass die Projektverantwortlichen nicht in der Lage sind, die Schwächen zu sehen. Sie beschreiben Hunspell als leistungsfähige Software zu Rechtschreibkorrektur und glauben dass es produktiv eingesetzt werden kann. Dabei ist Hunspell auf dem heutigen Niveau unbenutzbar. Im Grunde macht es nichts weiter als zu einem Absatz per Zufall irgendwelche Wörter zu unterkringeln damit dann der User anfangen darf selber die Rechtschreibung zu korrigieren. Worum es geht ist nicht Rechtschreibkontrolle sondern das Ziel ist die interaktionsfreie Rechtschreibkontrolle.

In der Software „Apache UIMA“ gibt es eine Komponente „DKPro Core“ welche einen Spellchecker besitzt „DKPro Spelling“. Leider gibt es dazu keinerlei Dokumentation und es ist zweifelhaft ob man damit überhaupt etwas sinnvolles anfangen kann. Lädt man sich das Apache UIMA Package auf seinen PC herunter (22 MB) stellt man fest, dass davon 90% Dokumentation sind. Darin steht drin, dass UIMA ein Framework ist um mit Java und C++ eigene NLP Tools zu schreiben. Wie das gehen soll bleibt offen und jemanden der das schon gemacht hat gibt es auch nicht. Anders gesagt, UIMA ist ein Fake und keine richtige Software.

In der wissenschaftlichen Literatur wird das Thema „Spellchecking“ ausführlich diskutiert. Leider sind die meisten Paper sehr theoretisch. Offenbar besitzen Google und IBM sehr leistungsfähige Programme, die jedoch wie allgemein zu vermuten war, nicht allgemein verfügbar sind. Die best-practice Methode zur Konstruktion eines Spellcheckers soll kurz erläutert werden. Im Kern geht es darum, ein Language Modell zu programmieren. Obwohl in der Fachliteratur gesagt wird, dass dieses Language Modell mit Hilfe von Bayschen Netzen, Neuronalen Netzen oder mit der „Damerau–Levenshtein distance“ erzeugt wird, ist das nur die halbe Wahrheit. Im Kern ist ein language Modell nichts weiter als ein Computerprogramm. Also Sourcecode der in C++, Python oder Java erstellt wurde, als Künstliche Intelligenz funktioniert und in der Lage ist Dinge wie Rechtschreibkontrolle auszuführen. Natürlich kommen dabei Dinge wie die „Levenshtein distance“ zum Einsatz aber nicht nur. Worum es eigentlich ist vielmehr der Software-Engineering-Prozess zum Erstellen einer derartigen Software. Kernbestandteil ist also nicht ein konkreter Rechtschreib-Korrektur-Algorithmus sondern im Kern befindet sich ein Bugtracker und ein verteiltes Versionscontrollsystem zur Programmierung der Software.

Anders formuliert, wenn die Software nicht perfekt arbeitet ist das keineswegs ein Problem des Dictionary oder des Bayschen Netzes was die Wahrscheinlichkeit berechnet wann zwei Wörter aufeinander folgen, sondern es ist ein Problem für das Software-Engineering-Team, dass einen Bug-Eintrag erhält wie „Dieses !#§& Programm ist nicht im Stande meine Rechtschreibfehler zu verbessern. Ist mir egal, wie ihr das Problem löst, macht was sonst gibt es heute kein Abendbrot.“

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s