一个基于Rasa Stack, 带有WebUI的知识问答机器人
[后端](RasaChatBot) [前端](RasaChatBot_ui)
## 功能截图
![Demo][1]
## 技术架构
![pipeline][2]
[参考](https://rasa.com/docs/get_started_step1/)
### 模块化
Action - Rasa NLU - Rasa Core - Web Server
### Context保存
将所需要的entities放入不同slot中(通过Rasa-core实现)
### 基于意图(Intent-based)的对话
这是当NLP算法使用intents和entities进行对话时,通过识别用户声明中的名词和动词,然后与它的dictionary交叉引用,让bot可以执行有效的操作。
### ...
## Rasa NLU
使用自然语言理解进行意图识别和实体提取
### Example:
rquest(part)
`"张青红的生日什么时候"`
response
```json
{
"intent": "view_defendant_data",
"entities": {
"defendant" : "张青红",
"item" : "生日"
}
}
```
### Pipeline
假设我们在config文件中这样设置pipeline`"pipeline": ["Component A", "Component B", "Last Component"]`
那么其生命周期如下:
![LifeCircle][3]
在`Component A`调用开始之前, rasa nlu会首先根据nlu的训练集创建一个Context(no more than a python dict). Context用于在各个Component之间传递消息。 比如, 我们可以让`Component A`去根据训练集计算特征向量, 训练完成后将结果保存在Context中, 传递到下一个Component。 `Component B` 可以获取这些特征向量, 并根据其做意图分类。在所有Component完成后, 最后的Context中保存这个模型的元数据(metadata).
``` yaml
language: "zh"
pipeline:
- name: "nlp_mitie"
model: "data/total_word_feature_extractor_zh.dat"
- name: "tokenizer_jieba"
- name: "ner_mitie"
- name: "ner_synonyms"
- name: "intent_entity_featurizer_regex"
- name: "intent_featurizer_mitie"
- name: "intent_classifier_sklearn"
```
MITIE是一个MIT信息提取库,该库使用了最先进的统计机器学习工具构建。它类似于word2vec中的word embedding。MITIE模型,在NLU(自然语言理解)系统中,完成实体识别和意图提示的任务。
”nlp_mitie”初始化MITIE
”tokenizer_jieba”用jieba来做分词
”ner_mitie”和”ner_synonyms”做实体识别
”intent_featurizer_mitie”为意图识别做特征提取”intent_classifier_sklearn”使用sklearn做意图识别的分类。
### Training
我们的训练集`data.json`
``` json
{
"rasa_nlu_data": {
"common_examples": [
{
"text": "张青红的生日什么时候",
"intent": "viewDefendantData",
"entities": [
{
"start": 4,
"end": 6,
"value": "生日",
"entity": "item"
},
{
"start": 0,
"end": 3,
"value": "张青红",
"entity": "defendant"
}
]
}
]
}
}
```
也可以通过[可视化工具(rasa-nlu-trainer)](https://github.com/RasaHQ/rasa-nlu-trainer)进行实体的标注等
![Rasa-nlu-trainer][5]
### Run as a service
``` bash
curl -XPOST localhost:5000/parse -d '{"q":"张青红的生日是什么时候", "project":"CriminalMiner", "model":"nlu"}'
```
## Rasa Core
用于对话管理
### 技术架构
![Core技术架构][6]
1. Rasa_Core首先接收到信息, 将信息传递给`Interpreter`, `Interpreter`将信息打包为一个字典(`dict`), 这个`dict`包括原始信息(`original text`), 意图(`intent`)的找到的所有实体(`entities`)
2. `Tracker`保持对话的状态.
3. `Policy` 接收到当前`Tracker`的状态
4. `Policy`选择执行哪个动作(`Action`)
5. 被选中的`Action`同时被`Tracker`记录
6. `Action`执行后产生回应
### Training
基于对话
```
## story_01
* greet
- utter_greet
## story_02
* goodbye
- utter_goodbye
## story_03
* viewCaseDefendantsNum
- action_view_case_defendants_num
## story_04
* viewCaseDefendants
- action_view_case_defendants
## story_05
* viewCase
- utter_ask_case
```
### Interactive Learning
在交互式学习模式下, 我们可以为Bot对话提供反馈. 这是一个非常强有力的方式去检测Bot能做什么, 同时也是修改错误最简单的方式. 基于机器学习的对话的有点就在于当bot不知道如何回答或者回答错误时, 我们可以及时的反馈给bot. 有些人称这种方式为[Software 2.0](https://medium.com/@karpathy/software-2-0-a64152b37c35)
同时在这个训练过程中, 是可视化的, 在我看来, 是个究极阉割版的[TensorBoard](https://www.tensorflow.org/guide/summaries_and_tensorboard)
### Action
进行数据校验, 和数据交互.
采用Py2Neo与数据库(Neo4j)进行交互.
[1]: http://assets.bingware.cn/2018/12/3664281616.png
[2]: http://assets.bingware.cn/2018/12/4005670685.png
[3]: http://assets.bingware.cn/2018/12/4136964647.png
[4]: http://assets.bingware.cn/2018/12/923236055.jpg
[5]: http://assets.bingware.cn/2018/12/2537130720.jpg
[6]: http://assets.bingware.cn/2018/12/1133622055.png
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于Rasa Stack带有WebUI的知识问答机器人系统python源码+数据集+模型.zip <资源说明> 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设或者课设、作业,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96.5分,放心下载使用! 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
基于Rasa Stack带有WebUI的知识问答机器人系统python源码+数据集+模型.zip (76个子文件)
training_online.py 1KB
actions.py 1KB
data
criminal_domain.yml 589B
.gitattributes 72B
stories.md 10KB
nlu_interactive.md 230B
total_word_feature_extractor_zh.dat 133B
data.json 24KB
nlu.md 0B
endpoints.yml 87B
前端
RasaChatBot_ui
socket_example.py 0B
webchat.js 369KB
js
neo4jd3.min.js 25KB
neo4jd3.js 117KB
d3.min.js 210KB
LICENSE 1KB
chat_button.png 11KB
README.html 63KB
render.py 557B
css
neo4jd3.min.css 2KB
bootstrap.min.css 118KB
font-awesome.min.css 30KB
neo4jd3.css 2KB
avatar.png 16KB
robotic.png 15KB
requirements.txt 29B
index.html 910B
.gitignore 1KB
json
neo4jData.json 2KB
index.html.tpl 910B
run_http_server.py 309B
Documentation.md 8KB
imgs
webwxgetmsgimg.jpeg 19KB
start_server.bash 62B
app.html 7KB
README.md 47B
fonts
FontAwesome.otf 132KB
fontawesome-webfont.eot 162KB
fontawesome-webfont.woff 96KB
fontawesome-webfont.woff2 75KB
fontawesome-webfont.svg 434KB
fontawesome-webfont.ttf 162KB
core_train.bash 127B
domain.yml 590B
action_run.bash 230B
actions_with_neo4j.py 6KB
credentials.yml 74B
nlu_train.bash 172B
core_interactive_train.bash 189B
models
dialogue
policy_metadata.json 1KB
domain.json 699B
domain.yml 1000B
policy_2_MemoizationPolicy
memorized_turns.json 180KB
featurizer.json 280B
policy_3_FormPolicy
memorized_turns.json 38B
featurizer.json 280B
policy_1_FallbackPolicy
fallback_policy.json 104B
policy_0_KerasPolicy
keras_policy.json 48B
keras_model.h5 80KB
featurizer.json 991B
CriminalMiner
nlu
intent_classifier_sklearn.pkl 110KB
training_data.json 23KB
entity_extractor.dat 5.81MB
metadata.json 2KB
entity_synonyms.json 207B
nlu_run.bash 78B
requirements.yml 4KB
dialog_manager.py 1KB
story_graph.dot 7KB
data_processing
__init__.py 113B
neo4j_demo.json 11KB
data_import.py 4KB
README.md 5KB
win-requirements.txt 3KB
core_run.bash 177B
config
config.yml 277B
共 76 条
- 1
资源评论
coderᅟᅠ
- 粉丝: 3996
- 资源: 1162
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java-leetcode题解之Implement Magic Dictionary.java
- 微信 QQ TIM 防止撤回插件.v1.9.zip
- java-leetcode题解之Hamming Distance.java
- java-leetcode题解之Group Anagrams.java
- comsol模型,变压器匝间短路5%,电磁场,二维模型,瞬态 包括电流变化曲线,正常与匝短后的绕组上的轴向磁密和辐向磁密波形与分
- 三相PWM整流器双闭环仿真模型 模型中包含:主电路,坐标变,电压电流双环PI控制器,SVPWM控制 1.功率因数1,THD仅1
- 虛拟同步发电机SG离并网(预同步)切与自适应 转动惯量控制策略
- 某永磁同步电机motorcad仿真流程,很详细 录制video+文档
- Matlab Simulink 对事件触发控制进行仿真并使其最终结果达到稳定
- MATLAB 风力发电系统低电压穿越-串电阻策略 低电压穿越 双馈风力发电机
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功