# 基于RASA+Flask框架构建的中文任务型对话机器人 Basic Chatbot using RASA + Flask
## 基本介绍
用新版rasa框架(1.0.3)构建了一个简单的旅游信息咨询对话机器人,该机器人功能如下:
1) 查询给定省份的5A级旅游景点
2) 介绍旅游景点
3)推荐各个省份的特色美食
并结合FLASK做了一个简单的UI界面。
基本环境: python 3.7; rasa 1.0.3
## 环境配置
安装requirements.txt中列出的包(可能有些没有列出,到时候报错提示缺什么就装什么就好)
```
pip install -r requirements.txt
```
window环境下mitie可能不是很好安装,可以参考 http://rowl1ng.com/%E6%8A%80%E6%9C%AF/chatbot.html
## 文件说明
- data目录下存储训练所需数据,nlu.md是nlu模块的训练数据,story.md是core模块的训练数据,训练采用预训练词向量,total_word_feature_extractor.dat文件较大,需要自己下载放到这个目录下 https://github.com/howl-anderson/MITIE_Chinese_Wikipedia_corpus/releases
- models 存放训练完的模型。新版rasa直接一起训练两个模型并打包。之后调用flask ui界面前需要把模型解压缩,形成core和nlu子文件夹
- static UI界面需要的代码
- static ori 初始的比较简单的一个UI界面, 可以忽略
- templates UI界面的模板设置
- actions.py 自定义的机器人动作
- config.yml core模型policy设定和nlu模型pipeline的设定
- domain.yml 定义机器人整体操作环境
- endpoints.yml 运行自定义action需要
- web_config.py, web_forms.py, web_model.py, web_run.py Flask UI界面文件,web_flask_main.py是初始的比较简单的一个界面,可以忽略
- rasa introduction.pptx 学习rasa过程整理的一个ppt,对rasa框架以及这个机器人demo了进行简单介绍
## 使用说明
### 模型训练
```
rasa train
```
### 终端启用对话
1. 需要在一个终端运行action
```
rasa run actions --actions actions
```
2. 在另外一个终端运行模型
```
rasa shell -m models/20190618-115023.tar.gz (your model name) --endpoints endpoints.yml
```
### 交互式学习
1. 需要在一个终端运行action
```
rasa run actions --actions actions
```
2. 在另外一个终端运行模型
```
rasa interactive -m models/20190618-115023.tar.gz (your model name) --endpoints endpoints.yml
```
### 启用UI界面
1. 需要在一个终端运行action
```
rasa run actions --actions actions
```
2. 在另外一个终端运行flask
```
python web_run.py
```
打开给出的url即可开始对话
## TODO
- 增大数据量。
- 增加功能
- 分词、实体识别有待完善,较长的景点名称会出现识别错误。
- 支持在线测试训练
## note
rasa interactive learning的时候之前不定时会遇到一个text wrapper error: invalid width,后来采取的策略是根据报错提示,进到这个函数源码 把对应的判断条件去掉就好了。
网上很多资源都是基于rasa旧的版本,主要差别在于训练模型的命令,之前的是core模型和nlu模型分开训练,以及一些函数名称变更,这些训练的时候会出来提示,问题不是很大
## 建议学习路径
1. 官方文档: https://rasa.com/docs/
2. 找一个比较完整的demo对照着学习, 比如我这个hhhh
3. 对于rasa模型pipeline及policy可以看源码, 了解原理 https://github.com/RasaHQ/rasa
4. 自己上手写一个demo, 实践过程逐渐深入
## 参考资料
官方文档: https://rasa.com/docs/
源码: https://github.com/RasaHQ/rasa
Rasa使用指南01: https://terrifyzhao.github.io/2018/09/17/Rasa%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%9701.html
Rasa使用指南02: https://terrifyzhao.github.io/2019/02/26/Rasa%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%9702.html
用Rasa NLU构建自己的中文NLU系统: http://www.crownpku.com/2017/07/27/%E7%94%A8Rasa_NLU%E6%9E%84%E5%BB%BA%E8%87%AA%E5%B7%B1%E7%9A%84%E4%B8%AD%E6%96%87NLU%E7%B3%BB%E7%BB%9F.html
UI界面参考: https://github.com/LutherTeh/Insight_chatbot
医院信息咨询机器人demo: https://github.com/RasaHQ/medicare_locator
中文例子:https://github.com/crownpku/Rasa_NLU_Chi
天气查询机器人:https://github.com/howl-anderson/WeatherBot
## Paper
Bocklisch, Tom, et al. "Rasa: Open source language understanding and dialogue management." arXiv preprint arXiv:1712.05181 (2017). (整体介绍, 各个部分使用的方法)
J. D.Williams, K. Asadi, and G. Zweig. Hybrid code networks: practical and efficient end-to-end
dialog control with supervised and reinforcement learning. arXiv preprint arXiv:1702.03274,
2017. (core管理模块与这篇论文相似, 但添加了一些近些年的方法)
Vlasov, Vladimir, Akela Drissner-Schmid, and Alan Nichol. "Few-Shot Generalization Across Dialogue Tasks." arXiv preprint arXiv:1811.11707 (2018). (处理uncooperative user behavior)
Williams, Jason D., and Geoffrey Zweig. "End-to-end lstm-based dialog control optimized with supervised and reinforcement learning." arXiv preprint arXiv:1606.01269 (2016).
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【资源说明】 基于Python+Flask+rasa的中文任务型对话机器人源码+部署文档+全部数据资料 高分项目.zip基于Python+Flask+rasa的中文任务型对话机器人源码+部署文档+全部数据资料 高分项目.zip 【备注】 1、该项目是个人高分项目源码,已获导师指导认可通过,答辩评审分达到95分 2、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 3、本项目适合计算机相关专业(人工智能、通信工程、自动化、电子信息、物联网等)的在校学生、老师或者企业员工下载使用,也可作为毕业设计、课程设计、作业、项目初期立项演示等,当然也适合小白学习进阶。 4、如果基础还行,可以在此代码基础上进行修改,以实现其他功能,也可直接用于毕设、课设、作业等。 欢迎下载,沟通交流,互相学习,共同进步!
资源推荐
资源详情
资源评论
收起资源包目录
基于Python+Flask+rasa的中文任务型对话机器人源码+部署文档+全部数据资料 高分项目.zip (108个子文件)
style.css 13KB
chat_interface.css 4KB
style.css 295B
temporary.css 231B
style.css~ 9KB
component_2_MitieEntityExtractor.dat 5.81MB
story_graph.dot 2KB
懂你.gif 127KB
猪猪.gif 97KB
20190618-115023.tar.gz 419KB
keras_model.h5 98KB
index.html 1KB
base.html 1KB
request.html 1003B
request_ori.html 927B
1111.jpg 322KB
1111.jpg 322KB
1111.jpg 322KB
22.jpg 216KB
back.jpg 126KB
机器人.jpg 30KB
猪.jpg 21KB
userimage.jpg 3KB
userimage.jpg 3KB
jquery.timeago.js 7KB
bind.js 2KB
training_data.json 28KB
memorized_turns.json 21KB
metadata.json 2KB
featurizer.json 1KB
metadata.json 1KB
domain.json 1KB
fingerprint.json 364B
featurizer.json 280B
featurizer.json 280B
fallback_policy.json 116B
keras_policy.json 65B
memorized_turns.json 55B
mapping_policy.json 19B
stories.md 6KB
README.md 5KB
nlu.md 5KB
Flask系统部署文档.md 3KB
Hybrid Code Networks practical and efficient end-to-end dialog control.pdf 1.77MB
End-to-end LSTM-based dialog control optimized with.pdf 1.28MB
rasa introduction.pdf 1.14MB
Few-Shot Generalization Across Dialogue Tasks.pdf 794KB
Rasa Open Source Language Understanding and.pdf 266KB
component_5_SklearnIntentClassifier_classifier.pkl 301KB
component_5_SklearnIntentClassifier_encoder.pkl 208B
keras_policy.tf_config.pkl 4B
bothead.png 899B
bothead.png 899B
actions.py 7KB
web_flask_main.py 1KB
web_run.py 780B
web_models.py 487B
web_forms.py 253B
web_config.py 24B
__init__.py 0B
actions.cpython-37.pyc 7KB
web_models.cpython-37.pyc 671B
web_forms.cpython-37.pyc 558B
__init__.cpython-37.pyc 186B
20190618-115023.tar 6.29MB
spots.txt 5KB
inform city.txt 889B
江苏.txt 462B
浙江.txt 282B
四川.txt 251B
广东.txt 249B
湖北.txt 241B
新疆.txt 233B
安徽.txt 229B
province.txt 223B
江西.txt 220B
河北.txt 207B
山西.txt 202B
山东.txt 202B
河南.txt 189B
云南.txt 166B
重庆.txt 148B
福建.txt 146B
海南.txt 146B
吉林.txt 140B
贵州.txt 140B
陕西.txt 137B
requirements.txt 112B
广西.txt 103B
北京.txt 102B
内蒙古.txt 100B
黑龙江.txt 100B
辽宁.txt 91B
宁夏.txt 87B
湖南.txt 76B
上海.txt 65B
甘肃.txt 51B
青海.txt 50B
西藏.txt 48B
天津.txt 47B
共 108 条
- 1
- 2
资源评论
- yxz7912302024-12-03资源中能够借鉴的内容很多,值得学习的地方也很多,大家一起进步!
不走小道
- 粉丝: 3365
- 资源: 5055
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功