一个基于Rasa Stack 带有WebUI的中文知识问答机器人

OverView

一个基于Rasa Stack, 带有WebUI的知识问答机器人

后端 前端

功能截图

技术架构


参考

模块化

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

{
  "intent": "view_defendant_data",
  "entities": {
    "defendant" : "张青红",
    "item" : "生日"
  }
}

Pipeline

假设我们在config文件中这样设置pipeline"pipeline": ["Component A", "Component B", "Last Component"]
那么其生命周期如下:


Component A调用开始之前, rasa nlu会首先根据nlu的训练集创建一个Context(no more than a python dict). Context用于在各个Component之间传递消息。 比如, 我们可以让Component A去根据训练集计算特征向量, 训练完成后将结果保存在Context中, 传递到下一个Component。 Component B 可以获取这些特征向量, 并根据其做意图分类。在所有Component完成后, 最后的Context中保存这个模型的元数据(metadata).

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

{
  "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)进行实体的标注等

Run as a service

curl -XPOST localhost:5000/parse -d '{"q":"张青红的生日是什么时候", "project":"CriminalMiner", "model":"nlu"}'

Rasa Core

用于对话管理

技术架构

  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

同时在这个训练过程中, 是可视化的, 在我看来, 是个究极阉割版的TensorBoard

Action

进行数据校验, 和数据交互.
采用Py2Neo与数据库(Neo4j)进行交互.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容