Ad

EnglischFranzösischSpanisch

Kostenloser Online-Editor | DOC > | XLS > | PPT >


OffiDocs-Favicon

Lingucomponent Grammatikprüfung

OffiDocs stellt OpenOffice online bereit, daher sind wir an der Lingucomponent Grammar Checking interessiert, deren Ziel es ist, eine Grammatikprüfung für Englisch und andere unterstützte Sprachen zu entwerfen, zu entwickeln und zu implementieren. Eine Grammatikprüfungs-API ist seit Version 3.0 in OpenOffice.org verfügbar.

Die Grammatikprüfung wird als eine bestimmte Implementierung eines Textiterations- und Markup-Prozesses angesehen, andere Iterations-/Markup-Prozesse wie die Rechtschreibprüfung oder Smart Tagging können grundsätzlich auf die gleiche Weise funktionieren (obwohl sie derzeit nicht so implementiert sind). Wenn in der folgenden Dokumentation die Grammatikprüfung erwähnt wird, kann dies als Platzhalter für die allgemeinere Aufgabe der Textauszeichnung angesehen werden. Da die Objekte, die die Text-Iteration ausführen, sich des speziellen Markup-Prozesses bewusst sind, für den sie verwendet werden, ist es grundsätzlich möglich, die Iteration für die Bedürfnisse dieses Prozesses fein abzustimmen.

Der Grammatikprüfungsprozess besteht aus

- ein oder mehrere zu prüfende Dokumente

- eine oder mehrere Grammatikprüfungsimplementierungen, die jeweils mindestens eine Sprache unterstützen.

- ein oder mehrere Dialoge zur Grammatikprüfung (höchstens eine Instanz pro Dokument)

- Ein Kontextmenü beim Klicken auf als fehlerhaft markierten Text

- ein globaler Iterator zur Grammatikprüfung (allen Dokumenten gemeinsam), der als Singleton implementiert ist und jeweils einen Satz (eines beliebigen Dokuments) prüft.

- ein Thread-Objekt pro Grammatikprüfer, das verwendet wird, um die Prüfung durchzuführen, ohne die GUI zu blockieren

- Objekte, die den Text eines Dokuments durchlaufen, wobei ein Objekt eine einzelne Grammatikprüfungsaufgabe darstellt, die angefordert wurde

- Objekte, die Textblöcke in einem Textdokument darstellen („flache Absätze“), die von der konkreten Struktur des Dokuments abstrahieren und den Zugriff auf den Text durch einfache Textstrings und Ganzzahlwerte ermöglichen, die Positionen und Längen von Teilstrings beschreiben.

 

Objekte und ihre Schnittstellen

Wir haben drei Teile, die zusammenarbeiten. Der erste Teil stammt aus dem zu prüfenden Dokument und ist eine Implementierung, die für den jeweiligen Dokumenttyp (z. B. Writer oder Calc) spezifisch ist. Es kapselt den Zugriff auf den Text des Dokuments. Ein Dokument, das auf Grammatikfehler geprüft werden soll, muss das Interface com.sun.star.text.XFlatParagraphIteratorProvider unterstützen. Über diese Schnittstelle muss es in der Lage sein, Objekte bereitzustellen, die com.sun.star.text.XFlatParagraphIterator implementieren, die selbst Objekte zurückgeben, die com.sun.star.text.XFlatParagraph implementieren. Letztere Schnittstelle ist von com.sun.star.text.XTextMarkup abgeleitet. Im Folgenden nennen wir diese Objekte "flache Absatz-Iteratoren" (FPIterator) und "flache Absätze" (FP). Wenn das Wort "Absatz" verwendet wird, bezeichnet dies auch ein "FP", keinen echten Absatz im Dokument, da nicht immer beide gleich sind.

Ein FP ist nicht unbedingt ein Absatz wie im Dokumentenkontext, es kann eine Sammlung davon sein (z. B. eine Liste) und es enthält nicht nur den Fließtext, sondern auch andere Textinhalte wie Textrahmen, Kopf- und Fußzeilen usw. Da nur die Der Dokumentkern kann solche FP-Objekte effizient handhaben. Dies ist eine dokumentspezifische Implementierung. Das FP offenbart nicht die vollständige interne Textstruktur oder seine Attribute, sein Inhalt ist nur als Zeichenfolge zugänglich, die den vollständigen Textblock enthält.

Ein FPIterator ist ein Objekt, das es ermöglicht, durch alle FP-Objekte zu iterieren, die zusammen den Dokumenttextinhalt bilden. Die Reihenfolge, in der die Absätze iteriert werden, ist willkürlich und ein Implementierungsdetail des FPIterator. Der "normale" Textinhalt sollte normalerweise in Leserichtung bereitgestellt werden, aber wie andere Texte wie Kopf- und Fußzeilen (die nur einmal vorhanden sind, aber auf jeder Seite wiederholt werden) oder Textrahmen (die in den Fließtext eingebettet sein können) hineinpassen nicht vorbestimmt. Das Iterieren durch Text ist immer einem Text-Markup-Prozess zugeordnet, der das gesamte Dokument behandeln soll. Daher wird die Iteration am Ende des Dokuments umlaufen und nicht enden, bevor alle Absätze als "geprüft" für den bestimmten Markup-Prozess (wie die Grammatikprüfung) markiert wurden. Als „geprüft“ markierte Absätze werden bei der Iteration übersprungen. Für Clients eines FPIterators ist es also einfach, sie zu verwenden: Fragen Sie nach neuen FP-Objekten, bis keine zurückgegeben werden, und kümmern Sie sich nicht darum, wie sie implementiert sind.

Der zweite Teil ist eine Grammatikprüfung. Ein Grammatikprüfer ist eine Komponente, die die Schnittstelle com.sun.star.linguistic2.XGrammarChecker implementiert. Für jede Sprache kann es eine bestimmte Komponente geben, die in der Lage ist, diese Sprache auf Grammatikfehler zu überprüfen. Die Konfiguration gibt an, welche Komponente für welche Sprache zuständig ist. Die Implementierung von com.sun.star.linguistic2.XGrammarChecker, die eine bestimmte Komponente darstellt, kapselt die "private" API dieser Grammatikprüfkomponente ein. Diese private API kann UNO-basiert oder reines Java, eine CLI- oder COM-Schnittstelle, eine C-API usw. sein, alles, was innerhalb einer Implementierung einer UNO-Schnittstelle verwendet oder überbrückt werden kann. Da die Schnittstelle ziemlich klein ist, sollte es nicht sehr kompliziert sein, existierende Grammatikprüfer zu verpacken, um sie in OpenOffice.org zu verwenden.

In der Mitte liegt die dritte Komponente, die zwischen den beiden anderen vermittelt. Es implementiert die "Logik" des Grammatikprüfprozesses. Da es mit den anderen beiden Teilen über ihre definierte UNO-API kommuniziert, ist nur dieser mittlere Teil unabhängig von dem jeweiligen Dokumenttyp oder der Komponente zur Grammatikprüfung. Ein UNO-Dienst namens com.sun.star.linguistic2.GrammarCheckingIterator ist die Komponente, die den eigentlichen Grammatikprüfungsprozess für alle unterstützten Szenarien durchführt. Es ist ein Singleton, das alle laufenden Grammatikprüfungsprozesse steuert und somit auch alle vorhandenen Grammatikprüfungskomponenten kennt. Es implementiert die Schnittstelle com.sun.star.linguistic2.XGrammarCheckingIterator und stellt auch ein Objekt bereit, das com.sun.star.linguistic2.XGrammarCheckingResultListener implementiert. Im Folgenden wird dieses Objekt GCIterator genannt.


Führen Sie Chrome Extensions

Ad