Das Thema dieser Web Seite ist die Rechtschreibprüfung in Texteditoren, wie man sie installiert, konfiguriert und benutzt."

Besprochen werden unterschiedliche Editoren. Die Installation und Benutzung ist teilweise trivial, teilweise ist sie aber auch ein wenig tricky oder wenig intuitiv.

Rechtschreibprüfung in einzelnen Editoren

Installation, Konfiguration, Benutzung

Zu den folgenden Editoren gibt es Artikel, die diese drei Dinge beschreiben.

Hintergrund Rechtschreibprüfung

Schreibprogramme und Texteditoren

Wenn wir mit irgendeinem Office Programm Dokumente verfassen, sind wir es gewohnt, dass das Programm ein Auge auf unsere Rechtschreibung hat. Die Hersteller solcher Programme legen auch Wert darauf, dass es so etwas gibt und dass es vernünftig funktioniert.

Diese Dokumente bestehen überwiegend aus Prosa, sind formal wenig strukturiert und sind dazu gedacht, von anderen Menschen gelesen zu werden.

Die Dokumente, die mit Texteditoren verfasst werden, sind anders. Text in diesen Dokumenten ist meist hochgradig strukturiert und im Format reglementiert. Es handelt sich dabei z.B. um Konfigurationsdateien oder den Quellcode eines Programms.

Diese Art von Text soll in erster Linie maschinell weiter verarbeitet werden. Eine andere Software soll den Text lesen, soll ihn verstehen und aufgrund des Inhalts ein Programm richtig bauen, etwas richtig konfigurieren oder eine Web-Seite richtig darstellen. Vielleicht werden solche Texte manchmal auch von anderen Menschen gelesen, aber das ist in diesem Fall nicht so wichtig.

Office Programme sind dafür gedacht, dass man mit ihnen Dokumente verfasst,

Texteditoren sind dafür gedacht, dass man mit ihnen Dokumente verfasst,

Daher wird Rechtschreibprüfung in Texteditoren eher stiefmütterlich behandelt.

Syntax- und Rechtschreibprüfung in Texteditoren

Für Texteditoren stellt sich im Zusammenhang mit der Rechtschreibprüfung von natürlichen Sprachen ein besonderes Problem: Sie dürfen - wenn überhaupt- Rechtschreibprüfung nur in bestimmten Teilen des Dokumentes anwenden.

Eine normale Textverarbeitung prüft schlicht den ganzen Text auf korrekte Schreibweise.

Ein Texteditor darf das nicht so ohne weiteres. Er ist in erster Linie dazu gedacht, Dokumente in formalen Sprachen zu bearbeiten und formale Sprachen halten sich nicht an Rechtschreibregeln. Wo sich ein Deutsch- oder Englischlehrer die Haare rauft, ist der Informatiklehrer hochzufrieden. Und umgekehrt.

Wird also natürliche und formale Sprache in einem Dokument zusammen verwendet, so muss der Texteditor schlau genug sein, nur die Teile, in denen natürliche Sprache erwartet wird, gegen die Rechtschreibregeln der natürlichen Sprache zu prüfen. Andere Teile, die in einer formalen Sprache geschrieben sind, müssen dagegen die syntaktischen Regeln der entsprechenden formalen Sprache befolgen und müssen daher ganz anders geprüft werden. Und wieder andere Bereiche, die weder noch sind, müssen ganz außen vor gelassen werden.

Nehmen wir eine Datei mit Namen "x.c" (das ist eine Datei in der Programmiersprache "C") und schreiben dort folgenden Ausdruck hinein:

wihle (x != 1)

Ein guter Editor wird diese Zeile anmahnen. Aber nicht, weil "wihle" ein falsch geschriebenes englisches Wort ist, sondern weil in der Programmiersprache "C" an dieser Stelle ein Schlüsselwort erwartet wird und "wihle" als Schlüsselwort nicht existiert. Es könnte "while" an der Stelle heißen, oder "for" oder auch "if", aber nicht "wihle"

Schreibe ich in einer Datei mit C Quellcode

1 int Anzal; // gezählte Wörter
2 // ...
3 Anzahl = 1;

so wird mich jede anständige Office Textverarbeitung darauf hinweisen, dass "Anzal" in Zeile 1 falsch geschrieben ist, es fehlt ein "h".
Jeder anständige Texteditor wird dagegen behaupten, dass das Wort "Anzahl" in Zeile 3 falsch geschrieben ist, weil sich die Schreibweise nicht mit dem vorher definierten Wort "Anzal" deckt. Schreibe ich beide falsch, ist er zufrieden. :-)

Na, dann ist ja alles gut.?

Nehmen wir das Beispiel von oben und ändern ein klein wenig daran.

1 int Anz; // Hier wird die Anz der Wörter gespeichert
2 // ...
3 Anz = 1;

Ich habe aus dem falschen Wort "Anzal" das auf deutsch genauso falsche Wort "Anz" als Abkürzung für Anzahl gemacht. Eine Methode, die in Programmen absolut sinnvoll und auch syntaktisch richtig ist.

Der Teil des Textes der mit "//" anfängt, ist eine Kommentar und wird vom Texteditor eigentlich ignoriert. Wörter in Kommentaren werden nicht gegen die Syntax der Programmiersprache geprüft.

Da aber genau dieser Teil für Menschen bestimmt ist, soll hier die Rechtschreibprüfung angewendet werden. Und unter dem Gesichtspunkt korrekter deutscher Schreibweise ist das Wort Anz im Kommentar natürlich falsch.

Mal falsch, mal richtig, mal so, mal so?

Ja, genau, das wollen wir! Das erste Anz in Zeile 1 ist richtig, das zweite in Zeile 1 ist falsch, das dritte in Zeile 3 ist wieder richtig.

Ein Texteditor muss in Sachen Sprache also nicht nur richtige Rechtschreibung und richtige formale Syntax erkennen, sonder das Eine vom Anderen unterscheiden können.

Werkzeuge und Methoden

In der freien Welt gibt folgende Ansätze, eine Rechtschreibprüfung zu implementieren:

  1. Hunspell
  2. Aspell
  3. Wortliste

Hunspell

Hunspell ist ein Programm - oder ein Modul, das in andere Programme eingebaut werden kann - das ein Wort oder eine ganze Datei gegen ein Wörterbuch prüft.

Hunspell Wörterbücher bestehen aus zwei Dateien je Sprache. In einer Datei mit der Endung ".dic" stehen die eigentlichen Wörter, in einer zweiten mit der Endung ".aff" stehen Regeln, wie aus den Wortstämmen die Variationen gebildet werden. Je Sprache gibt es also zwei Dateien. Beispiel de-DE.dic und de-DE.aff

Hunspell liegt auf GitHub. Hunspell Projekt auf github

Wörterbücher für Hunspell finden sich an mehreren Stellen im Netz, z.B auch hier.

Aspell

Aspell ist ein GNU Projekt der Free Software Foundation und Nachfolger des unter Unix früher üblichen Ispell. Die Wörterbücher von Aspell arbeiten nicht mit Erweiterungen, sondern werden auf eine andere Art zusammengestellt.

Eine offizielle Sammlung aller Aspell Wörterbücher findet sich auf der Aspell Dictionaries Seite des GNU Projektes.

Wortlisten

Manche Programme, z.B. NetBeans machen keine Annahmen über Wörterbücher und binden auch keine Module ein.

Sie arbeiten mit einfachen Wortlisten, gegen die die im Text vorkommenden Wörter geprüft werden. Ist ein Wort in der Wortliste, dann ist gut, wenn nicht, dann nicht.

Diese Wörterbücher haben ein einfaches Format und der Algorithmus zum Suchen darin ist auch recht einfach. Der Haken daran ist, dass in solchen Wortlisten eben alles drin sein muss, jedes Wort, Wörter, Worte, Wortes.

Sie sind dementsprechend groß. Man kann sie mit Aspell oder Hunspell erzeugen und es gibt Orte im Netz, von denen man sich solche Wortlisten herunterladen kann.

Nur um eine Vorstellung zu bekommen: Das deutsche Hunspell Wörterbuch hat ca. 75.000 Einträge, eine deutsche Wortliste mit den dazugehörenden Variationen kommt auf 2.150.000 Einträge.

Begriffe

Formale Sprache
Sprache, die von Computern verstanden und von Menschen oder Computern geschrieben wird.
  • Auszeichnungssprachen für Text (HTML, MarkDown, ...)
  • Auszeichnungssprachen für Daten (XML, JSON, CSON, ...)
  • Programmiersprachen (C, Java, JavaScript, PHP, ...)
Merkmale:
  • begrenzter Wortschatz ( if begin while ...)
  • starre Grammatik
  • viele Sonderzeichen ( { } [ ] ( ) >< ; = != ...)
Natürliche Sprache
Sprache, die von Menschen gesprochen, geschrieben, gelesen und verstanden wird.
Natürliche Sprachen werden in der Computer-Welt durch Kürzel identifiziert.
Im allgemeinen findet man nur Kürzel, die den Teilbereich, der die Sprache und die Region bestimmt, verwenden.
Beispiele sind en-US, en-GB, de-DE, de-CH für amerikanisches Englisch, britisches Englisch, deutsches Deutsch, schweizerisches Deutsch.
Merkmale:
  • umfangreicher Wortschatz
  • biegsame Grammatik
  • wenig Sonderzeichen
Syntax-Prüfung
Prüfung, ob in einer formalen Sprache korrekte Schlüsselworte an der richtigen Stelle verwendet werden.
Syntax-Vervollständigung
Vorschläge durch den Editor, welche Schlüsselworte oder Terme an einer bestimmten Stelle in einer formalen Sprache eingefügt werden können.
Syntax-Hervorhebung
Farbliche Hervorhebung von Schlüsselworten und Sonderzeichen in einer formale Sprache durch den Editor.
Rechtschreibprüfung
Prüfung, ob in einer natürlichen Sprache Wörter gebraucht werden, die in einem Wörterbuch vorhanden sind oder aus den dort hinterlegten Regeln abgeleitet werden können.
Rechtschreibkorrektur, Korrekturvorschläge
Vorschläge durch den Editor, wie ein falsch geschriebenes Wort in einer natürlichen Sprache richtig geschrieben werden könnte.
Wort-Vervollständigung
Vorschläge durch den Editor, welche bekannten Wörter an einer bestimmten Stelle in einer formalen oder natürlichen Sprache eingefügt werden können.