Gibt es eine kostenlose Bibliothek zur morphologischen Analyse der deutschen Sprache?

8

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:

  • Es muss mit Substantiven und Verben funktionieren.
  • Ich bin mir bewusst, dass dies angesichts der Komplexität der deutschen Sprache eine sehr schwierige Aufgabe ist, daher suche ich auch nach Bibliotheken, die nur Näherungen liefern oder nur zu 80% genau sind.
  • Ich würde Bibliotheken bevorzugen, die nicht mit Wörterbüchern arbeiten, aber ich bin auch offen für Kompromisse angesichts der Umstände.
  • Ich würde auch C / C ++ / Delphi-Windows-Bibliotheken bevorzugen, da dies die Integration vereinfachen würde, aber auch .NET, Java, ... werden ebenfalls funktionieren.
  • Es muss eine freie Bibliothek sein. (L) GPL, MPL, ...

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 :) :)

    
Daniel Rikowski 25.03.2009, 09:51
quelle

8 Antworten

7

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.

    
gclj5 25.03.2009, 11:11
quelle
5

(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.

    
Daniel Naber 28.11.2012 22:57
quelle
3

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:

  1. Installieren Sie die Stuttgarter endlichen Wandlerwerkzeuge

    $ sudo apt-get installieren sfst

  2. Laden Sie die Morphistomorphologie herunter, z. morphisto-02022011.a

  3. Komprimieren Sie es, z. B.

    $ fst-compact morphisto-02022011.a morphisto-02022011.ac

  4. 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; $

elaichi 25.06.2011 23:26
quelle
3

Schauen Sie sich LemmaGen ( Ссылка ) an, ein Projekt, das darauf abzielt, eine standardisierte mehrsprachige Open-Source-Plattform für die Lemmatisierung bereitzustellen. Es macht genau das, was du willst.

    
va5ja 21.02.2014 12:50
quelle
2

Ich denke nicht, dass dies ohne ein Wörterbuch getan werden kann.

Regelbasierte Ansätze stolpern immer über Dinge wie

  

gegessen - & gt; essen
  gegangen - & gt; angen

(Hinweis für Leute, die kein Deutsch sprechen: die richtige Lösung im zweiten Fall ist "gehen").

    
Svante 25.03.2009 10:05
quelle
1

Schauen Sie sich Leo an. Sie bieten die Daten, nach denen Sie suchen, vielleicht gibt es Ihnen einige Ideen.

    
weismat 25.03.2009 10:19
quelle
1

Man kann morphisto mit ParZu verwenden ( Ссылка ). ParZu ist ein Abhängigkeitsparser für Deutsch.

Dies bedeutet, dass die ParZu auch die Ausgabe von morphisto disambiguiert

    
dkaragiozov 13.02.2012 14:36
quelle
1

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;

    
fotis j 24.10.2014 20:54
quelle