我正在开发一个使用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,最接近的是:Import error with spacy: "No module named 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,其中包含许多新功能,还包括a few changes to the 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
)。有关详细信息,请参阅this section in the docs。
我使用以下命令从anaconda发行版安装spacy。
conda install -c conda-forge spacy
之后,我可以使用以下命令下载英语,没有任何错误。
python -m spacy download en
我不得不使用en_core_web_sm而不是en来使其工作。它抱怨许可问题。以下工作完美:
import spacy
spacy.load('en_core_web_sm')
from spacy.lang.en import English
我认为所提供的答案存在混淆。正确的事情提到:
但是:文件en_core_web_sm与从spacy.lang.en导入的文件不同。实际上,第一个文件是在数据集中使用spacy train训练后的第二个文件,然后打包结果。 spacy.lang.en包含模型定义:lemmas lookup table,stop_words,lexical attributes(以及更多)。但那只是那个。它没有使用数据集进行训练,因此依赖关系图和其他功能可以起作用。
我认为在使用spaCy时应该足够清楚。
en_core_web_sm文件夹已下载到spacy文件夹之外。我将其复制到spacy / data文件夹中,并可以运行spacy中记录的代码
在Windows 10和Anaconda安装上遇到此问题的任何人,在运行脚本之前,请在命令行上使用where python
查找conda python可执行文件。
在我的例子中,PATH上的python是
C:\Users\XXX\.windows-build-tools\python27\python.exe
而我需要的是来自
c:\Users\XXX\AppData\Local\Continuum\anaconda3\python.exe
只需在路径上添加正确的python,或者转到此位置并运行
python -m spacy download en
它应该工作。