Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/03508.jsonl.gz/786

Mi, 9. Dezember 2020, Remo
Ich schreibe alle meine Artikel in Markdown und als Editor verwende ich VS Code. Viele aus der GNU/Linux.ch Redaktion benutzen LanguageTool (LT) in der einen oder anderen Form um Ihre Texte zu korrigieren.
LanguageTool ist ein kostenloses und quelloffenes Grammatikprüfprogramm, und alle seine Funktionen stehen zum Herunterladen zur Verfügung. Die LanguageTool-Website ist an das proprietäre Schwesterprojekt LanguageTool Plus angeschlossen, das eine verbesserte Fehlererkennung für Englisch und Deutsch sowie eine leichtere Überarbeitung längerer Texte nach dem Open-Core-Modell ermöglicht.
LanguageTool gibt es als Browser Add-on für die gängigen Browser (Firefox, Chrome, Edge, Opera), es lässt sich in das Office-Programm Deiner Wahl einbinden (LibreOffice, MS Word, Google Docs und OpenOffice), es gibt eine öffentliche API die benutzt werden kann und man kann einen eigenen LanguageTool-Server betreiben. Die Software steht unter der
GNU LGPL v2.1+ Lizenz.
Im folgenden Artikel zeige ich mein Setup für meinen spezielle Use Case. Es gibt sicher viele Einstellungen, die ich nicht behandelt habe. Um den Server aufzusetzen, sollte man sich mit Docker ein wenig auskennen. Anwenderkenntnisse reichen aus.
LanguageTool Erweiterung für VS Code installieren
Ich verwende die Erweiterung LanguageTool Linter von David L. Day. Am einfachsten ist es, die Erweiterung direkt in VS Code zu suchen und zu installieren.
Alternativ kann die Erweiterung auch mit dem folgenden Befehl im Suchfeld (
Ctrl+P) installiert werden:
ext install davidlday.languagetool-linter
Die Standardeinstellungen werden wahrscheinlich nicht funktionieren, aber sie sind dazu da, um sicherzustellen, dass die Verwendung der öffentlichen API von LanguageTool freiwillig erfolgt.
Für einen ersten Test kann man der Option drei der Anleitung folgenden und die öffentliche API verwenden.
Einrichten der Erweiterung und des Servers
Da das Nutzen der öffentlichen API einige Einschränkungen mit sich bringt und ich auch nicht möchte, dass sensible Texte bei einem Dienst im Internet landen, betreibe ich den LanguageTool Server in einem Docker Container bei mir im lokalen Netzwerk.
Server
LanguageTool kann auf grosse n-gram Datensätze zurückgreifen, um Fehler bei Wörtern zu erkennen, die oft verwechselt werden. Um diese Daten nutzten zu können, müssen sie zuerst heruntergeladen und entpackt werden. Die n-gram Daten gibt es für Deutsch, Englisch, Spanisch, Französisch und Niederländisch. Ich habe nur die deutschen
n-gram Daten heruntergeladen. Der Container muss auf diese Daten zugreifen können.
Die Struktur sieht bei mir wie folgt aus:
Um den Container zu starten, nutzte ich die folgende
docker-compose Datei. Die Datei sollte den Namen
docker-compose.yml haben, so muss beim Starten nicht auf eine spezifische Datei verwiesen werden, wenn der
docker-compose up Befehl in diesem Verzeichnis ausgeführt wird.
Wichtig ist, dass der Pfad zu den
n-gram Daten angepasst wird, falls diese verwendet werden. Wenn die
docker-compose Datei und die
n-gram Daten im selben Verzeichnis liegen, kann der relative Pfad
./ngrams verwendet werden.
version: "3" services: languagetool: image: erikvl87/languagetool container_name: LanguageTool restart: always ports: - 8010:8010 # Using default port from the image environment: - langtool_languageModel=/ngrams # OPTIONAL: Using ngrams data - Java_Xms=512m # OPTIONAL: Setting a minimal Java heap size of 512 mib - Java_Xmx=1g # OPTIONAL: Setting a maximum Java heap size of 1 Gib volumes: - ./ngrams:/ngrams
LanguageTool wird Standardmässig mit einer minimalen Java heap size (
-Xms) von 256 MB und einer maximalen heap size (
-Xmx) von 512 MB gestartet. Ich habe diese Standardwerte überschreiben, indem ich die Umgebungsvariablen
Java_Xms und
Java_Xmx gesetzt habe.
Hinweis: sollte man den LanguageTool-Server nur lokal ausführen, bietet es sich an die Ports ausschliesslich vom lokalen Rechner aus erreichbar zu machen. Dazu ergänzt man die Ports-Definition durch die Angabe von localhost:
- localhost:8010:8010 # Using default port from the image
Nun kann der Server mit dem Befehl
sudo docker-compose up -d gestartet werden.
LanguageTool
Wenn der Server läuft, muss nun die Erweiterung in VS Code eingerichtet werden. Mit dem Shortcut
Ctrl+, öffnet sich das Einstellungsmenü von VS Code. Im Untermenü
Extensions -> LanguageTool Linter muss der zuvor eingerichtete Server eingestellt werden. Die Serveradresse ist die IP des Servers und der Port des Docker Containers. Bei mir ist das
http://<ip-pii>:8010. Wenn der Docker Container auf dem lokalen Rechner gestartet wurde und nicht auf einem Server, muss man die IP-Adresse des
localhost nehmen. Dann wäre die Adresse
http://<ip-pii>:8010.
Unter anderem kann man noch die Sprache und das Verhalten vom LT Linter einstellen. Bei mir sieht es wie folgt aus:
Ergebnis
Sobald ich nun ein Markdown Dokument offen habe, wird die Rechtschreibung konstant überprüft und mögliche Fehler markiert sowie ein Quick Fix angezeigt, wenn ich mit dem Mauszeiger über die markierte Stelle fahre.
Die Erkennung von Fehlern geht über reine Grammatik hinaus, was echt erstaunlich gut funktioniert. Es funktioniert um Längen besser als MS Word oder LibreOffice.
Der eigene LT Server bietet sicher noch potenzial für weitere Setups wie z. B. das Firefox Add-on oder im LibreOffice. Allerdings benötige ich das nicht.
Die Performance ist ziemlich gut, ich spüre keinen Unterschied zur öffentlichen API. Allerdings hat mein Server auch einen Read und Write SSD Chache und mein Netzwerk ist ziemlich flott.