AMIGA-Magazin · Ausgabe 12/07 · Office: Rechtschreibprüfung "aspell"

Aktuelles Heft 12/07

Der E-Duden

Zwar liefert "AmigaOS 4" selber keine entsprechende Unterstützung mit, aber dank des Cygnix-Paketes kann auf die Bibliotheken von "aspell" zurückgegriffen werden. Wie das in der Praxis funktioniert, wollen wir hier zeigen.

von Michael Christoph

Der Entwickler der Cygnix-Umgebung Edgar Schwan hat uns eine spezielle Version der "aspell"-
Bibliothek bereitgestellt. Dadurch kann die Rechtschreibprüfung auch verwendet werden, wenn weder "Cygnix" noch "AbiWord" installiert sind. Die Rechtschreibkorrektur-Bibliothek "aspell" stammt aus der Linux-Welt. Dort gibt es außerdem noch "ispell" und "enchant".

Mit dem Programmcode in Listing 1 wird zuerst einmal herausgefunden, welche Wörterbücher überhaupt installiert sind und benutzt werden können. Alle Wörterbücher sind mit einer zwei- oder dreistelligen Buchstabenkombination bezeichnet. So steht etwa de für die deutsche und en für die englische Sprache.
Vorbereitet wird alles mit der Funktion get_aspell_dict _info_list() und im Folgenden per aspell_dict_info_ list_elements() die Ergebnisliste abgerufen. Durch die Liste kann über die Anweisung aspell_dict_info_enumeration_next() gelaufen werden. Wenn man die Daten nicht mehr braucht, wird die Liste mit delete_aspell_dict_info_enumeration() wieder freigegeben.

Die Config muss nur einmal beim Programmstart angelegt werden und ist im weiteren Verlauf nicht mehr notwendig und wird daher sofort wieder freigegeben. Mit der Operation aspell_config_replace() nehmen Sie Änderungen an der Config vor und um die gewünschte Sprache festzulegen:

aspell_config_replace(config,"lang","de");

Danach erstellen Sie mit new_aspell_speller() eine neue Prüfinstanz. Diese wird im weiteren Verlauf noch benötigt. Mehr ist aber an Vorarbeit nicht notwendig. Diese ist nur einmal zum Start bzw. beim Wechsel der Sprache notwendig. Die Funktionen brauchen eine auch gewisse Zeit, da hierbei bereits die Wörterbücher geöffnet werden und ein interner Cache eingerichtet wird:

aspell_speller_check(speller,wort,-1)

Diese Funktion überprüft einzelne Wörter. Sie liefert als Rückgabewert eine 1, wenn das Wort korrekt geschrieben ist, ansonsten eine 0. Interessant ist auch noch die Funktion

aspell_speller_suggest(speller,wort,-1)

Sie liefert eine Liste mit Wortvorschlägen, die zum übergebenen Wort passen. Diese Funktion ist praktisch nur dann von Interesse, wenn ein Wort falsch geschrieben wurde. Wenn der Benutzer unsicher über die richtige Schreibweise ist, kann so eine Auswahl an Wörtern bereitgestellt werden. Hier liefert "aspell" durch seine interne phonetische Suche eine sehr gute Ergebnisliste mit gleich und ähnlich klingenden Wörtern. Den Code dazu finden Sie in Listing 2.

Wie bereits oben angesprochen, gibt es neben dem "großen" Wörterbuch noch die Möglichkeit, ein benutzerspezifisches Wörterbuch mit eigenen Wörtern zu führen. Dort kann der Anwender z.B. Begriffe wie "Amiga" als gültig ablegen. Um neue Wörter in diesen Katalog aufzunehmen dient die Funktion:

aspell_speller_add_to_personal(speller,word,-1);

Man sollte jedoch mit Vorsicht neue Wörter hinzufügen, da es bisher keine Möglichkeit gibt, diese wieder aus dem Wörterbuch zu entfernen - zumindest keine offizielle Möglichkeit. Da aber die Datei aspell.de.pws im Klartext geschrieben wird, kann man nach dem Beenden des Programms diese in einen beliebigen Texteditor laden und auch von Hand bearbeiten. In der ersten Zeile steht eine Kennung und die Anzahl der enthaltenen Zeilen.

Diese müssen unbedingt korrekt sein, damit das Wörterbuch in Zukunft auch noch verwendet wird. Durch das Löschen der Datei können alle enthaltenen Wörter verworfen werden.

Anders sieht es aus, wenn nur innerhalb der aktuellen Sitzung einzelne Wörter als richtig gekennzeichnet werden sollen. Das ist zwar nicht unbedingt erforderlich, kommt das Wort aber öfters vor, kann man so die Fehleranzahl reduzieren und hat einen besseren Überblick, welche Wörter wirklich noch falsch geschrieben sind. Diese Session-Word-List wird mit der "aspell"-Funktion

aspell_speller_add_to_session(speller,word,-1);

erweitert. Auch hier gibt es wieder keine Möglichkeit, einen Eintrag zu entfernen. Allerdings kann die komplette Liste zurückgesetzt werden. Für diese Operation nutzen Sie die "aspell"-Funktion

aspell_speller_clear_session(speller);

Bisher nicht weiter beachtet wurde die Fehlersituation. Jedes der bisher vorgestellten Kommandos sollte nach der Ausführung auf korrekte Verarbeitung überprüft werden. Dazu benutzen Sie die Funktion

aspell_speller_error(speller)

Liefert sie einen Wert ungleich 0, so liegt ein Fehler vor und der genaue (englische) Fehlertext kann ausgelesen werden:

aspell_speller_error_message(speller)

Im Artikel wurde nur ein kleiner Ausschnitt der Möglichkeiten von "aspell" vorgestellt. Dieser Teil reicht aber in der Praxis völlig aus, um auch in eigene Programme eine Rechtschreibprüfung einbauen zu können. Alle weiteren Funktionen dienen zum Verwalten von Daten oder zum schrittweisen Überprüfen von kompletten Texten. Mehr Kontrolle hat man allerdings, wenn der Text selbstständig wortweise überprüft wird. Das ist geringfügig langsamer, aber da der gesamte Text sowieso bereits im Speicher vorliegt, muss man ihn dadurch nicht zweimal vorhalten. Außerdem kann im Fehlerfall flexibler reagiert werden und die genaue Fehlerstelle ist auch sofort ersichtlich.

Das Beispielprogramm
Der Sourcecode in Listing 3 ist ausreichend, um in der Shell einzelne Wörter auf die korrekte Rechtschreibung zu prüfen und im Fehlerfall eine Liste mit Korrekturvorschlägen zu liefern. Das Programm muss beim Übersetzen mit der Bibliothek newlib gelinkt werden. Außerdem müssen die Bibliotheken aspell, pthread und unix beim Linkprozess einbezogen werden.

Ein Makefile finden Sie auf der nächsten Heft-CD, sodass man sich das Eintippen der Übersetzungsanweisungen ersparen kann. Alle notwendigen Includes und Bibliotheken liegen im Verzeichnis aspell-dir vor. Sie müssen ein assign aspell:

aspell-dir anlegen, damit sich das Programm kompilieren lässt und später auch die Wörterbücher findet. Die "aspell"-Bibliothek benötigt auch die threads.library, welche mit dem OS4-SDK installiert wird.

Zusätzlich auf der Heft-CD liegen noch die beiden Programme list-dicts.c und example-c.c vor. Diese listen die installierten Wörterbücher auf bzw.überprüfen interaktiv einzelne Wörter und ganze Texte.

Die hier vorgestellten Routinen sind bereits in einem fertigen Programm wiederzufinden. Das Programm "mySpellChecker" kann kostenlos von der Homepage des Autors bezogen werden. Es erlaubt sowohl die Kontrolle einzelner Wörter auf korrekte Schreibweise, als auch einen ganzen Text zu überprüfen. Die fehlerhaften Wörter werden dabei im Text farblich hervorgehoben. Durch Anklicken mit der Maus erhält man sofort die Korrekturvorschläge, die man ebenfalls per Mausklick übernehmen kann.

Richtig geschriebene Wörter, die im Wörterbuch bisher nicht hinterlegt sind, können wahlweise dauerhaft in einem benutzerdefinierten Wörterbuch eingetragen werden oder nur innerhalb der aktuellen Sitzung als gültig erklärt werden. Entsprechende Fenster zeigen die dort bereits eingetragenen Wörter an. Das Programm erkennt automatisch die installierten Wörterbücher und bietet diese zur Auswahl an. Somit können auch Texte in anderen Sprachen überprüft und korrigiert werden. Der fehlerbereinigte Text lässt sich natürlich auch wieder speichern. Im Hauptfenster werden noch zusätzlich statistische Daten über den vorhanden Text sowie dessen Anzahl an Fehlern geliefert.

Informationen im Internet:
Wörterbücher http://www.os4depot.net
mySpellChecker http://www.meicky-soft.de
aspell http://aspell.net

 





* Die Wörterbücher
Für "AbiWord" bzw. "aspell" gibt es bereits über 160 verschiedene Wörterbücher, die teilweise auch noch in unterschiedlichen Ausführungen und Dialekten vorliegen. Die Orginaldateien können nicht direkt verwendet werden, sondern müssen erst für den Amiga übersetzt werden.

Aktuell stehen im os4depot bereits elf weitere Sprachen zur Verfügung. Zum Nachvollziehen der hier vorgestellten Beispiele liegen alle Daten incl. dem deutschen Wörterbuch auf der nächsten Heft-CD vor. Sie können die Daten hier runterladen.

lb

Probe:
Eine einfache Rechtschreib- kontrolle mit der "aspell"-Bibliothek in der Amiga-Shell.

 

 

 

 

 

Persönlich:
Ein zusätzliches Wörterbuch mit einer privaten Wortliste kann man anlegen und nutzen.

 

 

 

 

 

 

Vorschläge:
Mit "mySpellChecker" lassen sich auch Wörter für Eingaben vorgeben.

 

 

 

 

 

 

Testlauf:
Vor der Prüfung des Textes wird geprüft, welche Sprachen installiert sind.

 

 

 

 

 

Informationen:
Nach dem Laden zeigt "mySpellChecker" die Anzahl der Zeichen an.


Hauptseite © 2007 All Rights Reserved. Alle Rechte vorbehalten Franzis' Verlag GmbH
Veröffentlichung und Vervielfältigung nur mit schriftlicher Genehmigung des Verlags

Kommentare, Fragen, Korrekturen und Kritik bitte an Webmaster AMIGA schicken.
Zuletzt aktualisiert am 30.01. 2007.