0

Ich suche eine Möglichkeit, zusammengesetzte Wörter / Komposita programmatisch zu trennen, am besten eine Python-Implementierung.

Hintergrund: ich bastele an einem Clustering-Werkzeug, und die Komposita bleiben durch Stemming und Lemmatisierung unbehandelt. Beispiel: aus Mietrecht wird Mietrecht. Ich brauche aber erstmal beide Teile, Miet und Recht, die erst dann zu ihrer Grundform gebracht und geclustert werden.

Ich habe eine Java-Implementierung gefunden, die das macht - leider kein Python...

6
  • 1
    Das ist keine Frage zur deutschen Sprache, sondern nach einem Computerprogramm.
    – RalfFriedl
    Commented Sep 16, 2022 at 21:08
  • 1
    Beispiel: aus Mietrecht wird Mietrecht - Das wird ein ziemlich einfaches Computerprogramm.
    – tofro
    Commented Sep 17, 2022 at 8:31
  • 1
    @tofro: das ist die Situation, von der der OP wegkommen möchte. Das wird in der Frage, finde ich, auch klar.
    – HalvarF
    Commented Sep 17, 2022 at 12:29
  • Hast du schon mal bei spacy reingeschaut? (spacy.io)
    – Jonathan Herrera
    Commented Sep 19, 2022 at 15:00
  • 1
    Schau mal hier: github.com/dtuggener/CharSplit
    – Jonathan Herrera
    Commented Sep 19, 2022 at 15:07

2 Answers 2

3

Hast du dir wordaxe schon angesehen? http://deco-cow.sourceforge.net/ (allerdings kein Python3-Support in der stable-Version)

Der Java-Code, den du verlinkt hast, ist im Kern auch nicht besonders lang, da ist halt sehr viel Java-typisches Brimborium und etwas Wörterbuch-Handling drumrum. Wenn das da mitgelieferte Wörterbuch etwas taugt, lohnt sich vielleicht auch, den Code zu portieren.

2
  • Meinst du, es könnte grundsätzlich sich als effektiver erweisen, die Wörter gegen eine Art von Wörterbuch abzugleichen, statt NLP zu bemühen?
    – Evgeniy
    Commented Sep 18, 2022 at 10:53
  • 1
    Ist das denn ein Gegensatz? Meinst du mit NLP spezifisch Machine Learning? Ich glaube, das mit Wörterbüchern und einfachen Regeln zu machen, ist bei weitem effektiver, denn die Bildungsregeln für Komposita sind ja nicht so kompliziert. Ich bin aber kein Experte. Beide bisher erwähnten Vorschläge benutzen Wörterbücher plus einfache Algorithmen. Wenn man den Kontext berücksichtigen möchte, um zwischen mehreren Möglichkeiten zu unterscheiden, dann wird es komplizierter, aber der Fall, dass überhaupt mehrere Möglichkeiten in Frage kommen (à la "Wach.stube/Wachs.tube"), ist ja nicht so häufig.
    – HalvarF
    Commented Sep 18, 2022 at 11:35
-2

Das grundsätzliche Problem bei dieser Art von Aufgaben ist, daß jedes Computerprogramm die Sprachinformation nicht "versteht", sondern lediglich ein solches Verstehen durch einen Satz angewendeter Regeln vorgibt.

Soll heißen: man kann alle möglichen Regeln, wie Komposita in einzelne Wörter getrennt werden, aufstellen, aber dann landet man bei (aus dem Cabaret bekannten) Doppeldeutigkeiten wie:

Blumentopferde

was sowohl die Pferde aus Blumento sein können, wie die Erde im Blumentopf.

Der Umstand, daß wir "Pferde aus Blumento" als unsinnig abtun und infolgedessen diese Bedeutung ausschließen, ist lediglich der Tatsache geschuldet, daß wir wissen, daß es solche Pferde nicht gibt. Das ist aber "außersprachliches" Wissen.

Daraus folgt, daß es eine "algorithmische" (ich nehme an, daß das mit "programmatisch" gemeint ist) Lösung im strengen Sinne nicht gibt und auch nicht geben kann. Das Programm müßte das gesamte "kulturelle Hintergrundwissen" eines Menschen haben, um gewisse Entscheidungen (wie eben "Blumento-Pferde" als mögliches Kompositum auszusondern) zu treffen.

Man kann dieses Problem durch Wörterbücher (also quasi vorgefertigte Lösungen, die als gegeben vorausgesetzt werden) ein wenig abmildern. Google Translate und ähnliche Software zeigen, daß das schon halbwegs zufriedenstellend funktionieren kann. An dem grundsätzlichen Problem, daß nämlich Computer bzw. Programme Sprache nicht verstehen, wird dies aber nichts ändern, weil dies nur ein Zudecken von Symptomen ist.

Gut möglich, daß mit der Weiterentwicklung von AI (Stichwort: neuronale Netze) dieses Verständnisproblem irgendwann gelöst wird - derzeit aber ist dies nicht der Fall.

1
  • 1
    Die Folgerung, dass es kein solches Programm geben kann, ist in meinen Augen falsch und die Argumentation ist irreführend. Mittlerweile gibt es ausgefeilte Modelle einzelner Sprachen, insbesondere des Deutschen, die auf Basis großer Textmengen agieren. Dass man die Deutung "Pferde aus Blumento" niemals absolut ausschließen kann, liegt nicht an der Natur eines algorithmischen Ansatzes, sondern an der hermeneutischen Offenheit des Problems: Auch als Mensch kann ich mir nicht sicher sein, ob es nicht irgendwo einen Ort Blumento gibt mit einer weltberühmten Pferdezucht, die mir nicht bekannt ist.
    – Jonathan Herrera
    Commented Sep 19, 2022 at 15:05

Not the answer you're looking for? Browse other questions tagged or ask your own question.