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

相关文章

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

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this

访问controller404:The origin server did not find a current representation for the target resource

ider build->rebuild project。Rebuild:对选定的目标(Project),进行强制性编译,不管目标是否是被修改过。由于 Rebuild 的目标只有 Project,所以 Rebuild 每次花的时间会比较长。 参考:资料

mybatis错误——java.io.IOException Could not find resource comxxxxxxMapper.xml

在学习Mybatis的时候,参考网上的教程进行简单demo的搭建,配置的没有问题,然后出现了下面的错误! Exception in thread "main" java.lang.RuntimeException: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause:

多个,多层嵌套module,打aar包

参考https://blog.51cto.com/4259297/1699714 1.在要打包的module中下添加fat-aar.gradle文件。(该文件只能在项目个gradle是2.3.3是才可食用) 2.把项目的gradle修改为2.3.3,但是不打包的gradle依然是以前的。 3.由于打包的的gradle和不打包的是不一样的,所以需要在修改gradle的文件中的添加判断标志

diffusion model 合集

diffusion model 整理 DDPM: 前向一步到位,从数据集里的图片加噪声,根据随机到的 t t t 决定混合的比例,反向要慢慢迭代,DDPM是用了1000步迭代。模型的输入是带噪声图和 t,t 先生成embedding后,用通道和的方式加到每一层中间去: 训练过程是对每个样本分配一个随机的t,采样一个高斯噪声 ϵ \epsilon ϵ,然后根据 t 对图片和噪声进行混合,将加噪