本文继续围绕工业级业务对话平台和框架Rasa对DAG图中的核心组件TEDPolicy的源码进行解析。
一、TEDPolicy组件源码解析
TEDPolicy组件使用了模型TED(Transformer Embedding Dialogue),TED架构由以下几个部分组成:
- 把用户输入(用户意图+实体),对话历史信息,对话session中保存状态信息的slots,Rasa active forms连接组合成一个input vector,传递给Transformer前面的embedding layer
- 通过embedding layer输入给Transformer进行处理
- 使用一个dense layer对Transformer的输出进行处理从而获得对话的embedding
- 使用一个dense layer对系统响应信息进行embedding处理
- 在对话embedding和系统响应信息embedding之间计算相似度,这一步是基于StarSpace提供的算法
另外在前面介绍Rasa3.0时提到了end-to-end learning的方式,如上面的DAG图所示,如果使用end-to-end learning的方式,则用户输入信息经过Featurizers组件(CountVectorFeaturizer1和CountVectorFeaturizer2)的处理后,会直接把输出的features传给TEDPolicy组件进行处理,在这种情况下,并没有使用另外一个核心组件DIETClassifier输出的intents和entities。
- 关于class “TEDPolicy”
TEDPolicy继承自Policy,而Policy是所有对话策略的父类,它实现了GraphComponent接口。
在Policy中定义的方法supported_data,在Policy的子类中可以根据需要进行重写,譬如需要支持rule data或者两种类型的data都需要支持: