Rechtschreibung selber gemacht


Über das Thema automatische Rechtschreibkontrolle habe ich schon einen Blogpost verfasst. Das Ergebnis war, dass es derzeit keine guten Rechtschreibprogramme gibt und wenn es sie gibt muss man sie interaktiv bedienen, was jedoch keinen Spaß macht. Auch eine Suche nach besserer Software brachte bisher keinen Erfolg. Was also liegt da näher, als selber eine Rechtschreibungssoftware zu erstellen?

Wie sie funktionieren soll ist simpel: vollautomatisch und on-the-fly. Das heißt, wenn erst der Nutzer aus einer Reihe von Vorschlägen auswählen muss dann taugt die Software nichts. Aber wie programmiert man eine Software? Nun, die Programmiersprache ist zweifellos Python, das ist klar. Und als Basis benötigt man vermutlich ein Wörderbuch. Man kann sich aber auch ein eigenes erstellen und zwar aus den Wörtern die man schon im Text hat. Die Problematik dürfte in den vielen Besonderheiten der deutschen Sprache zu suchen sein. Wie so eine Software im Detail aussehen kann weiß ich nicht, aber Fakt ist dass die Leute die sich bisher an diesem Problem versucht haben, damit gescheitert sind. Im Grunde ist das was die Leute aus dem aspell Team sagen komplett ohne Bedeutung, weil man dort nachwievor glaubt, dass man gute Arbeit geleistet hätte. Ich finde, dass wichtiger als Programmierfähigkeiten ist zunächst einmal die Einsicht, dass existiernde Programme nichts taugen.

Ich will mal versuchen wenigsten einen Prototypen zur Rechtschreibkorrektur zu erstellen. Ob es mir gelingt ist unklar, mal abwarten wie weit ich komme und wo die ersten unlösbaren Probleme auftauchen.

Eine erste Programmversion sieht so aus:

myfile = open('text.txt','r')
words = list(myfile.read().split())
print words

Der Code extrahiert alle Wörter aus einer Datei und zeigt sie an. Natürlich sind da noch viele Bugs enthalten. Man muss den Code noch weiter entwickeln.

Ein wenig elaborierter ist da schon der folgende Code:

myfile = open('text.txt','r')
words = list(myfile.read().split())
for i in range(len(words)):
  print i, words[i]

Diesmal wird die Liste etwas übersichtlicher formuliert und man sieht vor jedem Wort einen Counter der hochzählt. Was jetzt noch fehlt ist ein Wörterbuch gegen das man die Wörter testet. Die wohl einfachste Form besteht darin, sich selber eines zu erstellen, das zu Testzwecken aus nicht mehr als 5 Wörtern besteht.

Vielleicht noch ein kleiner Exkurs was das Ziel dieses kleinen Projektes ist. Und zwar geht es darum, zunächst einmal herauszufinden wie weit mit einem selbst geschriebenen Spellchecker kommt, und ab wo man scheitert. Denn, schaut man sich einmal existierende Programme an, so bestehen diese aus sehr vielen Lines of Code. Das heißt, die Aufgabe ist offenbar sehr kompliziert. Die Frage ist: warum? Zwar ist der aktuelle Prototyp noch nicht für irgendwas nützlich, die gute Nachricht ist jedoch, dass er einen vorhandenen Text aber auch nicht verschlechtert. Das heißt, er liest ihn ein und gibt ihn aus dem Bildschirm aus.

Die nächste Programmversion ist schnell erstellt. Sie kann bereits das Wörterbuch ausgeben und die Textdatei im Anschluss:

print "Dictionary:"
mydict = open('dict.txt','r')
words = list(mydict.read().split())
for i in range(len(words)):
  print i, words[i]
print "\nTextfile:"
myfile = open('text.txt','r')
words = list(myfile.read().split())
for i in range(len(words)):
  print i, words[i]

Die nächst folgende Programmiteration würde darin bestehen, dass man jedes Wort im Wörterbuch nachschlägt und es entweder findet oder nicht, und das als grafische Ausgabe mit angibt. Das ist jedoch etwas komplexer und wird in späteren Blogposts erläutert.

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