ChatterBot error- OSError: [E941] Can't find model 'en'
ChatterBot error- OSError: [E941] Can't find model '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")
如果有人为此找到解决方案,将会很有帮助。谢谢
确保您确实安装了正确的 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())
即
- 打开
C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py
文件
- 转到第 13 行
- 将
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())
您需要为需要支持的其他语言添加更多条件。
检查您使用的 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,您可以 link 使用
创建快捷方式的模型
python -m spacy link en_core_web_sm en
然后使用 nlp = spacy.load("en")
加载它
首先,您需要通过运行下载en_core_web_sm:python -m spacy download en_core_web_sm
您需要修改以下代码。
enter image description here
除了其他评论之外,请注意 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.
尝试使用 >>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())
在这里为我工作,我遇到了同样的问题
Linux 和 Mac 用户:
对于上面的top-voted回答我会补充说tagging.py
的位置是:
/usr/local/lib/python3.7/site-packages/chatterbot
更准确地说:
<Install_path_of_Python>/site-packages/chatterbot
( 安装路径也可以是你的虚拟环境路径 )
我尝试了 运行 我的第一个 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")
如果有人为此找到解决方案,将会很有帮助。谢谢
确保您确实安装了正确的 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())
即
- 打开
C:\Users\USER\AppData\Local\Programs\Python\Python37\lib\site-packages\chatterbot\tagging.py
文件 - 转到第 13 行
- 将
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())
您需要为需要支持的其他语言添加更多条件。
检查您使用的 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,您可以 link 使用
创建快捷方式的模型python -m spacy link en_core_web_sm en
然后使用 nlp = spacy.load("en")
首先,您需要通过运行下载en_core_web_sm:python -m spacy download en_core_web_sm
您需要修改以下代码。
enter image description here
除了其他评论之外,请注意 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.
尝试使用 >>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())
在这里为我工作,我遇到了同样的问题
Linux 和 Mac 用户:
对于上面的top-voted回答我会补充说tagging.py
的位置是:
/usr/local/lib/python3.7/site-packages/chatterbot
更准确地说:
<Install_path_of_Python>/site-packages/chatterbot
( 安装路径也可以是你的虚拟环境路径 )