![LanguageTool - Steffen Lippke Coding Tutorials](https://lippke.li/wp-content/uploads/2024/07/LanguageTool-Steffen-Lippke-Coding-Tutorials-1024x576.jpg)
Du möchtest verstehen, wie eine Grammatik Check am Computer funktioniert?
Hinter simplen Schlangenlinien unter einem Text stecken viele geniale Ideen.
Der Beitrag erklärt Dir wie die Software funktioniert.
Starten wir!
Wie funktioniert Rechtschreibungssoftware?
![LanguageTool is t kostenlos](https://lippke.li/wp-content/uploads/2024/05/image-3-1024x304.png)
Computer verstehen nur 0en und 1en und können einfache mathematische Operationen ausführen.
Menschliche Sprache verstehen sie gar nicht. Weder gesprochen noch geschrieben macht die Sprache für Computer Sinn.
Jeder der Sprachen lernt, muss die 1000 Ausnahmen oder speziellen Formulierung auswendig lernen. Das nervt.
Der Computer kommt deshalb mit Sprache ohne Umwege nicht klar. Programmierer haben deswegen Abstraktionen geschaffen, um Worte als 0en- und 1en-Folgen darzustellen und diesen einer Verknüpfung zu geben.
Grammatik-Software wie Microsoft Word / LanguageTool sind hochkomplexe Software, welche immer besser werden, aber noch nicht an die Qualität von guten Lektoren herankommen.
Natural Languagae Processing und Parse Trees
Der Teilbereich der Informatik nennt sich Natural Language Processing (NLP). Dieser beschäftigt sich mit der Verarbeitung von natürlicher Sprache. Auf der einen Seite kippen wir natürliche Sprache hinein, die Software prüft den Text und gibt uns Fehler möglichst verständlich und akkurat aus.
![Korrekte Worte, aber nicht die Verbindung.](https://lippke.li/wp-content/uploads/2024/05/image-4-1024x285.png)
Die deutsche Grammatik folgt einem logischen Untergerüst, welches wir im Alltag nicht wahrnehmen, aber bei korrekten Sätzen vorkommen sollte. Diese Logik versteht der Computer, aber kann nicht den Inhalt des Satzes / der Worte verstehen. Der Computer arbeitet abstrahiert und nutzt Listen und Tabellen z. B.:
- Julia – Eigennamen (wie Nomen)
- fährt (fahren) – Verb
- auf – Präposition
- blau – Adjektiv
- Boot – Nomen
Julia fährt auf dem blauen Boot.
Der Computer baut daraus einen Baum:
Sentence
|
|----------------------|------------------|
| | |
Noun Phrase Verb Phrase |-Noun Phrase -|
| | | | |
Noun Verb Prep Adj Noun
| | | | |
Julia fährt auf blauen Boot
Wie funktioniert Grammatik-Software?
Die klassische Grammatik Software kann Parse Trees bilden und hat viele Regeln einprogrammiert.
Diese Regeln sind von Sprache zu Sprache unterschiedlich. Eine Grammatik-Software versucht aus jedem Satz eine Parse Tree im Hintergrund zu erstellen.
Kommt die Software nicht weiter, geht die Software von einem Grammatikfehler aus. Der Fehler kann an allen Stellen in der Parse Tree passieren, sodass alle folgenden Äste nicht mehr analysiert werden.
Fehlt das Verb oder Nomen, setzt die Software einen Platzhalter, um den Rest doch noch verarbeiten zu können.
Neue Ansätze aus der „Künstlichen Intelligenz“
![KI immer und überall](https://lippke.li/wp-content/uploads/2024/05/image-5-1024x648.png)
Neuronale Netze wollen die klassische Software verbessern. Die Modelle werden mit Beispiel Korrekturen und richtigen Texten trainiert. Die Fehlererkennung basiert nicht auf einee vor-programmierte Logik, sondern auf den Modellen.
Eine Grammatik-Software wie Grammarly oder Microsoft Editor nutzen neuronale Netze:
- Eingabe: Die Software erhält Textdaten als Eingabe. Diese Daten können aus verschiedenen Textsammlungen stammen, z.B. aus Dokumenten, Webseiten oder Datenbanken.
- Vorverarbeitung: Die Eingabedaten werden vorverarbeitet, um sie für das neuronale Netz nutzbar zu machen. Dies kann das Entfernen von Füllwörtern (Stopwords), die Normalisierung (geht –> gehen) von Text und die Umwandlung von Wörtern in Zahlenabstraktion umfassen.
- Neuronales Netz: Das vorverarbeitete Datenmaterial wird dann durch das neuronale Netz geführt. Ein neuronales Netz besteht aus verschiedenen Schichten von Knotenpunkten (Neuronen), die Informationen von anderen Neuronen oder von außen aufnehmen, modifizieren und dann ein Ergebnis an das nächste Neuron weitergeben. Die Neuronen sind jeweils durch sogenannte Kanten verbunden. Ein künstliches neuronales Netzwerk kann in 3 Schichten aufgeteilt werden: in die Eingabeschicht (Input Layer), die verborgenen Schichten (Hidden Layers) und die Ausgabeschicht (Output Layer)
- Training: Während des Trainings lernt das Netzwerk, Muster in den Daten zu erkennen und Vorhersagen zu treffen. Dies geschieht durch einen Prozess namens “Backpropagation”, der einen Anpassungs- und Verbesserungsprozess im Netzwerk anstößt.
- Anwendung: Nach dem Training kann das Netzwerk auf neue Sätze angewendet werden, um Grammatikfehler zu erkennen und Korrekturen vorzuschlagen.
Es ist wichtig zu beachten, dass die genaue Funktionsweise und Architektur des neuronalen Netzes je nach spezifischer Grammatik-Software variieren kann. Es gibt viele Arten von neuronale Netzen, welche unterschiedlich verknüpft sind.
n-grams und Wahrscheinlichkeiten
Klassische Grammatik Software ist so la la.
Wenn Du ein Buch veröffentlichen willst oder eine Abschlussarbeit schreibst, findet die Software nicht alle Fehler. Oberflächliche Fehler trüben das Bild und wirken unprofessionell und schlampig. Der Leser geht davon aus, dass der Inhalt genauso schlecht sein muss.
n-grams (Wortgruppen) sind Abschnitte aus großen, „korrekten“ Textsammlungen (Korpus).
- 2-gram ist z. B. „Das ist“ oder „Er lernt“
- 4-gram ist „Heute gehe ich zu“, „auf dem schnellen Schiff“.
Eine n-gram Erkennung versteht weder Grammatik noch Rechtschreibung, aber berechnet Wahrscheinlichkeiten. Das n-gram „Er lernt“, kommt 124234 Mal in der Textsammlung vor, während „Wir lernt“ nur 4 Mal vorkommt.
Die Software sagt den Schreiberling, dass ein Satz mit „Wir lernt“ sehr ungewöhnlich ist, und deshalb markiert die Software einen Fehler.
„Wir lernt Schach heute“
Die Software prüft den Satz nicht nur mit 2-grams, 3-grams oder 4-grams, sondern schaut sich auch das n-gram verschoben an. Die Software prüft aus unserem Beispiel „Wir lernt“ und „lernt Schach“ oder auch „Wir lernt Schach“
Eigene LanguageTool Server
Du bist jetzt so richtig scharf auf eine gute Software, die Deine Fehler findet?
Das Programm LanguageTool läuft lokal auf vielen Computer oder auf einen Homeserver im eigenen Netz.
Die Software ist integriert in LibreOffice. Alternativ zeige ich Dir, wie Du einen kleinen LanguageTool-Server startest. n-grams sind keine leichte Kost für Deinen Computer. 15 GB Text musst Du downloaden, um n-grams zu nutzen. Trotzdem solltest Du immer die möglichst beste Erkennung verwenden.
Docker aufsetzen
LanguageTool basiert auf Java. Die Ausführungsplattform kannst Du Dir aus dem Web direkt laden oder alternativ einen Docker verwenden.
- Optional: Java Tutorial
- Notwendig: Docker Setup / Docker Compose
Docker bietet den Vorteil eine gekapselte und vollständige Umgebung zu haben. Alles ist im Container, was das Programm braucht, um zu funktionieren.
version: "3.9"
services:
languagetool:
image: docker.io/erikvl87/languagetool:latest
container_name: languagetool
restart: always
environment:
- langtool_languageModel=/ngrams
- Java_Xms=512m
- Java_Xmx=1g
volumes:
- /home/user/ngrams:/ngrams
ports:
- 60013:8010
Die N-grams (Wortgruppen) musst Du Dir herunterladen und dann so entpacken, dass Du diese Ordnerstruktur aufbaust:
home/
├─ user/
│ ├─ ngrams/
│ │ ├─ en/
│ │ │ ├─ 1grams/
│ │ │ ├─ 2grams/
│ │ │ ├─ 3grams/
│ │ ├─ de/
│ │ │ ├─ 1grams/
│ │ │ ├─ 2grams/
│ │ │ ├─ 3grams/
Verwende http://localhost:60013/v2, um diesen z.B. in LibreOffice oder VS Code zu verwenden. Die Software sendet den Textabschnitt zu der Schnittstelle des Servers, erkennt die Sprache, detektiert den Fehler und sendet diese zurück. Die Frontend-Software zeigt dann die Schlangenlinien an.