模块化对话系统

模块化的对话系统主要包括四个模块:

  • 自然语言理解模块(NLU)
  • 对话状态跟踪模块(DST)
  • 对话策略学习模块(PL)
  • 自然语言生成模块(NLG)

其中DST和PL又被称为对话管理模块(DM),而且通常面向任务的系统也与外部知识库(KB)进行交互以检索有关目标任务的基本知识。
image.png

ref:

自然语言理解模块(NLU)

eg: recommand a movie at Golden Vllage tonight.
该模块将原始用户消息转换为语义槽(Golden Vllage),以及域(movie)和用户意图(find a movie)的分类。主要的任务是槽位识别和意图分类,意图识别基本都是分类问题,需要先确定有限个集合,槽值填充可以看作是一个序列到一个序列的标记任务。二者还可以联合学习(Joint Intent Classification and Slot Filling),共享某些层。

对话状态跟踪模块(DST)

该模块基于当前输入和对话历史不断迭代更新对话状态,包括相关的用户动作和槽值对。方法主要有:

  • 基于规则
  • 部分可观察马尔可夫
  • 循环神经网络(RNN)

    对话策略学习模块(PL)

    其基本目标是根据当前的对话状态选择合适的对话策略,选择合适的动作,进而生成相应的回复。这些动作一般也是预定义好的,是有限集合的选择。
    image.png

    自然语言生成模块(NLG)

    自然语言生成就是在系统经过自然语言理解、对话状态追踪以及对话策略后,根据学习到的策略生成对话回复。
    image.png

    端到端对话系统

    优点,场景迁移会更简单一点,避免了模块化容易产生错误累积的弊端。
    缺点:不好优化。
    在端到端的对话系统中,实际上还是有各个功能相对独立的模块,不过各个独立的模块是由神经网络组成。用户输入的自然语言经过意图识别网络的处理后进入策略网络,状态追踪器处理后得到的结果进入策略网络并进入外部数据库进行关键字查询。数据库中查询到的结果和策略网络中学习到的内容再反馈到生成网络,将最终的反馈结果以自然语言的形式展现给用户。如上图所示,用户输入想要吃的食物,输入进入意图识别网络,将语句分解为“Can I have ”,处理后的信息进入策略网络;状态追踪器处理用户输入并通过相关系数确定菜系,交付策略网络并进入数据库进行查询;数据库查询后的结果返回策略网络,生成网络将数据库中查询到的字段与策略网络中生成的语句相结合,最后将完整的一句回复返回用户。
    image.png

问题:

pipeline的方法和端到端的方法的优缺点

pipeline缺点:

  • 各个模块相对独立,但是相依赖,会导致错误累计。
  • 大部分是定制化的,场景迁移起来会比较难。

end-to-end缺点

  • 不好优化。