rasa

  • rasa nlu
  • rasa core

基于故事的对话管理,包括解析故事并生成对话系统中的对话管理模型(DM),输出系统决策。

简单示例

  1. NLU data
  2. responses
  3. Stories

(用户意图 -> 反馈 -> 用户意图 -> 反馈..) 由用户意图和反馈组成的对话流图

  1. Forms

表单,收集用户的信息

  1. Rules

当用户触发某个intent的时候,返回特定的action

最佳实践

CDD(对话测试驱动开发)

NLU 数据

generating nlu data

  • 避免 intent 混淆
    • 拆分实体和意图
  • 提升实体识别效果
    • 预训练的识别识别器

    SpacyEntityExtractor和DucklingEntityExtractor

    • 正则
    • 查找表
    • 同义词(同一个表达的不同说法,类似norm value的概念)
  • 处理边界case
    • 发音/拼写错误

    CountVectorFeaturizer

    • 定义UNKNOWN意图,用来识别没有定义的意图。

对话数据

todo: writing stories

  • 设计Stories

设计对话流程,包括预期内的回复流程 & 不符合预期的对话流程

  • 写规则
    规则是一种将意图映射到响应的简单方法,为这些消息指定固定的答案。

rules:

  • rule: Greeting Rule
    steps:
    • intents: greet
    • action: utter_greet

多轮交互需要使用story来定义。

stories:
story: Greeting and ask user how they're doing
steps:
- intent: greet
- action: utter_greet
- action: utter_ask_how_doing
- intent: doing_great
- action: utter_happy

管理对话流图

管道组件

rasa components
语言模型

  • MitieNLP
  • SpacyNLP more
  • Tokenizer
    intent_tokenization_flag
  • WhitespaeTokenizer
  • JiebaTokenizer
    ...

特征
所有的特征化器都可以返回两种不同的特征:序列特征和句子特征。

  • 序列特征是一个大小为 的矩阵(number-of-tokens x feature-dimension)
  • 句子特征由一个大小为 的矩阵表示(1 x feature-dimension)

意图识别

  • MitieIntentClassifier
  • SklearnIntentClassifier
  • DIETClassifier(包括实体识别)
  • FallbackClassifier

实体提取
选择器

posted @ 2022-01-04 14:26  _无支祁  阅读(319)  评论(0)    收藏  举报