rasa

rasa对话系统踩坑记(六)

2018-12-16  本文已影响0人  colin_gao

说是不更新的,觉得这个文章也只是自己的一个流水账式的踩坑记录,应该也没什么人关注。但最近好几个人给我提issure,发email,才知道原来现在国内也不少公司在关注并使用rasa(话说几个月前我用rasa的时候好像没那么多人关注的)。所以继续更新rasa-core相关的踩坑文章吧,而且最近rasa-core版本确实也变动了不少。

rasa_chatbot_cn这个demo中,开始使用的是rasa-core==0.11.4的版本,但因为最近的几个功能我升级到了0.12.3。这篇先说说,compare policy的实现。

之前的项目一直使用的是KerasPolicy,就算是自定义的policy也是继承自KerasPolicy。而KerasPolicy的模型很简单,只是单一的LSTM+Dense+softmax。导致的问题是我们需要不断地完善自己的story,把各种情况下的story进行补充,花费了大量的人工。

然后后面就在尝试使用EmbeddingPolicy,因为它综合了很多方法。


embeddint-dialogue-policy.png

EmbeddingPolicy包含以下的步骤:

所以EmbeddingPolicy效果上来说会比较好,但是它有个问题是耗时,而且尤其是官网的源码,它并没有使用GPU、没有充分利用CPU资源。这个问题我进行了改善,后续会分享。因为比较耗时耗资源,所以需要在小数量级上对policy进行比较。

下图是我在rasa_chatbot_cn上比较了KerasPolicy和EmbeddingPolicy的结果:

policy-compare.png

图中很明显可以看出policy的优劣。至于如何使用,首先需要建立要进行对比的policy.yml文件,这里分别是embed_policy.yml和keras_policy.yml文件。然后就是两个命令,一个是compare policy,一个是evaluate policy:

python -m rasa_core.train compare -c keras_policy.yml embed_policy.yml \
    -d mobile_domain.yml -s data/mobile_edit_story.md -o comparison_models/ --runs 3 --percentages \
    0 25 50 70
python -m rasa_core.evaluate compare -s data/mobile_edit_story.md --core comparison_models/ -o comparison_results/

具体的参数不做过多解释,官网有详细说明。原创文章,转载请说明出处

上一篇 下一篇

猜你喜欢

热点阅读