sujeto objeto de identificacion en python

Quiero identificar el sujeto y los objetos de un conjunto de oraciones. Mi trabajo real es identificar la causa y el efecto de un conjunto de datos de revisión.

Estoy utilizando el paquete Spacy para fragmentar y analizar datos. Pero en realidad no alcanzando mi objective. ¿Hay alguna manera de hacerlo?

P.ej:

I thought it was the complete set 

afuera:

 subject object I complete set 

De la forma más sencilla. Se accede a las dependencias mediante token.dep_ Habiendo importado spacy:

 import spacy nlp = spacy.load('en') parsed_text = nlp(u"I thought it was the complete set") #get token dependencies for text in parsed_text: #subject would be if text.dep_ == "nsubj": subject = text.orth_ #iobj for indirect object if text.dep_ == "iobj": indirect_object = text.orth_ #dobj for direct object if text.dep_ == "dobj": direct_object = text.orth_ print(subject) print(direct_object) print(indirect_object) 

Puedes usar el chunk de nombre.

Código

 doc = nlp("I thought it was the complete set") for nc in doc.noun_chunks: print(nc.text) 

Resultado:

 I it the complete set 

Para seleccionar solo “I” en lugar de “I” y “it”, primero puede escribir una prueba para tomar el nsubj a la izquierda de ROOT.