Ich suche nach einer Bibliothek, die eine morphologische Analyse deutscher Wörter durchführen kann, d. h. sie konvertiert jedes Wort in seine Wurzelform und liefert Metainformationen über das analysierte Wort.
Zum Beispiel:
%Vor%Meine Wunschliste:
BEARBEITEN: Mir ist bewusst, dass es aufgrund der unregelmäßigen Wörter keine Möglichkeit gibt, eine morphologische Analyse ohne Wörterbuch durchzuführen. Wenn ich sage, ich bevorzuge eine Bibliothek ohne Wörterbuch, meine ich diese ausgewachsenen Wörterbücher, die jedes Wort abbilden:
%Vor%Diese Wörterbücher haben mehrere Nachteile, einschließlich der enormen Größe und der Unfähigkeit, unbekannte Wörter zu verarbeiten.
Natürlich können alle Ausnahmen nur mit einem Wörterbuch behandelt werden:
%Vor%(Mein Verstand dreht sich gerade :) :)
Ich glaube, Sie suchen nach einem "Stammalgorithmus".
Martin Porters Ansatz ist bei Linguisten gut bekannt. Der Porter-Stemmer ist im Grunde ein Affix-Stripping-Algorithmus, kombiniert mit ein paar Substitutionsregeln für diese speziellen Fälle.
Die meisten Stemmer liefern Stiele, die sprachlich "inkorrekt" sind. Zum Beispiel: sowohl "schön" als auch "schön" können den Stamm "beauti" ergeben, was natürlich kein wirkliches Wort ist. Dies ist jedoch nicht von Bedeutung, wenn Sie diese Stiele verwenden, um Suchergebnisse in Informationssuchsystemen zu verbessern. Lucene unterstützt zum Beispiel den Porter-Stemmer.
Porter entwickelte auch eine einfache Programmiersprache für die Entwicklung von Stemmern namens Snowball.
In Snowball gibt es auch Stemmer für Deutsch. Eine C-Version, die von der Snowball-Quelle erzeugt wird, ist ebenfalls auf der Website verfügbar, zusammen mit einer einfachen Textbeschreibung des Algorithmus.
Hier ist der deutsche Stemmer in Snowball: Ссылка
Wenn Sie nach dem entsprechenden Wortstamm suchen, wie Sie ihn in einem Wörterbuch finden würden, sollten Sie zusammen mit Informationen zum Thema Sprache "Lemmatisierung" verwenden.
(Disclaimer: Ich verlinke meine eigenen Open-Source-Projekte hier)
Diese Daten in Form einer Wortliste sind verfügbar unter Ссылка . Es könnte mit einer Word-Splitter-Bibliothek (wie jwordsplitter) kombiniert werden, um zusammengesetzte Substantive abzudecken, die nicht in der Liste enthalten sind.
Oder verwenden Sie einfach LanguageTool von Java , das die Wortliste in Form eines kompakten endlichen Automaten eingebettet hat ( Dazu gehört auch Compound Splitting.
Sie haben das vor einer Weile gefragt, aber Sie könnten es trotzdem mit morphisto ausprobieren.
Hier ist ein Beispiel, wie man es in Ubuntu macht:
Installieren Sie die Stuttgarter endlichen Wandlerwerkzeuge
$ sudo apt-get installieren sfst
Laden Sie die Morphistomorphologie herunter, z. morphisto-02022011.a
Komprimieren Sie es, z. B.
$ fst-compact morphisto-02022011.a morphisto-02022011.ac
Benutze es! Hier sind einige Beispiele:
$ echo Hochzeit | fst-proc morphisto-02022011.ac ^ Hochzeit / HohZeit & lt; + NN & gt; / HohZeit & lt; + NN & gt; / HohZeit & lt; + NN & gt; / HohZeit & lt; + NN & gt; / HochZeit & lt; + NN & gt; / HochZeit & lt; + NN & gt; / HochZeit & lt; + NN & gt; / HochZeit & lt; + NN & gt; / Hochzeit & lt; + NN & gt; / Hochzeit & lt; + NN & gt; / Hochzeit & lt; + NN & gt; / Hochzeit & lt; + NN & gt; $
$ echo bearbeitet | fst-proc morphisto-02022011.ac ^ bearbeitet / arbeiten & lt; + ADJ & gt; / arbeiten & lt; + ADJ & gt; / arbeiten & lt; + V & gt; $
Es gibt einige Tools, die du benutzen kannst wie den Morph. Komponente in den Matetools, Morphisto usw. Aber der Schmerz ist, sie in Ihre Werkzeugkette zu integrieren. Ein sehr guter Überblick über viele dieser linguistischen Werkzeuge ist DKpro ( Ссылка ), ein Framework, das UIMA verwendet. Es ermöglicht Ihnen, Ihre eigene Preprocessing-Pipeline mit verschiedenen linguistischen Tools aus verschiedenen Ressourcen zu schreiben, die alle automatisch auf Ihren Computer heruntergeladen werden und miteinander kommunizieren. Sie können Java oder Groovy oder sogar Jython verwenden. DKPro bietet Ihnen einfachen Zugriff auf zwei morphologische Analysatoren, MateMorphTagger und SfstAnnotator.
Sie möchten keinen Stammer wie Porter verwenden, er wird die Wortform auf eine Weise reduzieren, die keinen sprachlichen Sinn ergibt und nicht das von Ihnen beschriebene Verhalten hat. Wenn du nur die Grundform finden willst, für ein Verb den Infinitiv und für ein Substantiv den Nominativ Singular, dann solltest du einen Lemmatizer verwenden. Eine Liste der deutschen Lemmatiser finden Sie hier . Treetagger ist weit verbreitet. Sie können auch eine komplexere Analyse verwenden, die von einem morphologischen Analysator wie SMORS bereitgestellt wird. Es wird Ihnen so etwas geben (Beispiel aus der SMORS Website):
Und hier ist die Analyse von "unübersetzbarstes" mit Präfixierung, Suffixation und & gt; Gradation: un & lt; PREF & gt; übersetzten & lt; V & gt; bar & lt; SUFF & lt; + ADJ & gt; & lt; Sup & gt; & lt; Neut & gt; & lt; Ng & gt; & lt; Sg & gt; & lt; St & gt; & lt;
Tags und Links morphological-analysis languagetool