技术标签: rasa官方教程中文翻译
评估NLU模型
比较NLU管道
意图分类
响应选择
实体提取
实体评分
评估Core模型
比较Core配置
端对端评估
注意
如果你想优化NLU模型的超参数,参阅教程 tutorial.
机器学习的一个标准技术是把一些数据分离出来作为测试集。你可以使用下面命令把NLU训练数据集拆分成训练数据集和测试数据集:
rasa data split nlu
如果您已经这样做了,您可以使用以下命令查看NLU模型对测试用例的预测情况:
rasa test nlu -u test_set.md --model models/nlu-20180323-145833.tar.gz
如果不想创建单独的测试集,仍然可以使用交叉验证来估计模型的泛化程度。为此,需要添加标志--cross-validation:
rasa test nlu -u data/nlu.md --config config.yml --cross-validation
下面是脚本的完整选项列表是:
usage: rasa test nlu [-h] [-v] [-vv] [--quiet] [-m MODEL] [-u NLU] [--out OUT]
[--successes] [--no-errors] [--histogram HISTOGRAM]
[--confmat CONFMAT] [-c CONFIG [CONFIG ...]]
[--cross-validation] [-f FOLDS] [-r RUNS]
[-p PERCENTAGES [PERCENTAGES ...]]
optional arguments:
-h, --help show this help message and exit
-m MODEL, --model MODEL
Path to a trained Rasa model. If a directory is
specified, it will use the latest model in this
directory. (default: models)
-u NLU, --nlu NLU File or folder containing your NLU data. (default:
data)
--out OUT Output path for any files created during the
evaluation. (default: results)
--successes If set successful predictions (intent and entities)
will be written to a file. (default: False)
--no-errors If set incorrect predictions (intent and entities)
will NOT be written to a file. (default: False)
--histogram HISTOGRAM
Output path for the confidence histogram. (default:
hist.png)
--confmat CONFMAT Output path for the confusion matrix plot. (default:
confmat.png)
-c CONFIG [CONFIG ...], --config CONFIG [CONFIG ...]
Model configuration file. If a single file is passed
and cross validation mode is chosen, cross-validation
is performed, if multiple configs or a folder of
configs are passed, models will be trained and
compared directly. (default: None)
Python Logging Options:
-v, --verbose Be verbose. Sets logging level to INFO. (default:
None)
-vv, --debug Print lots of debugging statements. Sets logging level
to DEBUG. (default: None)
--quiet Be quiet! Sets logging level to WARNING. (default:
None)
Cross Validation:
--cross-validation Switch on cross validation mode. Any provided model
will be ignored. (default: False)
-f FOLDS, --folds FOLDS
Number of cross validation folds (cross validation
only). (default: 10)
Comparison Mode:
-r RUNS, --runs RUNS Number of comparison runs to make. (default: 3)
-p PERCENTAGES [PERCENTAGES ...], --percentages PERCENTAGES [PERCENTAGES ...]
Percentages of training data to exclude during
comparison. (default: [0, 25, 50, 75])
通过将多个管道配置(或包含这些配置的文件夹)传递给CLI,Rasa将运行管道之间的比较检查。
$ rasa test nlu --config pretrained_embeddings_spacy.yml supervised_embeddings.yml
--nlu data/nlu.md --runs 3 --percentages 0 25 50 70 90
上述命令会把你的数据拆分成训练集和测试集,并在训练集中去掉0%、25%、50%、70%和90%的目标数据的情况下多次训练每个管道。然后在测试集上对模型进行评估,并记录每个去掉百分比的f1分数。这个过程运行三次(即总共有三个测试集),然后使用f1分数的平均值和标准差绘制一个图表。
所有训练/测试集的f1分数图形,训练和分类报告,错误报告会保存在一个名为nlu_compartison_results的文件夹中。
评估脚本将为你的模型生成一个报告,混淆矩阵和置信直方图。
该报告中记录每个意图和实体记录了精确度、召回率和f1指标,并提供总体平均值。你可以使用参数--report把报告保存为JSON格式文件。
混淆矩阵显示了哪些意图被误认为是其他意图;任何被错误预测的样本都会被记录并保存到名为errors.json的文件中,以便于调试。
脚本生成的直方图允许您可视化所有预测的置信度分布,正确和错误预测的数量分别用蓝色和红色条显示。提高训练数据的质量将使蓝色直方图条向右移动,红色直方图条向左移动。
注意
只有在测试集上评估模型时,才会生成混淆矩阵。 在交叉验证模式下,不会生成混淆矩阵。
警告
任何一个实体被错误地标注可能导致评估的失败。 常见的问题是一个实体没有被从开头或末尾被正确提取出来。例如,如果你有一个像[Brian](name)'s house这样的name实体示例, 只有你的分词器把 Brian's 分成Brian和’s时才是有效的. 这里不考虑空格分割标记。
评估脚本会给管道中所有的响应选择器模型生成一个组合报告。报告记录了每一个响应的精确度,召回率和f1指标,并提供总体平均值。你可以使用参数--report把报告保存为JSON格式文件。
CRFEntityExtractor是唯一的可以用你自己的数据进行训练的实体提取器,因此也是唯一一个可以被评估的实体提取器。如果你使用spaCy或duckling pre-trained实体提取器,Rasa NLU不会去评估它们。
Rasa NLU会报告被CRFEntityExtractor训练过的每一类实体的召回率,精确度和f1指标。
为了评估实体提取,我们采用了一种简单的基于标签的方法。我们不考虑 BILOU(Begin, Inside, Last, Outside, Unit)标记方法,只考虑每个标记的实体类型标记。对于像 “near Alexanderplatz”这样的位置实体,我们希望标记是LOC LOC而不是基于BILOU标记的B-LOC L-LOC。在评估方面,我们的方法更为宽松,因为它奖励部分提取,而不惩罚实体分割。例如,考虑到上述实体 “near Alexanderplatz”和提取 “Alexanderplatz”的系统,我们的方法奖励提取“Alexanderplatz”,并处罚漏掉“near”单词。然而,基于BILOU的方法对此标将是完全失败的,因为“Alexanderplatz”希望被标记为实体的最后一个词 (L-LOC),而不是标记为独立实体(U-LOC)。还要注意的是对于 “near”和 “Alexanderplatz”的分割提取在我们的方法上得满分,而在基于BILOU方法上得0分。
以下是“near Alexanderplatz tonight”这句话的两种评分机制的比较:
extracted |
Simple tags(score) |
BILOU tags(score) |
[near Alexanderplatz](loc) [tonight](time) |
loc loc time (3) |
B-loc L-loc U-time (3) |
[near](loc) [Alexanderplatz](loc) [tonight](time) |
loc loc time(3) |
U-loc U-loc U-time (1) |
near [Alexanderplatz](loc) [tonight](time) |
O loc time (2) |
O U-loc U-time (1) |
[near](loc) Alexanderplatz [tonight](time) |
loc O time (2) |
U-loc O U-time (1) |
[near Alexanderplatz tonight](loc) |
loc loc loc (2) |
B-loc I-loc L-loc (1) |
通过使用评价脚本,你可以在一组故事测试集上评估你的训练模型:
rasa test core --stories test_stories.md --out results
该命令将会把失败的故事打印到results/failed_stories.md文件。如果至少有一个动作被错误预测,我们就认为任何故事都失败了。
另外,该命令将保存一个混淆矩阵到results/story_confmat.pdf文件中。对于你领域内的每个动作,混淆矩阵将展示一个action被预测正确的频率和一个错误的action被预测正确的频率。
下面是脚本的完整选项列表:
usage: rasa test core [-h] [-v] [-vv] [--quiet] [-m MODEL [MODEL ...]]
[-s STORIES] [--max-stories MAX_STORIES] [--out OUT]
[--e2e] [--endpoints ENDPOINTS]
[--fail-on-prediction-errors] [--url URL]
[--evaluate-model-directory]
optional arguments:
-h, --help show this help message and exit
-m MODEL [MODEL ...], --model MODEL [MODEL ...]
Path to a pre-trained model. If it is a 'tar.gz' file
that model file will be used. If it is a directory,
the latest model in that directory will be used
(exception: '--evaluate-model-directory' flag is set).
If multiple 'tar.gz' files are provided, all those
models will be compared. (default: [None])
-s STORIES, --stories STORIES
File or folder containing your test stories. (default:
data)
--max-stories MAX_STORIES
Maximum number of stories to test on. (default: None)
--out OUT Output path for any files created during the
evaluation. (default: results)
--e2e, --end-to-end Run an end-to-end evaluation for combined action and
intent prediction. Requires a story file in end-to-end
format. (default: False)
--endpoints ENDPOINTS
Configuration file for the connectors as a yml file.
(default: None)
--fail-on-prediction-errors
If a prediction error is encountered, an exception is
thrown. This can be used to validate stories during
tests, e.g. on travis. (default: False)
--url URL If supplied, downloads a story file from a URL and
trains on it. Fetches the data by sending a GET
request to the supplied URL. (default: None)
--evaluate-model-directory
Should be set to evaluate models trained via 'rasa
train core --config <config-1> <config-2>'. All models
in the provided directory are evaluated and compared
against each other. (default: False)
Python Logging Options:
-v, --verbose Be verbose. Sets logging level to INFO. (default:
None)
-vv, --debug Print lots of debugging statements. Sets logging level
to DEBUG. (default: None)
--quiet Be quiet! Sets logging level to WARNING. (default:
None)
为Core模型选择配置,或为特定策略选择超参数,你需要知道Rasa Core如何归纳之前从未出现过的会话。尤其是在项目刚开始时,没有足够真实的会话来训练机器人,更不想再分出一部分数据作为测试集。
Rasa Core提供一些脚本帮你选择和微调策略配置。一旦达到满意的结果,你就可以在你的完整数据集上训练你的最终配置。要做到这一点,你首先必须要为你的不同配置训练模型。创建两个(或更多)包含你想比较的策略的配置文件,然后使用训练脚本的compare模式来训练你的模型:
$ rasa train core -c config_1.yml config_2.yml \
-d domain.yml -s stories_folder --out comparison_models --runs 3 \
--percentages 0 5 25 50 70 95
对于提供的每个策略配置,在训练数据中去掉你训练故事的0%、5%、25%、50%、70%和95%的的情况下,Rasa Core会进行多次训练。这样多次运行是为了保持结果一致。
此脚本完成后,你可以在compare模式下使用评估脚本去评估你刚刚训练的模型:
$ rasa test core -m comparison_models --stories stories_folder
--out comparison_results --evaluate-model-directory
这将评估所提供故事中的每个模型(也可以是训练或测试集),并绘制一些图表去显示哪个策略执行得最好。通过对全部故事进行评估,你可以衡量Rasa Core在故事集外的故事的预测情况。
要比较单个策略,要创建仅包含一个策略的配置文件。如果你不确定要比较哪些策略,我们建议你尝试EmbeddingPolicy 和KerasPolicy,看看那种策略更适合你。
注意
由于训练过程可能需要很长时间,我们建议以不被打断的方式在后台运行。
Rasa允许你进行端对端评估对话,运行测试对话并确保NLU和Core都能做出正确预测。
为此,你需要一些端到端格式的故事,其中包括NLU输出和原始文本。下面是一个例子:
## end-to-end story 1* greet: hello
- utter_ask_howcanhelp* inform: show me [chinese](cuisine) restaurants
- utter_ask_location* inform: in [Paris](location)
- utter_ask_price
如果您已将端到端故事保存为名为e2e_stories.md的文件,你可以通过运行下面命令评估你的模型:
$ rasa test --stories e2e_stories.md --e2e
注意
确保models文件下的模型文件组合了core和nlu模型。如果没有包含NLU模型,Core将使用默认值 RegexInterpreter.
文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程
文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你
文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_
文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行
文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try
文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用
文章浏览阅读236次。1研究内容消费在生产中占据十分重要的地位,是生产的最终目的和动力,是保持省内经济稳定快速发展的核心要素。预测河南省社会消费品零售总额,是进行宏观经济调控和消费体制改变创新的基础,是河南省内人民对美好的全面和谐社会的追求的要求,保持河南省经济稳定和可持续发展具有重要意义。本文建立灰色预测模型,利用MATLAB软件,预测出2019年~2023年河南省社会消费品零售总额预测值分别为21881...._灰色预测模型用什么软件
文章浏览阅读1.2k次。12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码一、为啥要使用第三方Log库,而不用平台自带的Log库首先要说明的是,在平时开发和调试中开发平台自带的“打印输出”已经足够了。但_log4qt
文章浏览阅读786次。全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。_计算机中对于全局观的
文章浏览阅读330次。一、CountDownLatch介绍CountDownLatch采用减法计算;是一个同步辅助工具类和CyclicBarrier类功能类似,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。二、CountDownLatch俩种应用场景: 场景一:所有线程在等待开始信号(startSignal.await()),主流程发出开始信号通知,既执行startSignal.countDown()方法后;所有线程才开始执行;每个线程执行完发出做完信号,既执行do..._countdownluach于cyclicbarrier的用法
文章浏览阅读508次。Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,_-自动化监控系统prometheus&grafana实战
文章浏览阅读4.7k次。输入关键字,可以通过键盘的搜索按钮完成搜索功能。_react search