我正在开发一个使用Spacy的代码库.我安装spacy使用:
sudo pip3 install spacy
Run Code Online (Sandbox Code Playgroud)
然后
sudo python3 -m spacy download en
Run Code Online (Sandbox Code Playgroud)
在最后一个命令结束时,我收到一条消息:
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')
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试运行我的代码时,就行了:
from spacy.en import English
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误:
ImportError: No module named 'spacy.en'
Run Code Online (Sandbox Code Playgroud)
我查看了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>
Run Code Online (Sandbox Code Playgroud)
然后使用:
from spacy.lang.en import English
Run Code Online (Sandbox Code Playgroud)
如果有任何其他答案,我仍然保持开放.
Ine*_*ani 31
是的,我可以确认您的解决方案是正确的.您从pip下载的spaCy版本是v2.0,其中包含许多新功能,但也对API进行了一些更改.其中之一是所有语言数据都已移至子模块,spacy.lang以保持事物更清洁,更有条理.因此spacy.en,您现在可以从中导入而不是使用spacy.lang.en.
顺便说一句,你在代码中尝试做的事情并不完全清楚 - 但是如果你正在加载英文模型,通常也不需要导入和初始化spacy download en.spaCy会为你做这件事.
- from spacy.en import English
+ from spacy.lang.en import English
Run Code Online (Sandbox Code Playgroud)
基本上,spacy.lang.en是一个快捷方式:
en(包或快捷方式链接).en_core_web_sm并检查它使用的语言,以及它的处理流程应该如何.有关详细信息,请参阅文档中的此部分.
小智 8
我使用以下命令从anaconda发行版安装spacy.
conda install -c conda-forge spacy
Run Code Online (Sandbox Code Playgroud)
之后,我可以使用以下命令下载英语,没有任何错误.
python -m spacy download en
Run Code Online (Sandbox Code Playgroud)
我必须使用en_core_web_sm而不是en来完成这项工作。它在抱怨权限问题。以下内容非常适用:
import spacy
spacy.load('en_core_web_sm')
from spacy.lang.en import English
Run Code Online (Sandbox Code Playgroud)