You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Anaconda3+Rasa+SpaCy+Sklearn训练聊天机器人遇DeprecationWarning的原因及解决方法

我之前在基于Rasa+Sklearn训练聊天机器人的时候也碰到过一模一样的警告,给你拆解下原因和解决办法:

问题原因分析

这个警告来自Scikit-learn的label.py模块,核心原因是代码里对空数组直接做了布尔值判断(比如if some_empty_array:)。在旧版本的Sklearn里这种写法会返回False,但官方已经明确这种判断逻辑有歧义,未来版本会直接抛出错误,所以提前给出了DeprecationWarning。

放到你的Rasa训练场景里,大概率是这两种情况:

  • 你的聊天机器人数据集存在异常:比如某个意图没有对应的训练样本,或者部分样本的意图/实体标注为空,导致预处理阶段生成了空的特征/标签数组,触发了Sklearn的这个判断逻辑。
  • 你使用的Sklearn版本和Rasa的兼容性问题:部分旧版本的Sklearn(比如0.22.x系列)会频繁弹出这个警告,而Rasa的某些版本对Sklearn有特定依赖,可能刚好匹配到了这个有警告的版本。
解决方案

1. 从数据集根源修复(最推荐)

先检查你的Rasa数据集文件:

  • 打开nlu.yml,确认所有意图都有至少一条有效训练样本,没有空的intent条目或者标注缺失的样本。
  • 检查stories.yml,确保对话流程里的意图引用都是存在的,没有拼写错误或者指向无样本的意图。
    如果发现空样本或无效标注,补全或删除后重新训练,警告大概率会消失。

2. 调整Sklearn版本

如果数据集没问题,那可以尝试调整Sklearn的版本:

  • 如果你用的是较旧的Sklearn,升级到0.23.2及以上版本(这个版本修复了空数组判断的警告逻辑,同时和多数稳定版Rasa兼容)。在Anaconda里执行命令:
conda install scikit-learn=0.23.2
  • 注意:如果你的Rasa版本比较老,可能需要查看Rasa官方的依赖说明,选择兼容的Sklearn版本,避免版本冲突。

3. 临时屏蔽警告(应急方案)

如果暂时没时间调整数据集或版本,可以在训练脚本的开头添加以下代码,专门屏蔽Sklearn的这个DeprecationWarning:

import warnings
warnings.filterwarnings("ignore", category=DeprecationWarning, module="sklearn")

不过这只是“治标”的方法,建议还是从根源解决问题,避免未来版本升级后真的触发错误。

4. 检查Rasa Pipeline配置

打开config.yml,查看你的NLU pipeline里是否有特征提取相关的组件(比如CountVectorizer)出现配置异常,导致生成了空的特征数组。比如是否开启了某些过滤规则,把所有特征都过滤掉了?调整pipeline配置后重新训练试试。

内容的提问来源于stack exchange,提问作者Antonblue16

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:48:06