ImportError:没有名为“ spacy.en”的模块
我正在使用Spacy的代码库。我使用以下方式安装了spacy:
sudo pip3 install spacy
接着
sudo python3 -m spacy download en
在最后一条命令的结尾,我收到一条消息:
Linking successful
/home/rayabhik/.local/lib/python3.5/site-packages/en_core_web_sm -->
/home/rayabhik/.local/lib/python3.5/site-packages/spacy/data/en
You can now load the model via spacy.load('en')
现在,当我尝试运行代码时,就行了:
from spacy.en import English
它给了我以下错误:
ImportError: No module named 'spacy.en'
我看过Stackexchange,最接近的是:spacy的导入错误:“没有名为en的模块” ,这不能解决我的问题。
任何帮助,将不胜感激。谢谢。
编辑:我可能通过执行以下操作解决了此问题:
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import spacy
>>> spacy.load('en')
<spacy.lang.en.English object at 0x7ff414e1e0b8>
然后使用:
from spacy.lang.en import English
如果还有其他答案,我仍会保持开放状态。
-
是的,我可以确认您的解决方案是正确的。您从pip下载的spaCy的版本为v2.0,其中包括许多新功能,但对API进行了一些更改。其中之一是,所有语言数据都已移至子模块,
spacy.lang
以保持内容整洁和井井有条。因此spacy.en
,您现在无需从使用导入spacy.lang.en
。- from spacy.en import English + from spacy.lang.en import English
但是,还值得一提的是,您在运行时下载
spacy download en
的内容与并不相同spacy.lang.en
。spaCy附带的语言数据包括静态数据,例如标记化规则,停用词或词形化表。en
您可以下载的软件包是统计模型的快捷方式en_core_web_sm
。它包括语言数据以及二进制权重,以使spaCy可以预测词性标签,依赖项和命名实体。en
我实际上不建议下载,而是建议使用完整的模型名称,这样可以更清楚地了解发生了什么:python -m spacy download en_core_web_sm nlp = spacy.load("en_core_web_sm")
致电时
spacy.load
,spaCy执行以下操作:- 查找已安装的名称为
"en_core_web_sm"
(包装或快捷方式链接)的模型。 - 阅读它
meta.json
,并检查它的使用(在这种情况下,语言spacy.lang.en
),它的处理管道应该是什么样子(在这种情况下,tagger
,parser
和ner
)。 - 初始化语言类并向其中添加管道。
- 从模型数据中加载二进制权重,以便管道组件(例如标记器,解析器或实体识别器)可以进行预测。
有关更多详细信息,请参阅文档中的此部分。
- 查找已安装的名称为