如何在训练 rasa 时解决 domain.yml 中的错误

Posted

技术标签:

【中文标题】如何在训练 rasa 时解决 domain.yml 中的错误【英文标题】:How to solve error in domain.yml while training rasa 【发布时间】:2020-07-14 19:43:24 【问题描述】:

在运行 rasa train 时,我收到一个错误,它自动采用空的 domain.yml 而不是我想要选择的 .yml 文件。该错误表明存在重复键。

C:\Users\nitik\rasabot>rasa 火车 c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\utils\common.py:351: 用户警告:从“domain.yml”加载域失败。使用空 领域。错误:'提供的 yaml 文件包含重复的密钥: '在“”中构造映射时,第 25 行,列 3 找到重复键“-text”,值为“嗨。我的名字是医疗保险” 定位器。今天有什么可以帮到你的?”(原值:“你好。我是 医疗保险定位器。我可以帮你找到最近的医院。我该如何帮助 ?") 在“”中,第 43 行,第 3 列

要禁止此检查,请参阅: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys

重复键将在未来的版本中成为错误,并且是错误 使用新 API 时默认设置。 '。您可以使用 http://www.yamllint.com/ 验证文件的 yaml 语法。 训练 NLU 模型... 2020-04-01 01:32:49 INFO rasa.nlu.training_data.training_data - 训练数据统计: - 意图示例:56 个(9 个不同的意图) - 发现意图:'肯定','search_provider','问候','再见','mood_great','inform','bot_challenge','deny', 'mood_unhappy' - 响应示例数:0(0 个不同响应) - 实体示例:13 个(2 个不同的实体) - 找到的实体:'facility_type'、'location'

2020-04-01 01:32:49 INFO rasa.nlu.model - 开始训练 组件 WhitespaceTokenizer 2020-04-01 01:32:49 INFO rasa.nlu.model - 完成的训练组件。 2020-04-01 01:32:49 INFO rasa.nlu.model - 开始训练组件 RegexFeaturizer 2020-04-01 01:32:49 INFO rasa.nlu.model - 完成训练 零件。 2020-04-01 01:32:49 信息 rasa.nlu.model - 开始 训练组件 LexicalSyntacticFeaturizer 2020-04-01 01:32:49 INFO rasa.nlu.model - 完成的训练组件。 2020-04-01 01:32:49 INFO rasa.nlu.model - 开始训练组件 CountVectorsFeaturizer 2020-04-01 01:32:49 信息 rasa.nlu.model - 完成的训练组件。 2020-04-01 01:32:49 信息 rasa.nlu.model - 开始训练组件 CountVectorsFeaturizer 2020-04-01 01:32:49 INFO rasa.nlu.model - 完成训练 零件。 2020-04-01 01:32:49 信息 rasa.nlu.model - 开始 火车组件 DIETClassifier 2020-04-01 01:32:49.711102: E tensorflow/stream_executor/cuda/cuda_driver.cc:351] 调用失败 cuInit:未知错误(303)时期: 100%|███████████████████████████████████████████████ ██████| 100/100 [00:52 rasa.utils.tensorflow.models - 完成训练。 2020-04-02 22:40:46 INFO rasa.nlu.model - 完成的训练组件。 2020-04-02 22:40:46 INFO rasa.nlu.model - 开始训练组件 EntitySynonymMapper 2020-04-02 22:40:46 信息 rasa.nlu.model - 完成的训练组件。 2020-04-02 22:40:46 资讯 rasa.nlu.model - 开始训练组件 ResponseSelector 2020-04-02 22:40:46 信息 rasa.nlu.selectors.response_selector - 检索意图参数保留为其默认值。这 响应选择器将接受结合所有训练示例的训练 检索意图。 2020-04-02 22:40:46 信息 rasa.nlu.model - 完成的训练组件。 2020-04-02 22:40:55 资讯 rasa.nlu.model - 成功将模型保存到 'C:\Users\nitik\AppData\Local\Temp\tmpy9i6wqpt\nlu' NLU 模型训练 完全的。 c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\utils\common.py:351: 用户警告:从“domain.yml”加载域失败。使用空 领域。错误:'提供的 yaml 文件包含重复的密钥: '在“”中构造映射时,第 25 行,列 3 找到重复键“-text”,值为“嗨。我的名字是医疗保险” 定位器。今天有什么可以帮到你的?”(原值:“你好。我是 医疗保险定位器。我可以帮你找到最近的医院。我该如何帮助 ?") 在“”中,第 43 行,第 3 列

要禁止此检查,请参阅: http://yaml.readthedocs.io/en/latest/api.html#duplicate-keys

重复键将在未来的版本中成为错误,并且是错误 使用新 API 时默认设置。 '。您可以使用 http://www.yamllint.com/ 验证文件的 yaml 语法。 c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 2 行发现未知意图“问候”。请确保 所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 4 行发现未知意图“search_provider”。请, 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 7 行发现未知意图“谢谢”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 11 行发现未知意图“问候”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 13 行发现未知意图“search_provider”。 请确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 15 行发现未知意图“通知”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 18 行发现未知意图“谢谢”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 22 行发现未知意图“问候”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 24 行发现未知意图“mood_great”。请, 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 28 行发现未知意图“问候”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 30 行发现未知意图“mood_unhappy”。请, 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 33 行发现未知意图“确认”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 37 行发现未知意图“问候”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 39 行发现未知意图“mood_unhappy”。请, 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 42 行发现未知意图“拒绝”。请确保 所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 46 行发现未知意图“再见”。请让 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS, c:\users\nitik\appdata\local\programs\python\python37\lib\site-packages\rasa\core\training\dsl.py:422: 用户警告:在第 50 行发现未知意图“bot_challenge”。请, 确保所有意图都列在您的域 yaml 中。 docs=DOCS_URL_DOMAINS,您的 Rasa 模型经过训练并保存在 'C:\Users\nitik\rasabot\models\nlu-20200402-224056.tar.gz'。核 由于未找到有效的域文件,因此跳过了培训。只有一个 nlu-model 已创建。请使用“--domain”指定有效域 参数或检查提供的域文件是否存在。

【问题讨论】:

【参考方案1】:

您的 domain.yml 不是有效的 YAML 文件,因此 Rasa 无法使用它,而是从一个空文件开始。

转到http://www.yamllint.com/并粘贴您的domain.yml的内容,您可以轻松地对其进行验证并找到错误/不一致(有时它只是缩进,但似乎您有一些重复读取错误跟踪)。

【讨论】:

以上是关于如何在训练 rasa 时解决 domain.yml 中的错误的主要内容,如果未能解决你的问题,请参考以下文章

无法使用Rasa NLU / Sklearn训练新模型

RASA 无法识别正确的意图

RASA-意图识别组件Classifier

如何将RASA基本文本bot转换为Rasa基本语音机器人

如何在 Rasa 的 action.py 中通过 Facebook Messenger 从用户那里获取图像

报时机器人的rasa shell执行流程分析