我正在使用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。
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可以预测词性标签,依赖项和命名实体。
spacy download en
en
en_core_web_sm
en我实际上不建议下载,而是建议使用完整的模型名称,这样可以更清楚地了解发生了什么:
python -m spacy download en_core_web_sm nlp = spacy.load("en_core_web_sm")
致电时spacy.load,spaCy执行以下操作:
spacy.load
"en_core_web_sm"
meta.json
tagger
parser
ner
有关更多详细信息,请参阅文档中的此部分。