为什么 spacy 不给根节点任何子节点?
Why doesn't spacy given any children to the root node?
这是我的代码:
from spacy.lang.en import English
nlp = English()
nlp.add_pipe(nlp.create_pipe('sentencizer'))
doc = nlp("The quick brown fox jumps over the lazy dog.")
for sent in doc.sents:
print(list(sent.root.children))
我希望 sent.root.children
包含指向其他单词/句子片段的链接,例如 lazy
或 brown
,但它是一个空数组。为什么会这样?
我认为这里的问题很简单:获取句子的词根及其子句需要依赖解析。这意味着您需要加载一个包含权重的模型来预测依赖关系。
在您的代码中,您仅导入 English
语言 class,其中仅包含 language-specific 规则和分词器。您可以像这样下载默认的小英文模型(或任何other options):
python -m spacy download en
然后您可以使用 spacy.load()
加载模型。在引擎盖下,这告诉 spaCy 找到安装为 'en'
的模型,检查其元数据以初始化相应的语言 class (English
),构建处理管道(解析器、标记器、 NER),并提供权重以使 spaCy 能够进行预测。由于默认的句子边界检测器使用依存分析,它将已经包含在内——因此无需手动将其添加到管道中。
刚刚测试了您的示例,它现在打印了根的子项列表:
nlp = spacy.load('en')
doc = nlp("The quick brown fox jumps over the lazy dog.")
for sent in doc.sents:
print(list(sent.root.children))
# [fox, over, .]
这是我的代码:
from spacy.lang.en import English
nlp = English()
nlp.add_pipe(nlp.create_pipe('sentencizer'))
doc = nlp("The quick brown fox jumps over the lazy dog.")
for sent in doc.sents:
print(list(sent.root.children))
我希望 sent.root.children
包含指向其他单词/句子片段的链接,例如 lazy
或 brown
,但它是一个空数组。为什么会这样?
我认为这里的问题很简单:获取句子的词根及其子句需要依赖解析。这意味着您需要加载一个包含权重的模型来预测依赖关系。
在您的代码中,您仅导入 English
语言 class,其中仅包含 language-specific 规则和分词器。您可以像这样下载默认的小英文模型(或任何other options):
python -m spacy download en
然后您可以使用 spacy.load()
加载模型。在引擎盖下,这告诉 spaCy 找到安装为 'en'
的模型,检查其元数据以初始化相应的语言 class (English
),构建处理管道(解析器、标记器、 NER),并提供权重以使 spaCy 能够进行预测。由于默认的句子边界检测器使用依存分析,它将已经包含在内——因此无需手动将其添加到管道中。
刚刚测试了您的示例,它现在打印了根的子项列表:
nlp = spacy.load('en')
doc = nlp("The quick brown fox jumps over the lazy dog.")
for sent in doc.sents:
print(list(sent.root.children))
# [fox, over, .]