ChatterBot 错误 - OSError: \[E941\] 找不到模型 'en'

新手上路,请多包涵

我尝试运行我的第一个 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")

如果有人为此找到解决方案,那将很有帮助。谢谢。

原文由 su2187 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

确保您确实安装了正确的 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 文件
  2. 前往 13 号线
  3. 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())

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

原文由 Wiktor Stribiżew 发布,翻译遵循 CC BY-SA 4.0 许可协议

检查您使用的 spacy 版本。

安装 spacy 并下载语言模型 _en_core_websm ,在本例中使用

 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") 加载它

原文由 Subigya Upadhyay 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题