spacy - spaCy 仅在调用“rasa train”时无法加载模型
问题描述
我正在通过命令行训练 rasa 模型,但 spaCy 似乎pt_core_news_sm
只有在我尝试通过终端训练时才能加载我的语言模型。
一切都在我的 venv 中完成并以管理员身份执行;
从 python 调用 spaCy 时,A 可能会加载模型:
import spacy
spacy.load("pt_core_news_sm")
rasa_nlu
通过python 脚本进行训练也可以。
但是当我打电话时,rasa train
我得到了这个回溯:
2020-02-06 02:03:19 INFO rasa.nlu.utils.spacy_utils - Trying to load spacy model with name 'pt_core_news_sm'
Traceback (most recent call last):
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\utils\spacy_utils.py", line 51, in load_model
return spacy.load(spacy_model_name, disable=["parser"])
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\spacy\__init__.py", line 30, in load
return util.load_model(name, **overrides)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\spacy\util.py", line 169, in load_model
raise IOError(Errors.E050.format(name=name))
OSError: [E050] Can't find model 'pt_core_news_sm'. It doesn't seem to be a shortcut link, a Python package or a valid path to a data directory.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "c:\users\aliss\appdata\local\programs\python\python36\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\aliss\AppData\Local\Programs\Python\Python36\Scripts\rasa.exe\__main__.py", line 9, in <module>
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\__main__.py", line 76, in main
cmdline_arguments.func(cmdline_arguments)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\cli\train.py", line 76, in train
additional_arguments=extract_additional_arguments(args),
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\train.py", line 50, in train
additional_arguments=additional_arguments,
File "c:\users\aliss\appdata\local\programs\python\python36\lib\asyncio\base_events.py", line 473, in run_until_complete
return future.result()
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\train.py", line 101, in train_async
additional_arguments,
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\train.py", line 188, in _train_async_internal
additional_arguments=additional_arguments,
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\train.py", line 245, in _do_training
persist_nlu_training_data=persist_nlu_training_data,
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\train.py", line 474, in _train_nlu_with_validated_data
persist_nlu_training_data=persist_nlu_training_data,
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\train.py", line 74, in train
trainer = Trainer(nlu_config, component_builder)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\model.py", line 147, in __init__
self.pipeline = self._build_pipeline(cfg, component_builder)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\model.py", line 159, in _build_pipeline
component = component_builder.create_component(component_cfg, cfg)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\components.py", line 515, in create_component
component = registry.create_component_by_config(component_config, cfg)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\registry.py", line 228, in create_component_by_config
return component_class.create(component_config, config)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\utils\spacy_utils.py", line 81, in create
nlp = cls.load_model(spacy_model_name)
File "c:\users\aliss\appdata\local\programs\python\python36\lib\site-packages\rasa\nlu\utils\spacy_utils.py", line 58, in load_model
"en_core_web_md en".format(spacy_model_name)
rasa.nlu.model.InvalidModelError: Model 'pt_core_news_sm' is not a linked spaCy model. Please download and/or link a spaCy model, e.g. by running:
python -m spacy download en_core_web_md
python -m spacy link en_core_web_md en
我用 python 和 python3 尝试了以下下载策略。第一个似乎是这个问题的答案,但效果不佳:
pip install https://github.com/explosion/spacy-models/releases/download/pt_core_news_sm-2.2.5/pt_core_news_sm-2.2.5.tar.gz
python -m spacy download pt
python -m spacy download pt_core_news_sm
这是我的配置文件:
language: "pt_core_news_sm"
pipeline:
- name: "SpacyNLP"
- name: "tokenizer_spacy"
- name: "ner_crf"
- name: "intent_featurizer_spacy"
- name: "intent_classifier_sklearn"
- name: "ner_synonyms"
policies:
- name: "FormPolicy"
我在用着...
spacy==2.2.3
rasa==1.7.0
rasa-core==0.14.5
rasa-core-sdk==0.14.0
rasa-nlu==0.15.0
rasa-sdk==1.7.0
解决方案
解决了。显然,rasa train
从 venv 内部调用会搜索我的 virtualenv 之外的语言模型。我必须下载在 venv 之外执行 python 的模型,它完成了训练。即便如此,我也不知道为什么会这样。
推荐阅读
- django - 在 Django Rest 框架中添加分页
- java - How to specify which @Recover method to use for which @Retryable method?
- laravel - 我在 Fedora 34、Laravel、SELinux 中禁止从 Apache (httpd) 访问
- python - Azure /bin/sh 中的 Docker 容器:1:[gunicorn,:未找到
- vue.js - Storage.put() 抛出 - AWSS3Provider - 上传错误 TypeError:无法读取未定义的属性“byteLength”
- javascript - 如何解决 vue 键盘事件绑定问题?
- terraform - 使用 terraform 使用预留实例创建 EKS
- flutter - 检测进入页面事件 Flutter
- javascript - 如何使用node.js在axios请求中添加带有formData的文件
- r - 如何在 R 中排除具有相同 ID 的调查中的用户进行计算?