设计多轮对话


多轮对话分为状态机与槽填充两种设计工具

多轮对话-状态机

流程设计工具(又称状态机)根据不同的意图分支,
结合有条件与无条件的节点跳转,可以形成最贴合业务逻辑的设计,
适合逻辑清晰,流程较长的业务。例如:引导用户多次选择的营销推荐业务

  • 状态机由意图节点组成
    • 意图 代表用户表达的意图
    • 节点 代表需要给出的回应
  • 对话系统按照箭头指向的节点进行流转,直到再也没有继续下去的箭头(意图),则状态机结束
    • 节点后续的意图可以指向自己,形成有条件的循环

特殊的意图

  • $
    1. 代表无需匹配意图的直接跳转,
    2. 如果从一个节点出发有多个$,对话系统会随机选择一个进行跳转
    3. 返回意图指向节点的回答内容
    4. ** 注意: A >> $ >> B,系统只会给出B节点的回答,A节点内设置的回答将被忽略
  • AUTO
    1. 终端应用与对话系统配合,发送AUTO意图,
    2. 终端应用可以使用回调接口,控制状态机在没有用户输入的情况下自动跳转
    3. 可形成类似于自动串接的效果
  • default
    1. 节点转出的特殊意图之一(每个节点后可选择添加),
    2. 如果没有匹配到此节点转出的其它意图时,系统会跳转到default意图指向的节点
    3. default 意图 不能设在root
  • null
    1. root节点出发可以设置一个null意图跳转到一个null节点,
    2. 作为在状态机里没有匹配到任何意图(包括节点没有设置转出的default意图)时的默认回答
    3. null 节点 只能设在root 并且null 节点 instraction 必须命名为null
  • useraction
    • 经过模型训练,系统内置对用户常见表达的自动解析,无需填写任何相似问法(语料),填写意图时使用英文
      1. accept(接受)
      2. affirm(确认/肯定)
      3. bye(再见)
      4. hello(打招呼)
      5. negate(否定)
      6. reject(拒绝)
      7. repeatyou(要求复述机器人的话)
      8. repeatme(要求复述用户的话)
      9. reqalts(还有什么)
      10. reqmore(进一步解释)
      11. restart(换话题)
      12. thankyou(感谢)
      13. sorry(抱歉)
      14. last(上一步)
      15. next(下一步)
      16. former(前者)
      17. middle(中间的)
      18. latter(后者)
      19. ordinal(正数第几个)
      20. lanidro(倒数第几个)

编辑状态机

  • 申请编辑
    1. 同一个状态机同一时间只允许一个账号进行修改,
    2. 如果其它账号在修改,系统会告知申请者哪个账号在编辑该状态机
  • 添加节点
    1. 添加后,单击节点,在右侧的窗口为节点改名(否则不允许保存),
    2. 改名后记得在左面的窗口点**更新节点**
  • 添加意图
    1. 从一个节点连线到另一个节点,
    2. 在空白处点一下,然后点击意图,
    3. 在右侧的窗口为意图改名(否则不允许保存),
    4. 改名后记得在左面的窗口点**更新意图**
  • 保存
  • 退出编辑

注意事项:

  1. 意图和节点名称设置要合理,不能太长,可以是意图和回答的概括
  2. 节点名称不可重复
  3. 相同的意图可以在状态机中多处重复出现,在意图管理中,只会出现一条
  4. 每个意图应该有明确的不同含义,不要出现内容相似的意图
  5. 如果修改错误,可以撤销所有未保存的操作
  6. 如果发现状态机编辑窗口显示不正确,可以点击 刷新 按钮
  7. 有些图是不被接受的,会导致状态机无法保存
    1. - 孤立节点(没有从其它节点过来的任何意图),root除外

.


多轮对话-意图管理

  • 意图可以编辑详细的内容,但其本身只能在状态机或槽填充中删除
  • 意图可以进一步编辑以下组成元素
    • 相似问法
      1. 与简单问答一样,用于匹配意图
    • 匹配实体
      1. 与相似问法共同用于匹配意图,仅在状态机生成的意图中可使用
    • 优先匹配
      1. 比相似问法的匹配优先级更高,为提高命中概率设计
      2. 有可能破坏整体知识系统匹配的平衡性,请谨慎使用,
      3. 建议仅用于最重要的需要优先匹配的知识,
      4. 支持按规则编写语料,填写示例如下:
      5. 带我去|我要去|怎么去|导航去#LOC
      6. 其中 LOC 是某个词典的名称,含有所有的导航点名称

.


多轮对话-节点管理

  • 节点可以编辑详细的内容,但其本身只能在状态机或槽填充中删除
  • 节点可以进一步编辑以下组成元素
    • 可选的应答,与简单问答中的一样
    • 触发人机协作,与简单问答中的一样
    • 借用其他槽,仅在由槽填充生成的节点中使用,可以借用其他槽的应答

.


多轮对话-槽填充

填充设计工具(又称槽填充)能够根据槽信息的填写,结合实体识别与词库,降低设计复杂度,同时保证足够的知识覆盖,适合设计需要收集较多信息,但没有强制顺序的业务。例如:买票需要收集出发时间,出发地点,购买平台等多个信息

填写槽内容

  • 填写格式:使用../../..分隔不同槽内容,系统会自动展开成多个意图与节点,如果要合并一组槽内容为一个意图,可以插入 槽值#词典名#,或插入 槽值#实体#,或槽值#映射关系名# ),注意节点不会合并
    1. 例如:A区#安检口#/B区#安检口#/C区#安检口#,3个会合并成一个意图
    2. 例如:A区/B区/C区,会生成3个意图
    其中 安检口 是已经设置好的一个词典
  • 以下是合并后的意图,可以看出不同主词的相似问法都添加在一个意图里面
  • 但节点还是分开维护的,会话引擎的槽填充模块会自动区分匹配的实体内容使用不同节点的响应

.

在槽内容中使用 映射关系,进行范围匹配

先定义映射关系

槽内容中按照以下格式填写

.


george.sun 2021年11月30日 16:54
目录