pydial代码框架介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31214097/article/details/84561592

pydial是一个人机对话管理系统 现只支持英文版,目标改成中文支持.

该对话系统是基于某个领域进行人机对话的系统,例如,在饭店,餐饮等领域进行对话.

1.policy module(训练政策模型)

人机对话可看成人与机器一个个轮回对话的过程.在传统的方法中我们可以手动进行编码规则,对用户的话语做出判断,随后决定回复哪一句,这样的问题是手工编写强度太大.

另一种是基于统计规则的模型. pydial库提供了一个强化学习的环境,可以让你在基于某种准则的情况下,计算系统回答的奖励函数,来调整对话中的策略,以便下次更好的进行应答. 强化学习主要包括4个元素,agent,环境状态,行为,奖励,例如小孩子走路,小孩子是agent,他通过行为走路(行为),从一个状态转化成了另外一个状态,如果走得好,就获得了奖励.例如获得一块巧克力,若走的不好,则没有,系统则可以通过反馈函数来不断调整他的行动,来每次获得最大的奖励函数,

pydial每次都是找到最优的策略,通过感官所处的环境, 直接输出下一步要采取的各种动作的概率, 然后根据概率采取行动。

使用了类似sarsa的算法 https://blog.csdn.net/aliceyangxi1987/article/details/73327378

通过加载不同的配置文件,可以使用不同的训练政策模型和准则. 基准准则文件在policy.py这个抽象类中,其余的回馈算法都是继承自这个类.

pydial train config/Tut-bcm-Multidomain.cfg 也可以在config文件中修改参数.

从config文件中读取配置信息 可以指定训练加载的policy.py文件或者随机抽取policy文件. 通过inpolicyfile文件的指引. 写入对应的policy文件中.在policy文件中都有指定加载对应的哪个Policy.py文件.

2.语义生成(解析用户话语) 统一归结到semi文档中,

2.1 基于手工编写准则的原则 提供一系列的正则表达式,比如hello hi 都转义成hello  这个准则的抽象类在RegexSemI.py中.

将用户的信息分类到指定的类中,pydial中运用了svm方法.将用户输入的语义信息映射到高维后进行线性分类. 

3 (NLG)生成回应内容.

3.1也是采用手工编写的方法.将槽中的值进行组装返回,

inform(name=$X,type=$U) : "$X serves $U food.";
inform(name=$X,type=$U,$Y=$O) : "$X is a nice $bU %$Y_inf($O).";
inform(name=$X,type=$U,$Y=$O,$Z=$P) : "$X is a nice $U, %$Y_inf($O) and %$Z_inf($P).";

3.2 采用RNN网络模型.

one-hot编码. 又叫一位有效编码,主要是采用N位状态寄存器对N个状态进行编码,每个状态都有他独立的寄存器位,并且在任意时候都只有一位有效.

One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。

例如有red和green两个标签 red可以标记位[1,0] 而green可以标记位[0,1] 则red red green 可以表示为[1,0],[1,0],[0.1]https://blog.csdn.net/chary8088/artticle/details/79032223

采用RNN模型来生成语言, t时刻 输入x(t) 随后产生状态s(t) 和输出状态y(t) 随后在t+1时刻, 输入x(t+1)  此时产生s(t+1) 然而此时的y(t+1) 根据s(t) 和 s(t+1) 共同来产生.

LSTM长短行记忆,可以回忆起久远记忆,多出了3个控制器,输入控制,输出控制,忘记控制.将粗线代表原来的主线,如果此时的分线剧情对主线比较重要,则按照重要程度写入主线剧情,如果此时的分线剧情更改了之间剧情的想法,忘记控制就会将之前的主线剧情忘记,按比例替换成新剧情.  有3个门,gate 第一个gate 控制是否读取当前输入的x, forget gate控制以前的mem是否遗忘部分,输出gate用户控制当前状态的输出.

在该文件夹下的semo,控制NLG的生成.

整个pydial 采用了主题驱动,由对应的训练政策来驱动对应的semi解析用户语义,和semo编码用户语义.产生系统回话.

belief state 对话系统的当前置信状态,例如inform(cheap,time),belief tracking 对话状态追踪,理解用户输入并且根据上下文来更新belief state

猜你喜欢

转载自blog.csdn.net/qq_31214097/article/details/84561592