windows ChatterBot错误-操作系统错误:[E941]找不到模型“en”

6ju8rftf  于 2022-11-18  发布在  Windows
关注(0)|答案(8)|浏览(216)

我试着运行我的第一个Chatterbot程序(它来自Chatterbot的PyPi页面),当我运行它时,我得到了一个错误。这个错误与Spacy有关,但我无法找到解决方案。
代码如下:

from chatterbot.trainers import ChatterBotCorpusTrainer

chatbot = ChatBot('Ron Obvious')

trainer = ChatterBotCorpusTrainer(chatbot)

trainer.train("chatterbot.corpus.english")

chatbot.get_response("Hello, how are you today?")

错误如下:

Traceback (most recent call last):
  File "c:/users/USER/desktop/bot.py", line 77, in <module>
    chatbot = ChatBot('Ron Obvious')
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\chatterbot.py", line 28, in __init__
    self.storage = utils.initialize_class(storage_adapter, **kwargs)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\utils.py", line 33, in initialize_class
    return Class(*args, **kwargs)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\storage\sql_storage.py", line 20, in __init__
    super().__init__(**kwargs)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\storage\storage_adapter.py", line 21, in __init__
    'tagger_language', languages.ENG
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py", line 13, in __init__
    self.nlp = spacy.load(self.language.ISO_639_1.lower())
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\spacy\__init__.py", line 47, in load
    return util.load_model(name, disable=disable, exclude=exclude, config=config)
  File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\spacy\util.py", line 328, in load_model
    raise IOError(Errors.E941.format(name=name, full=OLD_MODEL_SHORTCUTS[name]))
OSError: [E941] Can't find model 'en'. It looks like you're trying to load a model from a shortcut, which is deprecated as of spaCy v3.0. To load the model, use its full name instead:

nlp = spacy.load("en_core_web_sm")

For more details on the available models, see the models directory: https://spacy.io/models. If you want to create a blank model, use spacy.blank: nlp = spacy.blank("en")

如果有人能找到解决这个问题的方法会很有帮助的。谢谢。

lqfhib0f

lqfhib0f1#

确保您确实安装了正确的spacy型号。例如,在终端中使用python -m spacy download en_core_web_sm命令安装en_core_web_sm
接下来,修复此错误:

File "C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py", line 13, in __init__
    self.nlp = spacy.load(self.language.ISO_639_1.lower())

也就是说,
1.打开C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py文件
1.转到第13行
1.将self.nlp = spacy.load(self.language.ISO_639_1.lower())替换为

if self.language.ISO_639_1.lower() == 'en':
    self.nlp = spacy.load('en_core_web_sm')
else:
    self.nlp = spacy.load(self.language.ISO_639_1.lower())

您需要为需要支持的其他语言添加更多条件。

rqenqsqc

rqenqsqc2#

请检查您使用的spacy版本。
安装spacy并下载语言模型 en_core_web_sm,在本例中使用

python -m spacy download en_core_web_sm

如果是v3.0,则需要使用

nlp = spacy.load("en_core_web_sm")

如果版本低于v3.0,则可以使用创建快捷方式链接模型

python -m spacy link en_core_web_sm en

从而使用nlp = spacy.load("en")加载它

pgpifvop

pgpifvop3#

除了其他评论,请注意SpaCy 3.0.3和Python 3.8的一个问题. -如果您使用的是这些版本,您可能需要通过Python shell下载语言模型,例如:

import spacy
from spacy.cli.download import download
download(model="en_core_web_sm")

对于这些版本,通过python -m spacy download en_core_web_sm下载可能会导致异常-如here所述。

h7appiyu

h7appiyu4#

首先,您需要通过运行以下命令下载en_core_web_sm:python -m空间下载en_core_web_sm
您需要修改以下代码。
enter image description here

lyfkaqu1

lyfkaqu15#

尝试只安装空间与〉〉pip安装-U空间
并更改代码

self.nlp = spacy.load(self.language.ISO_639_1.lower())

在“C:\用户\用户\应用程序数据\本地\程序\Python\Python37\库\站点包\聊天机器人\标记. py”中执行

if self.language.ISO_639_1.lower() == 'en':
     self.nlp = spacy.load('en_core_web_sm')
  else:
    self.nlp = spacy.load(self.language.ISO_639_1.lower())

在这里给我找工作我也遇到了同样的问题

xu3bshqb

xu3bshqb6#

对于LinuxMac用户:
对于上面的投票最多的答案,我将补充tagging.py的位置是:
/usr/local/lib/python3.7/site-packages/chatterbot
更确切地说:
<Install_path_of_Python>/site-packages/chatterbot
(* 安装路径也可以是您的虚拟环境路径 *)

blmhpbnm

blmhpbnm7#

尝试只安装带有pip install -U spacy的spacy
并更改代码

self.nlp = spacy.load(self.language.ISO_639_1.lower())

C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py为单位

if self.language.ISO_639_1.lower() == 'en':
   self.nlp = spacy.load('en_core_web_sm')
else:
  self.nlp = spacy.load(self.language.ISO_639_1.lower())
kq4fsx7k

kq4fsx7k8#

如果下载软件包不起作用,请执行以下操作:
python -m空间下载en_core_web_sm
那么您不需要更改包中的代码,只需更改原因即可。
从聊天机器人导入语言
语言. ENG.ISO_639_1 =“中文核心网”
它会将“en”更改为“en_core_web_sm”以表示空间

相关问题