【问题标题】:How can I get children of an ancestor using spacy dependency tree in python如何在python中使用spacy依赖树获取祖先的孩子
【发布时间】:2018-08-23 20:14:05
【问题描述】:

代码如下:

    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 的孩子:
[(u'are', u'VERB')]
这是:
[(u'Photos', u'NOUN', u'nsubj')]

的祖先

我该怎么做?

【问题讨论】:

  • 那么让孩子们的孩子们?
  • 祖先的孩子在技术上是兄弟姐妹...... ;)

标签: python nltk spacy


【解决方案1】:

你可以遍历令牌:

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。有很多要考虑的。你可以试试DisplaCy(这个链接也是一个类似句子的例子,它有不同的依赖关系)。

我希望这至少可以帮助您指出正确的方向!

【讨论】:

    猜你喜欢
    • 2016-08-05
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多