Python und Spacy

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Andreas22
User
Beiträge: 29
Registriert: Donnerstag 5. Januar 2023, 16:51

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

Antworten