| Kategorien: | credativ® Inside HowTos |
|---|
LanguageTool ist eine der führenden Open-Source-Lösungen zur grammatikalischen und stilistischen Textprüfung. Während die meisten Nutzer wohl die Cloud-basierte Version kennen, gewinnt die on-premise (selbst gehostete) Variante zunehmend an Bedeutung – besonders für Unternehmen, Bildungseinrichtungen und Organisationen mit hohen Datenschutz- und Kontrollanforderungen.
Der Kern von LanguageTool ist unter der GNU Lesser General Public License (LGPL-2.1) lizenziert. Diese Lizenz erlaubt die freie Nutzung, Modifikation und Weitergabe der Software, auch in kommerziellen Umgebungen, solange Änderungen am ursprünglichen Code ebenfalls unter der LGPL veröffentlicht werden. Die Lizenz ist „weak copyleft“, was bedeutet, dass Anwendungen, die LanguageTool als Bibliothek nutzen, nicht zwangsläufig Open Source sein müssen. Die Lizenzinformationen sind im offiziellen Repository auf GitHub im COPYING.txt ersichtlich. Dritte Komponenten wie Wörterbücher können unter abweichenden Lizenzen (z. B. GPL) stehen.
Es gibt eine Open-Source Version sowie eine erweiterte Premium-Version mit zusätzlichen Features wie verbesserte Stil-, Semantik- und Formatprüfungen. Eine genaue Übersicht findet sich auf der Website. Wichtig ist hier, dass es für selbst gehostete Instanzen Premium Features nur für den kommerziellen Einsatz und nach individuellem Angebot gibt. Dies ist allerdings nur schwierig kommuniziert und primär im Forum auf Nachfrage kommuniziert. Auch sind wohl nicht alle Premium-Features verfügbar.
Leider hat LanguageTool 2026 Änderungen bei der Nutzung der Browser-Erweiterungen vorgenommen: Für die Cloud-Nutzung ist nun ein Premium-Abo erforderlich. Die selbst gehostete Version bleibt davon unberührt – hier kann die Browser-Erweiterung weiterhin mit dem eigenen Server verbunden werden, um eine nahtlose Integration in Webanwendungen wie E-Mail, CMS oder Formulare zu ermöglichen.
LanguageTool ist modular aufgebaut und kombiniert mehrere Technologien. Diese gehen dabei weit über die integrierte Rechtschreibprüfung von z. B. LibreOffice oder Thunderbird hinaus. Ein viel gewünschtes Feature ist aktuell allerdings noch nicht verfügbar: die Unterstützung für mehrere Sprachen innerhalb eines Dokumentes.
Morphologischer Analyzer & POS Tagger
Zuerst wird der Text in Sätze und Wörter zerlegt. Jedes Wort erhält mindestens einen Part-of-Speech (POS)-Tag (z. B. Nomen, Verb, Adjektiv). Der Analyzer berücksichtigt auch Flexionsformen, sodass „gegangen“ korrekt als Partizip Perfekt erkannt wird.
Disambiguator (Mehrdeutigkeitsauflöser)
Viele Wörter haben mehrere Bedeutungen (z. B. „Bank“ als Sitzgelegenheit oder Finanzinstitut). Der Disambiguator nutzt Kontextinformationen, um die richtige Lesart auszuwählen. Dies geschieht entweder regelbasiert oder statistisch und verbessert die Genauigkeit der nachfolgenden Regelanwendung.
Regel-Engine (XML & Java)
Die Fehlererkennung basiert auf einer Kombination aus:
N-Gramm-Modell (optional)
Für verbesserte Erkennung von Verwechslungen (z. B. „ihre vs. ihre“) kann ein n-Gramm-Modell hinzugefügt werden. Dieses nutzt statistische Daten aus riesigen Textkorpora (z. B. Google Books) und vergleicht die Wahrscheinlichkeit von Wortfolgen. Die n-Gramm-Daten sind nicht im Standardpaket enthalten, können aber lokal nachgeladen werden.
spelling_custom.txt.AnnotatedText kann HTML, LaTeX oder XML verarbeitet werden, ohne die Positionsangaben zu verfälschen.JLanguageTool eine leistungsstarke SchnittstelleDie Integration ist vielseitig: Neben der Browser-Erweiterung unterstützt LanguageTool APIs für eigene Anwendungen, Plugins für LibreOffice, Microsoft Word, Thunderbird und direkte Anbindung an Entwicklertools. Die selbst gehostete Lösung bietet somit maximale Flexibilität, Sicherheit und Skalierbarkeit – ideal für den Einsatz in sensiblen oder regulierten Umgebungen.
Eine vollständige Liste findet sich in folgendem Link. Prominent abwesend ist dabei ein dediziertes Plugin für den Outlook Client. Soweit nachvollziehbar war hier wohl der Aufwand nicht gegenüber der Nachfrage zu rechtfertigen. Allerdings gibt es nur ältere Beiträge im Forum dazu. Nichtsdestotrotz funktioniert LanguageTool im Browser auch problemlos mit Outlook im Browser. Die Einschränkung sollte so weit also nur den Desktopclient betreffen.
Auf Github finden sich verschiedene Möglichkeiten, um einen selbst gehosteten Service zu installieren. Gerade für lokale Installationen ist vermutlich eine Docker-Instanz am schnellsten bereitgestellt.
Es gibt hier verschiedene Images verlink, der Autor hat sich Beispielhaft für eines entschieden.
Der Maintainer bietet hier auch verschiedene fast fertige C&P Lösungen, um den Service zu starten. So auch eine Docker-Compose Vorlage um den Service als unprivilegierter Nutzer zu starten und das Dateisystem dabei Read-only zu halten:
Um dieses nutzen zu können, muss der Inhalt in z. B. eine docker-compose.yml geschrieben, die Verzeichnisse ngrams und fasttext erstellt und die Berechtigungen auf den z. B. nobody-Nutzer angepasst werden. Alle folgende Beispiele wurden auf einem Debian 13 System durchgeführt.
$ mkdir ~/Programme/Languagetool
$ cd ~/Programme/Languagetool
$ mkdir ngrams fasttext
$ chown nobody:nogroup ngrams fasttext
Folgend nun der Inhalt der compose-yaml mit Support für n-grams in Deutsch und Englisch. Wichtig zu beachten ist, dass die n-gram Daten recht groß sind und einige GB an Speicher brauchen.
So sind es zum aktuellen Zeitpunkt ca. 3 GB für Deutsch und ca. 15 GB für Englisch.
services:
languagetool:
image: meyay/languagetool:latest
container_name: languagetool
restart: unless-stopped
user: "65534:65534"
read_only: true
tmpfs:
- /tmp:exec
cap_drop:
- ALL
security_opt:
- no-new-privileges
ports:
- 8081:8081
environment:
download_ngrams_for_langs: de, en
volumes:
- ./ngrams:/ngrams
- ./fasttext:/fasttext
Im Anschluss kann man den Service entsprechend mit folgendem Befehl starten:
$ docker compose up -d
# Das Herunterladen der n-grams kann etwas dauern.
$ docker ps
2af60ed08544 meyay/languagetool:latest "/sbin/tini -g -e 14…" 4 weeks ago Up 3 hours (healthy) 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp languagetool
Der Service ist nun verfügbar und die Plugins sollten auf diesen zugreifen können. Es gibt keine Art der Authentifizierung oder ähnliches. Jeder mit Zugriff auf die URL und den Port kann diesen nutzen.
LanguageTool on-premise kombiniert datenschutzkonforme Textprüfung mit flexibler Integration. Die LGPL-2.1-Lizenz ermöglicht den freien Einsatz, während die umfassenden Schnittstellen eine nahtlose Einbindung in Office- und Webanwendungen erlauben. Mit der richtigen Konfiguration wird aus einem lokalen Server eine vollwertige, unternehmensfähige Lösung zur sprachlichen Prüfung.
| Kategorien: | credativ® Inside HowTos |
|---|
über den Autor
Berater
zur Person
Danilo ist seit 2016 Berater bei der credativ GmbH. Sein fachlicher Fokus liegt bei Containertechnologien wie Kubernetes, Podman, Docker und deren Ökosystem. Außerdem hat er Erfahrung mit Projekten und Schulungen im Bereich RDBMS (MySQL/Mariadb und PostgreSQL®). Seit 2015 ist er ebenfalls im Organisationsteam der deutschen PostgreSQL® Konferenz PGConf.DE.
Sie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Brevo. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von Turnstile laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie müssen den Inhalt von reCAPTCHA laden, um das Formular abzuschicken. Bitte beachten Sie, dass dabei Daten mit Drittanbietern ausgetauscht werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Turnstile. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen