>> danielnaber.de 

jWordSplitter

 

Komposita-Zerlegung mit Java

   
 

German | English

jWordSplitter ist eine kleine Java-Bibliothek zur Zerlegung deutscher Komposita. Die Zerlegung basiert auf einem Wörterbuch, das im JAR integriert ist.

Download: external link to jWordSplitter 3.4, 2012-09-25 (0,3MB)jWordSplitter 3.4, 2012-09-25 (0,3MB), internal link to ChangelogChangelog

Maven-Dependency:

<dependency>
    <groupId>de.abelssoft</groupId>
    <artifactId>jwordsplitter</artifactId>
    <version>3.4</version>
</dependency>

Beispiel-Nutzung:

AbstractWordSplitter splitter = new GermanWordSplitter(true);
splitter.setStrictMode(true);
Collection<String> parts = splitter.splitWord("Versuchsreihe");
System.out.println(parts);    // gibt aus: [Versuch, reihe]

Aufruf von der Kommandozeile:

java -jar jwordsplitter-3.4.jar <textdatei>

Hinweise zum verwendeten Algorithmus:

  • Der Algorithmus ist sehr einfach und weiß fast nichts über Sprache: er zerschneidet das Wort und prüft, ob ein Teil wirklich ein Wort ist, d.h. im Wörterbuch vorkommt. Ist das der Fall, wird das gleiche Vorgehen wieder rekursiv auf den Rest des Wortes angewandt. Sonst wird die Stelle, an der das Wort zerteilt wird, um einen Buchstaben verschoben. Entsprechend ist es auch egal, ob die zu zerlegenden Wörter Nomen, Verben oder Adjektive sind.
  • Nur mit dem Aufruf von splitter.setStrictMode(true) ist sichergestellt, dass bei der Zerlegung alle Teilwörter auch wirklich Wörter sind. Ohne diesen Aufruf wird schon zerlegt, wenn nur ein Teil ein richtiges Wort ist.
  • Die Länge der zu zerlegenden Wörter ist nicht begrenzt. jWordSplitter kann auch das berühmte Beispiel "Donaudampfschifffahrtskapitän" zerlegen (Donau, dampf, schiff, fahrt, kapitän).
  • In der ZIP-Datei ist eine README-Datei die beschreibt, wie man das integrierte Wörterbuch exportiert und wieder neu erstellt.
  • Um die Qualität der Zerlegung zu verbessern, muss man den Inhalt des Wörterbuchs anpassen oder mit der Methode GermanWordSplitter.addException() Ausnahmen hinzufügen.
  • Das Wörterbuch sollte auch alle flektierten Wortformen (Plural, Genitiv etc.) beinhalten. Außerdem gibt es Komposita-Teile wie "Miet" (Mietwohnung, Mietverhältnis) oder "Wohn" (Wohnraum, Wohnrecht), die eigenständig keine Wörter sind, aber trotzdem im Wörterbuch sein müssen, wenn ihre Trennung funktionieren soll.
  • Der Algorithmus kennt das Fugenelement "s" wie in "Verlagshaus", aber er trennt auch falsche oder seltene Wörter wie "Verlaghaus".
  • Der Algorithmus funktioniert auch für andere Sprachen. Um eine weitere Sprache zu unterstützen, muss die Klasse AbstractWordSplitter erweitert werden.

Der Sourcecode liegt internal link to bei githubbei github. Für Fragen bin ich unter naber(at)danielnaber.de erreichbar.

Lizenz: Apache License Version 2.0

Je nach Anwendungsfall könnten compound-splitter oder der DictionaryCompoundWordTokenFilter von Lucene eine Alternative zu jWordSplitter sein.

Wer mehr Informationen zu Wörtern und ihren Vollformen braucht, findet hier external link to ein deutsches Morphologie-Lexikonein deutsches Morphologie-Lexikon.

Stichwörter: zusammengesetzte Wörter, Nominalkomposita, Kompositum, Worttrennung, Wortzerlegung

 
 
naber (at) danielnaber de, Last updated: 2012-10-11