Seite 1 von 1

Python und Spacy

Verfasst: Donnerstag 19. Januar 2023, 03:14
von Andreas22
Guten Morgen, alle! Mit dem folgenden Modul will ich mit Hilfe von Spacy Besitzverhältnisse in deutschen Sätzen entdecken (erst mal mit "sein", "seinem" und ihren Anverwandten) und Besitzer und Besitz mit einem Underscore zusammenfügen. Leider bekomme ich immer das Falsche heraus. Wo bei einem Input wie "Peter liebt seine Eisenbahn." der Output sein sollte "Peter liebt (Eisenbahn_Peter)." präsentiert mir das folgende Modul immer und immer wieder "Peter liebt (Eisenbahn_liebt)." Dabei ist von dem Verb gar keine Rede! Sogar an Spacy hab ich schon gezweifelt, aber das kann es nicht sein. Hier is jedenfalls der Patient:

Code: Alles auswählen

import spacy

nlp = spacy.load("de_core_news_sm")

message = input("Bitte geben Sie den Satz ein, den Sie untersuchen möchten: ")

# Erstellen eines Spacy-Dokuments aus der Nachricht
doc = nlp(message)

# Iterieren über jedes Token (jedes Wort) im Dokument
for token in doc:
    # Überprüfen, ob das Token ein Possessivpronomen der "sein/seine..."-Familie ist
    if token.text.lower() in ["sein", "seine", "seines", "seiner", "seinen", "seinem"]:
        i = token.i + 1
        while i < len(doc):
            if doc[i].pos_ == "NOUN" and doc[i].dep_ != "poss":
                subject = doc[i].head
                # Ersetzen des Possessivpronomens mit einer Klammer und dem Nomen, das sich darauf bezieht, und Hinzufügen von "_" und dem Subjekt
                message = message.replace(token.text + " " + doc[i].text, "(" + doc[i].text + "_" + subject.text + ")")
                print(message)
                break
            i += 1