Belief Tracking

BeliefTrackingManager.py - wrapper for belief tracking across domains

Copyright CUED Dialogue Systems Group 2015 - 2017

See also

CUED Imports/Dependencies:

import utils.Settings
import ontology.OntologyUtils
import utils.ContextLogger


class belieftracking.BeliefTrackingManager.BeliefTrackingManager

Higher-level belief tracker manager

_load_domains_belieftracker(domainString=None)

Load domain’s belief tracker

Parameters:domainString (string) – domain name
Returns:None
bootup(domainString, previousDomainString=None)

Boot up the belief tracker

Parameters:
  • domainString (string) – domain name
  • previousDomainString (string) – previous domain name
Returns:

None

conditionally_init_new_domains_belief(domainString, previousDomainString)

If just starting this domain in this dialog: Get count80 slot=value pairs from previous domains in order to initialise the belief state of the new domain (reflecting dialogs history and likelihood that similar values will be desired if there are slot overlaps.

Parameters:
  • domainString (string) – domain name
  • previousDomainString (string) – previous domain name
Returns:

None

restart()

Restart every alive Belief Tracker

update_belief_state(dstring, lastSysAct, inputActs, constraints)

Update belief state given infos

BeliefTracker.py - Belief Tracker

Copyright CUED Dialogue Systems Group 2015 - 2017

See also

CUED Imports/Dependencies:

import utils.dact
import utils.ContextLogger import policy.SummaryUtils
import ontology.Ontology
import belieftracking.BeliefTrackingUtils


class belieftracking.BeliefTracker.BeliefTracker(domainString)

Belief Tracker base class that implements most of the functionality within the dialogue system. The actual inference problem of belief tracking (ASR/SLU –> belief state update) is implemented by individual trackers (in baseline.py for example). Hence this class will never be instantiated, it just implements common functionality. If developing a new tracker - it should inherit this class and implement a self.tracker.

_conditionally_init_belief(belief, constraints)

Method for conditionally setting up the inital belief state of a domain based on information/events that occured earlier in the dialogue in ANOTHER (ie different) domain.

Parameters:
  • belief (dict) – initial belief state
  • constraints (dict) – a dict of constraints
Returns:

None

_convertHypToTurn(lastact, obs)

Convert hypotheses to turn

Parameters:
  • lastact (string) – last system dialgue act
  • obs (list) – current observation
Returns:

dict – turn dict

_init_belief(constraints=None)

Simply constructs the belief state data structure at turn 0

Parameters:constraints (dict) – a dict of constraints
Returns:dict – initiliased belief state
_print_belief()

Just a Debug function

_updateBelief(turn)

Update the belief given the current turn info

_updateMactFeat(last_feature, lastact)

Add features into self.prevstate - recording actions taken by machine

Parameters:
  • last_feature (dict) – last system state features
  • lastact (string) – last system dialgoue act
Returns:

None

getBelief80_pairs()

Called by EXITING DOMAIN

get_conditional_constraints(prev_domain_constraints)

Called by ENTERING DOMAIN Takes a dict (keys=all available domains we have – more info this way than just a list of slots + values) of constraints from previous domains AS DETERMINED BY THE DIALOGS IN THOSE DOMAINS WITH THE DOMAINS OWN TRACKER - then conditionally initialises the new tracker. (Meaning this is only called when domain is first launched within a single dialog).

Parameters:prev_domain_constraints (dict) – a dict of constraints from previous domains
Returns None:
restart()

Reset some private members

update_belief_state(lastact, obs, constraints=None)

Does the actual belief tracking via tracker.addTurn

Parameters:
  • lastact (string) – last system dialgoue act
  • obs (list) – current observation
  • constraints (dict) –
Returns:

dict – previous belief state

baseline.py - Baseline Belief Tracker from DST

Copyright CUED Dialogue Systems Group 2015 - 2017

Note

This is (essentially) the baseline.py file from the DSTC challenge written by Matt Henderson. It implements the “Baseline” and “Focus” trackers from the DSTC challenge. Some unused things have been removed from the DST version here - just to keep PyDial simple.

See also

CUED Imports/Dependencies:

import utils.Settings
import belieftracking.BeliefTracker.BeliefTracker
import ontology.Ontology
import utils.ContextLogger


class belieftracking.baseline.BaselineTracker(domainString)

Record single hypothesis for each slot at each turn, whose value is the top scoring value for that slot so far. Note that this tracker does not handle goal constraint changes well as it ignores past states but only uses the current state.

class belieftracking.baseline.FocusTracker(domainString)

It accumulates evidence and has a simple model of how the state changes throughout the dialogue. Only track goals but not requested slots and method.

BeliefTrackingUtils.py - Belief Tracking Utility Methods

Copyright CUED Dialogue Systems Group 2015 - 2017

See also

CUED Imports/Dependencies:

none


belieftracking.BeliefTrackingUtils.order_using(l, lookup)

Return the sorted list of l given the lookup table

Parameters:
  • l (type) – given list l
  • lookup (list) – lookup table
Returns:

list – sorted list

belieftracking.BeliefTrackingUtils.print_obs(obs)

Print observations

belieftracking.BeliefTrackingUtils.simplify_belief(ontology, belief)

Make the given belief printable by pruning slot values with less than 0.1 belief

Parameters:
  • ontology (dict) – a dict includes the informable/requestable slots and info
  • belief (dict) – current belief state
Returns:

dict – simplified belief