Spacy 说依赖解析器未加载
Spacy says dependency parser not loaded
我在 Ubuntu 16.04 上安装了 spaCy v2.0.2。然后我使用
sudo python3 -m spacy download en
下载英文模型。
之后我使用Spacy如下:
from spacy.lang.en import English
p = English(parser=True, tagger=True, entity=True)
d = p("This is a sentence. I am who I am.")
print(list(d.sents))
但是我收到这个错误:
File "doc.pyx", line 511, in __get__
ValueError: Sentence boundary detection requires the dependency parse, which requires a statistical model to be installed and loaded. For more info, see the documentation:
https://spacy.io/usage/models
我实在想不通这是怎么回事。我安装了这个版本的 'en' 模型:
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz
我认为这是默认值。任何帮助表示赞赏。谢谢。
我认为这里的问题很简单——当你这样调用时:
p = English(parser=True, tagger=True, entity=True)
...spaCy 将加载 English
语言 class 包含语言数据和特殊情况规则,但没有模型数据和权重,这使解析器、标记器和实体识别器能够作出预测。这是设计使然,因为 spaCy 无法知道 如果 你想加载模型数据,如果是, 哪个包 .
因此,如果您想加载英文模型,则必须使用 spacy.load()
,它将负责加载数据,并将语言和处理管道放在一起:
nlp = spacy.load('en_core_web_sm') # name of model, shortcut name or path
在后台,spacy.load()
将查找名为 en_core_web_sm
的已安装模型包,加载它并检查模型的元数据以确定模型需要哪种语言(在本例中,English
) 以及它支持的管道(在本例中为标记器、解析器和 NER)。然后它初始化 English
的一个实例,创建管道,从模型包和 returns 对象中加载二进制数据,以便您可以在文本上调用它。 See this section 以获得更详细的解释。
我在 Ubuntu 16.04 上安装了 spaCy v2.0.2。然后我使用
sudo python3 -m spacy download en
下载英文模型。
之后我使用Spacy如下:
from spacy.lang.en import English
p = English(parser=True, tagger=True, entity=True)
d = p("This is a sentence. I am who I am.")
print(list(d.sents))
但是我收到这个错误:
File "doc.pyx", line 511, in __get__
ValueError: Sentence boundary detection requires the dependency parse, which requires a statistical model to be installed and loaded. For more info, see the documentation:
https://spacy.io/usage/models
我实在想不通这是怎么回事。我安装了这个版本的 'en' 模型:
https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-2.0.0/en_core_web_sm-2.0.0.tar.gz
我认为这是默认值。任何帮助表示赞赏。谢谢。
我认为这里的问题很简单——当你这样调用时:
p = English(parser=True, tagger=True, entity=True)
...spaCy 将加载 English
语言 class 包含语言数据和特殊情况规则,但没有模型数据和权重,这使解析器、标记器和实体识别器能够作出预测。这是设计使然,因为 spaCy 无法知道 如果 你想加载模型数据,如果是, 哪个包 .
因此,如果您想加载英文模型,则必须使用 spacy.load()
,它将负责加载数据,并将语言和处理管道放在一起:
nlp = spacy.load('en_core_web_sm') # name of model, shortcut name or path
在后台,spacy.load()
将查找名为 en_core_web_sm
的已安装模型包,加载它并检查模型的元数据以确定模型需要哪种语言(在本例中,English
) 以及它支持的管道(在本例中为标记器、解析器和 NER)。然后它初始化 English
的一个实例,创建管道,从模型包和 returns 对象中加载二进制数据,以便您可以在文本上调用它。 See this section 以获得更详细的解释。