spaCy:No module named ‘en’ || Can‘t find model ‘en’

2023-12-27 03:48
文章标签 model module named find spacy en

本文主要是介绍spaCy:No module named ‘en’ || Can‘t find model ‘en’,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

    了解到 ChatterBot 后,打算上手试试,安装好库包、敲好入门代码,一运行报错:1️⃣ ModuleNotFoundError: No module named 'en' ,亦或是 2️⃣ OSError: [E050] Can't find model 'en'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory. 

    先贴上最后配置的库包版本:

库包版本
chatterbot1.1.0
pyyaml5.3.1
en_core_web_sm2.1.0
spacy2.1.9

解决

    网上看了很多篇博客,把经验总结一下。

    📍 错误原因:导致这个错误的源头在于 spaCy 加载模型时报错(1️⃣ 没有安装模型,2️⃣ 模型软链接问题)

    1. 下载spacy 英文语言包

      网上大多数使用命令 python -m spacy download en 或者 python -m spacy download en_core_web_sm,但我实践时直接就报错,所以改到GitHub上先把语言包下载下来(下载网址见下面【注意2】部分)。

更新:当spaCy版本 < V1.7时,上述命令才有效 [链接]

https://spacy.io/models/en

2021.3 更新:Spacy又提供了一种语言包 en_core_web_trf  ( trf 相比之前的,缺点是更大、更慢,但优点是精度更高 [来源]

      >>> 注意1:spacy en_core_web_sm/md/lg三种model有什么区别 

英文的第二个包和第三个包会比较大,也比较难下载,其实它和第一个包最大的区别就是它是内置训练好的词向量的,在相似度任务中会具体用到 [来源]

题外话:在使用Rasa框架进行英文自然语言处理时,官方建议下载medium版本,原因是可以使得意图分类更有效。

    We recommend using at least the “medium” sized models (_md) instead of the spaCy's default small en_core_web_sm model. Small models require less memory to run, but will somewhat reduce intent classification performance. [来源]

      >>> 注意2:语言包的版本和spacy的版本有对应的要求

#en 2.0.0语言包  #要求spaCy >=2.0.0a18   

下载地址:https://github.com/explosion/spacy-models/releases/tag/en_core_web_sm-2.0.0

#en 2.1.0语言包 #要求spaCy >=2.1.0   

下载地址:https://github.com/explosion/spacy-models/releases/tag/en_core_web_sm-2.1.0

#en 2.2.5语言包 #要求spaCy >=2.2.2   

下载地址:https://github.com/explosion/spacy-models/releases/tag/en_core_web_sm-2.2.5

#en 2.3.1语言包 #要求spaCy >=2.3.0,<2.4.0   

下载地址:https://github.com/explosion/spacy-models/releases/tag/en_core_web_sm-2.3.1

      >>> 注意3:语言包名称说明

     2. 解压语言包,用管理员方式打开命令行,并进入语言包文件夹执行命令

D:\ChatterBot\en_core_web_sm-2.1.0>python setup.py install

      BUG:可能会遇到报错 File "setup.py", line 2  SyntaxError: encoding problem: utf8

      解决:打开setup.py,把 # coding: utf8 改成 # -*- coding: utf-8 -*-

    3. 进入Python环境,测试是否安装完成

# 方式一
>>> import spacy
>>> nlp = spacy.load("en_core_web_sm")# 方式二
>>> import en_core_web_sm
>>> nlp = en_core_web_sm.load()

    4. 再次运行chatterbot的入门案例,依旧得到No module named 'en'的错误....

      猜测多半是name这里出了问题,应该是默认的 en 现在变成了 en_core_web_sm

      打开 C:\Anaconda3\Lib\site-packages\spacy\util.py,输出data_path看看

      得到了data_path的路径:C:\Anaconda3\lib\site-packages\spacy\data

    5.1 方法一:把之前解压的语言包下的 en_core_web_sm 文件夹拷贝到 data_path 的路径下,并重命名为en

      5.2 方法二(推荐):以管理员方式打开cmd,为这个模型建立一个新链接

python -m spacy link en_core_web_sm en

    6. 再次运行chatterbot代码,成功! 

其他问题

  BUG1:无法卸载 PyYAML 3.13

  解决:到C:\Anaconda3\Lib\site-packages下找到pyyaml相关文件删除后再pip uninstall pyyaml

  BUG2:想用 chatterbot 提供的中文语料库实验,pip install chatterbot-corpus后,说是兼容性的问题,把PyYAML 5.3.1卸载了,又把PyYAML 3.13安装回来了...虽然显示 ERROR: chatterbot 1.1.0 has requirement pyyaml<5.4,>=5.3, but you'll have pyyaml 3.13 which is incompatible. 但似乎ChatterBot还是能正常使用,真是个迷惑行为

  chatterbot 语料库:https://github.com/gunthercox/chatterbot-corpus/tree/master/chatterbot_corpus/data

中文模型

https://spacy.io/models/zh

SM:https://github.com/explosion/spacy-models/releases/tag/zh_core_web_sm-2.3.0 (要求spaCy >=2.3.0,<2.4.0)

SM:https://github.com/explosion/spacy-models/releases/tag/zh_core_web_sm-2.3.1 (要求spaCy >=2.3.0,<2.4.0)

SM:https://github.com/explosion/spacy-models/releases//tag/zh_core_web_sm-3.0.0 (要求spaCy >=3.0.0,<3.1.0)

MD:https://github.com/explosion/spacy-models/releases//tag/zh_core_web_md-3.0.0(要求spaCy >=3.0.0,<3.1.0)

LG:https://github.com/explosion/spacy-models/releases//tag/zh_core_web_lg-3.0.0(要求spaCy >=3.0.0,<3.1.0)

TRF:https://github.com/explosion/spacy-models/releases//tag/zh_core_web_trf-3.0.0(要求spaCy >=3.0.0,<3.1.0)

    链接:spaCy 2.1 中文NLP模型语法使用 

    其他:displaCy Named Entity Visualizer

这篇关于spaCy:No module named ‘en’ || Can‘t find model ‘en’的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/541799

相关文章

GORM中Model和Table的区别及使用

《GORM中Model和Table的区别及使用》Model和Table是两种与数据库表交互的核心方法,但它们的用途和行为存在著差异,本文主要介绍了GORM中Model和Table的区别及使用,具有一... 目录1. Model 的作用与特点1.1 核心用途1.2 行为特点1.3 示例China编程代码2. Tab

Python中ModuleNotFoundError: No module named ‘timm’的错误解决

《Python中ModuleNotFoundError:Nomodulenamed‘timm’的错误解决》本文主要介绍了Python中ModuleNotFoundError:Nomodulen... 目录一、引言二、错误原因分析三、解决办法1.安装timm模块2. 检查python环境3. 解决安装路径问题

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

nginx-rtmp-module模块实现视频点播的示例代码

《nginx-rtmp-module模块实现视频点播的示例代码》本文主要介绍了nginx-rtmp-module模块实现视频点播,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习... 目录预置条件Nginx点播基本配置点播远程文件指定多个播放位置参考预置条件配置点播服务器 192.

nginx-rtmp-module构建流媒体直播服务器实战指南

《nginx-rtmp-module构建流媒体直播服务器实战指南》本文主要介绍了nginx-rtmp-module构建流媒体直播服务器实战指南,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. RTMP协议介绍与应用RTMP协议的原理RTMP协议的应用RTMP与现代流媒体技术的关系2

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

MongoDB学习—(6)MongoDB的find查询比较符

首先,先通过以下函数向BookList集合中插入10000条数据 function insertN(obj,n){var i=0;while(i<n){obj.insert({id:i,name:"bookNumber"+i,publishTime:i+2000})i++;}}var BookList=db.getCollection("BookList")调用函数,这样,BookList

jupyter在加载pkl文件时报错ModuleNotFoundError: No module named 'pandas.core.internals.managers'; '的解决方法

笔者当看到这个错误的时候一脸懵逼,在pycharm上正常运行的code 放在jupyter就不成了,于是就研究一翻。 一开始以为自己的pkl文件有问题,研究重点放在这里,最后发现不是。 然后取搜索pycharm和jupyter下的python的\Lib\site-packages\pandas\core\internals有什么不同 发现jupyter下没有pandas\core\intern

【NodeJS】Error: Cannot find module 'ms'

转载自:http://blog.csdn.net/echo_ae/article/details/75097004 问题: Error: Cannot find module 'ms'at Function.Module._resolveFilename (module.js:469:15)at Function.Module._load (module.js:417:25)at Module

【虚拟机/服务器】配置ngx_http_empty_gif_module记录

下载Nginx源码 查看Nginx内置模块 1、在可视化界面中 可以看到 ngx_http_empty_gif_module.c 是Nginx的内置模块,不需要再进行安装 2、在bash命令行中 tar nginx 解压后进入nginx目录,./configure --help | grep empty_gif 即可查看我想要的 ngx_http_empty_gif_module