Python 有没有办法在spaCy中使用根标记检索整个名词块?

Python 有没有办法在spaCy中使用根标记检索整个名词块?,python,nlp,spacy,dependency-parsing,Python,Nlp,Spacy,Dependency Parsing,我对使用spaCy非常陌生。我已经阅读了几个小时的文档,我仍然不知道是否有可能做到我的问题。无论如何 正如标题所说,有没有一种方法可以使用包含名词组块的标记来获取该名词组块。例如,给定以下句子: "Autonomous cars shift insurance liability toward manufacturers" 当我只有“cars”令牌时,是否有可能获得“autonomous”名词块?下面是我尝试使用的场景的一个示例片段 startingSentence = "Autonomous

我对使用spaCy非常陌生。我已经阅读了几个小时的文档,我仍然不知道是否有可能做到我的问题。无论如何

正如标题所说,有没有一种方法可以使用包含名词组块的标记来获取该名词组块。例如,给定以下句子:

"Autonomous cars shift insurance liability toward manufacturers"
当我只有
“cars”
令牌时,是否有可能获得
“autonomous”
名词块?下面是我尝试使用的场景的一个示例片段

startingSentence = "Autonomous cars and magic wands shift insurance liability toward manufacturers"
doc = nlp(startingSentence)
noun_chunks = doc.noun_chunks

for token in doc:
    if token.dep_ == "dobj":
        print(child) # this will print "liability"

        # Is it possible to do anything from here to actually get the "insurance liability" token?

任何帮助都将不胜感激。谢谢

通过检查标记是否位于某个名词块跨度中,您可以轻松找到包含已识别标记的名词块:

doc = nlp("Autonomous cars and magic wands shift insurance liability toward manufacturers")
interesting_token = doc[7] # or however you identify the token you want
for noun_chunk in doc.noun_chunks:
    if interesting_token in noun_chunk:
        print(noun_chunk)
en_core_web_sm和spacy 2.0.18的输出不正确,因为
shift
未标识为动词,因此您会得到:

魔杖转移保险责任

使用en_core_web_md,它是正确的:

保险责任


(在文档中包含真正模棱两可的示例是有意义的,因为这是一个现实的场景(),但如果新用户模棱两可,以至于分析在不同版本/模型之间不稳定,则会让他们感到困惑。)

通过检查标记是否在一个名词块跨度中,您可以轻松找到包含已识别标记的名词块:

doc = nlp("Autonomous cars and magic wands shift insurance liability toward manufacturers")
interesting_token = doc[7] # or however you identify the token you want
for noun_chunk in doc.noun_chunks:
    if interesting_token in noun_chunk:
        print(noun_chunk)
en_core_web_sm和spacy 2.0.18的输出不正确,因为
shift
未标识为动词,因此您会得到:

魔杖转移保险责任

使用en_core_web_md,它是正确的:

保险责任


(在文档中包含真正模棱两可的示例是有意义的,因为这是一个现实的场景(),但如果新用户的分析不够模棱两可,以致于跨版本/模型的分析不稳定,则会让他们感到困惑。)

这是否能够适用于存在同名名词块的情况,比如说。“蓝色的飞机正在飞越红色的飞机”非常感谢!您必须识别所需的“平面”标记,例如doc[2]vs.doc[8]或deprel nsubj vs.pobj,但是一旦您选择了一个标记,就可以清楚地知道它在分析中与哪个名词块重叠。谢谢!这有助于我为这个项目设定一个方向。这是否能够适用于有同名名词块的情况,比如说。“蓝色的飞机正在飞越红色的飞机”非常感谢!您必须识别所需的“平面”标记,例如doc[2]vs.doc[8]或deprel nsubj vs.pobj,但是一旦您选择了一个标记,就可以清楚地知道它在分析中与哪个名词块重叠。谢谢!这有助于我为这个项目确定我需要做的事情的方向。