这个demo是用rasa-nlu完成slot filling和intent classify,用rasa-core完成DM(dialogue management)和NLG(natural language generate)。demo完成的对话主要有办理套餐和查询话费和流量,其他意图做了default回答。demo是参考了_rasa_chatbot。_rasa_chatbot存在的问题,一是版本更新不及时,API没有做相应的更改;二是里面的story太少。 由于rasa社区最近版本更新很频繁,以前很多方法被弃用,而且还增加了好多新的功能,这个demo比较全面和及时。
rasa-nlu: 0.13.4
rasa-core: 0.11.4
rasa-core-sdk: 0.11.4
python bot.py train-nlu
total_word_feature_extractor.dat可去https://pan.baidu.com/s/1-ma0ndXBWL0rnbUqCAcL-w ,密码:lhi4 下载。nlu_model_config.yml中的pipeline可自定义,这里由于数据量较少,用了开源的方法和词向量。如果你的rasa_dataset_training.json上数据足够多,可以尝试使用nlu_embedding_config.yml配置来训练nlu model.
python bot.py train-dialogue
python -m rasa_core_sdk.endpoint --actions actions &
python -m rasa_core.train --online -o models/dialogue -d mobile_domain.yml -s data/mobile_story.md --endpoints endpoints.yml
python -m rasa_core_sdk.endpoint --actions actions &
python -m rasa_core.run --nlu models/nlu/default/current --core models/dialogue --endpoints endpoints.yml
python -m rasa_core_sdk.endpoint --actions actions &
python -m rasa_core.train --online -o models/dialogue -d mobile_domain.yml -s data/mobile_story.md --endpoints endpoints.yml
utils/re_story.py 是用来对mobile_story.md里面的故事进行重命名和重新计数
data/rasa_dataset_training.json 是通过一些规则自动生成的,节省很多人力。仓库是chatito_gen_nlu_data 具体用法可参考官方文档
最近自己开源了基于rasa-nlu的rasa-nlu-gao新增了四个自定义组件,具体用法和说明请参考上面rasa对话系统踩坑系列二和rasa对话系统踩坑记(三)。那下面就是介绍如何使用了。
pip install rasa-nlu-gao
python bot.py train-nlu-gao
python -m rasa_nlu_gao.server -c config_embedding_bilstm.yml --path models/nlu_gao/
后续rasa-nlu-gao会持续更新,也欢迎贡献。