pydial启动流程

通过加载配置文件进行启动,进入整个项目的根文件,pydial.py文件,加载的是这个文件中的chat_command的根文件,其中调用了整个项目的

initialise(configId, configfile, seed, "chat", trainerrorrate=trainerrorrate)

来进行预加载的初始化,在初始化的函数中,从整个配置文件中读取出,当前是否是单个领域,领域是什么.最多限制的会话代理个数是多少。 如下便是从general模块中读取出来的一些参数。

  isSingleDomain = getOptionalConfigBool("singledomain", isSingleDomain, "GENERAL")
    isSingleModel = getOptionalConfigBool("singlemodel", False, "policycommittee")
    traceDialog    = getOptionalConfigInt("tracedialog", tracedialog, "GENERAL")
    domain         = getOptionalConfigVar("domains", '', "GENERAL")

可看出读取的是

[GENERAL]
domains = CamRestaurants,CamHotels
isSingleDomain=False
tracedialog = 1

随后通过section的匹配,例如policy_CamRestaurants来加载对应领域的训练政策,开始对话是否用hello等。

[policy_CamRestaurants]
belieftype = focus
useconfreq = False
learning = False
policytype = hdc
startwithhello = False

加载配置完成以后,开始调用TextHub模块中的consoleHub函数。

在consoleHub中开启代理用户会话。即其中的

sys_act = self.agent.start_call(session_id='texthub_dialog').模块。

start_call表示开始的是第一次会话,因此没有用户的输入,在call函数中,进行当前领域的加载,置信度状态的分析和最终用户动作的返回。

随后的持续会话一直调用的是continue_call函数,

整个函数的调用使用了如下的流程。

Works through topictracking > semi belief > policy > semo > evaluation -- for turns > 0

在该函数中,便有用户对话的输入,和start_call函数相同,第一步首先进行验证,随后判断若是达到了最大用户代理数,则返回bye. 随后进行用户输入话语置信的分析:

state = self.semi_belief_manager.update_belief_state(ASR_obs=asr_info, sys_act=prev_sys_act,
                                                     dstring=currentDomain, turn=self.currentTurn,hub_id = self.hub_id, sim_lvl=self.sim_level)

根据对话决策,将当前分析的置信度输入,输出用户的动作。

  sys_act = self.policy_manager.act_on(dstring=currentDomain, 
                                                  state=state)

进行验证

# Check ending the call:
        sys_act = self._check_ENDING_CALL(state, sys_act)  # NB: this may change the self.prompt_str

系统产生的话语值也是一个槽值对,

根据决策后的用户动作,从semo中输出对应话语。

   # SEMO:
        self.prompt_str = self._agents_semo(sys_act)
        sys_act.prompt = self.prompt_str

semo根据系统产生的槽值对,填充话语,产生相应的输出。下一句用户的输入也是根据如上的情况。接下来的重点便是分析系统输入时,是如何产生用户的动作的,随后根据用户的动作和系统的决策函数,来产生相应的系统动作,根据系统的动作,组织成相应的话语进行输出。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值