ImportError:没有名为“ spacy.en”的模块

发布于 2021-01-29 19:19:03

我正在使用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

如果还有其他答案,我仍会保持开放状态。

关注者
0
被浏览
45
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    是的,我可以确认您的解决方案是正确的。您从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执行以下操作:

    1. 查找已安装的名称为"en_core_web_sm"(包装或快捷方式链接)的模型。
    2. 阅读它meta.json,并检查它的使用(在这种情况下,语言spacy.lang.en),它的处理管道应该是什么样子(在这种情况下,taggerparserner)。
    3. 初始化语言类并向其中添加管道。
    4. 从模型数据中加载二进制权重,以便管道组件(例如标记器,解析器或实体识别器)可以进行预测。

    有关更多详细信息,请参阅文档中的此部分



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看