代码之家  ›  专栏  ›  技术社区  ›  Mateus Melo

ChatterBot在spaCy中加载“en”模型时出错:OSError[E941]

  •  0
  • Mateus Melo  · 技术社区  · 2 年前

    我目前正在使用Python 3.8(64位)构建一个聊天机器人,并使用pip成功安装了Chatterbot。然而,在运行我的代码时,我遇到了一个与spaCy中的“en”模型相关的错误。我还在Windows10中使用命令提示符安装了spaCy。

    错误消息:

    Traceback (most recent call last):
      File "C:/Users/User/AppData/Local/Programs/Python/Python38/chatt.py", line 12, in <module>
        chatbot = ChatBot('MyChatBot')
      File "C:\Users\User\AppData\Local\Programs\Python\Python38\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\Python38\lib\site-packages\chatterbot\utils.py", line 33, in initialize_class
        return Class(*args, **kwargs)
      File "C:\Users\Uer\AppData\Local\Programs\Python\Python38\lib\site-packages\chatterbot\storage\sql_storage.py", line 20, in __init__
        super().__init__(**kwargs)
      File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\chatterbot\storage\storage_adapter.py", line 22, in __init__
        self.tagger = Tagger(language=kwargs.get(
      File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\chatterbot\tagging.py", line 26, in __init__
        self.nlp = spacy.load(self.language.ISO_639_1.lower())
      File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\spacy\__init__.py", line 54, in load
        return util.load_model(
      File "C:\Users\User\AppData\Local\Programs\Python\Python38\lib\site-packages\spacy\util.py", line 448, in load_model
        raise IOError(Errors.E941.format(name=name, full=OLD_MODEL_SHORTCUTS[name]))  # type: ignore[index]
    OSError: [E941] Can't find model 'en'. It looks like you're trying to load a model from a shortcut, which is obsolete 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")
    

    代码:

    from chatterbot import ChatBot
    from chatterbot.trainers import ChatterBotCorpusTrainer
    
    
    chatbot = ChatBot('MyChatBot')
    
    
    trainer = ChatterBotCorpusTrainer(chatbot)
    
    
    trainer.train("chatterbot.corpus.english")
    
    
    while True:
        user_input = input("You: ")
        response = chatbot.get_response(user_input)
        print("ChatBot:", response)
    
    

    其他详细信息:

    -Python版本:3.8(64位) -操作系统:Windows 10 -spaCy版本:3.5.3 -ChatterBot 1.1.0a7版

    我尝试了各种方法,包括将Python版本更改为3.7,以及安装不同版本的spaCy(如3.4.0),但我仍然遇到“en”模型未找到错误。

    如果能为解决这一问题提供任何帮助,我将不胜感激。提前感谢您的帮助。

    0 回复  |  直到 2 年前