如何在 python 中使用 spacy 依赖树获得祖先的 children
How can I get children of an ancestor using spacy dependency tree in python
代码如下:
import spacy
from nltk import Tree
en_nlp = spacy.load('en')
parsed = en_nlp(u"Photos under low lighting are poor, both front and back cameras.")
print(u'sentence:{0}'.format(parsed.text))
try2 = []
print(u'parsed_sentence_children::{0}'.format([(x.text,x.pos_,x.dep_,[(x.text,x.dep_) for x in list(x.children)]) for x in parsed]))
print("\n\n")
for x in parsed:
if x.pos_=="NOUN" and x.dep_=="nsubj":
print(u'Noun and noun subject:{0}'.format(try2 =[(x.text,x.pos_,x.dep_,[(x.text,x.pos_)for x in list(x.ancestors)])])
这个输出是:
[(u'Photos', u'NOUN', u'nsubj', [(u'are', u'VERB')]
现在我想打印 acomp
children of:
[(u'are', u'VERB')]
这是以下的祖先:
[(u'Photos', u'NOUN', u'nsubj')]
我该怎么做?
您可以遍历令牌:
import spacy
nlp = spacy.load('en')
text = 'Photos under low lighting are poor, both front and back cameras.'
for token in nlp(text):
if token.dep_ == 'nsubj': # Or other forms of subjects / objects
print(token.lemma_+"'s are:")
for a in token.ancestors:
if a.text == 'are': # Or however you determine your selection
for atok in a.children:
if atok.dep_ == 'acomp': # Note, you should look for more than just acomp
print(atok.text)
哪个输出(在 Python3 中):
photo's are:
poor
但是,请看一下Spacy's page on dependencies. There are a lot to consider. You could play around with DisplaCy(这个link也是一个相似句子的例子,它有不同的依存关系)。
我希望这至少能帮助您指明正确的方向!
代码如下:
import spacy
from nltk import Tree
en_nlp = spacy.load('en')
parsed = en_nlp(u"Photos under low lighting are poor, both front and back cameras.")
print(u'sentence:{0}'.format(parsed.text))
try2 = []
print(u'parsed_sentence_children::{0}'.format([(x.text,x.pos_,x.dep_,[(x.text,x.dep_) for x in list(x.children)]) for x in parsed]))
print("\n\n")
for x in parsed:
if x.pos_=="NOUN" and x.dep_=="nsubj":
print(u'Noun and noun subject:{0}'.format(try2 =[(x.text,x.pos_,x.dep_,[(x.text,x.pos_)for x in list(x.ancestors)])])
这个输出是:
[(u'Photos', u'NOUN', u'nsubj', [(u'are', u'VERB')]
现在我想打印 acomp
children of:
[(u'are', u'VERB')]
这是以下的祖先:
[(u'Photos', u'NOUN', u'nsubj')]
我该怎么做?
您可以遍历令牌:
import spacy
nlp = spacy.load('en')
text = 'Photos under low lighting are poor, both front and back cameras.'
for token in nlp(text):
if token.dep_ == 'nsubj': # Or other forms of subjects / objects
print(token.lemma_+"'s are:")
for a in token.ancestors:
if a.text == 'are': # Or however you determine your selection
for atok in a.children:
if atok.dep_ == 'acomp': # Note, you should look for more than just acomp
print(atok.text)
哪个输出(在 Python3 中):
photo's are:
poor
但是,请看一下Spacy's page on dependencies. There are a lot to consider. You could play around with DisplaCy(这个link也是一个相似句子的例子,它有不同的依存关系)。
我希望这至少能帮助您指明正确的方向!