Simulation¶
SimulatedUsersManager.py - combines simulated components into functional simulator¶
Copyright CUED Dialogue Systems Group 2015 - 2017
See also
CUED Imports/Dependencies:
import usersimulator.UserModel
import usersimulator.ErrorSimulator
import ontology.Ontology
import ontology.OntologyUtils
import utils.Settings
import utils.DiaAct
import utils.ContextLogger
-
class
usersimulator.SimulatedUsersManager.
DomainsSimulatedUser
(domainString, error_rate)¶ User Simulator for a single domain. Comprised of a behaviour component:
UserModel
to produce a semantic act and an error simulator to produce from the semantic act a list of semantic hypotheses.Parameters: str – domain string -
act_on
(sys_act_string)¶ Thru the UserModel member, receives the system action and then responds.
Parameters: sys_act_string (unicode str) – system action Returns: (str) user action
-
restart
(otherDomainsConstraints)¶ Resets all components (User Model) that are statefull.
Parameters: otherDomainsConstraints (list) – of domain goal tuples (slot=val) Returns: None
-
-
class
usersimulator.SimulatedUsersManager.
SimulatedUsersManager
(error_rate)¶ The multidomain simulated user, which is made up of a dictionary of simulated users indexed by domain. :param (list): of domain strings
-
act_on
(sys_act)¶ First produce a single semantic act from the simulated user. Then create from it a list of semantic hypotheses which include simulated errors.
-
restart
()¶ - Restarts/boots up the selected domains simulated user components. Shuts down those running and not needed for
- the next dialog.
Parameters: None – Returns: None
-
sample_domains
()¶ - Randomly select a set of domains from those available.
- The selected domains will be used by the simulated user over a single dialog.
Parameters: None – Returns: None
-
set_allowed_codomains
(ROOTDOMAIN)¶ Sets member (list) allowed_codomains given a root domain name (ie the domain of the first constraint) Uses the hardcoded rules in Settings.py to do so. Also, based on determined allowed_codomains, sets the probability of each being included, independently.
Parameters: ROOTDOMAIN (str) – domain tag Returns: None
-
ConfidenceScorer.py -¶
Copyright CUED Dialogue Systems Group 2015 - 2017
ConfusionModel.py - handcrafted SemI error creator¶
Copyright CUED Dialogue Systems Group 2015 - 2017
See also
CUED Imports/Dependencies:
import utils.DiaAct
import ontology.Ontology
import utils.Settings
import utils.ContextLogger
-
class
usersimulator.ConfusionModel.
EMConfusionModel
¶ Base class for EMRandomConfusionModel.
Note
Used through derived class only.
-
create_wrong_hyp
(a_u)¶ Create a wrong hypothesis for a_u
Parameters: a_u (instance) – of DiaAct
Returns: (instance) of DiaAct
- modified input act
-
-
class
usersimulator.ConfusionModel.
EMLevenshteinConfusionModel
(domainString)¶ Derived class from
EMConfusionModel
.Parameters: None – -
confuse_hyp
(a_u)¶ Randomly confuse the act type, slot or value.
Parameters: a_u (instance) – of DiaAct
Returns: (instance) of DiaAct
- modified input act
-
get_confusion_distributions
(word_list, offset=0.15)¶ Parameters: - word_list – The list of words to be confused
- offset – Distribution softening factor, the largest the softer the distribution will be
Returns: dictionary
-
-
class
usersimulator.ConfusionModel.
EMRandomConfusionModel
(domainString)¶ Derived class from
EMConfusionModel
.Parameters: None – -
confuse_hyp
(a_u)¶ Randomly confuse the act type, slot or value.
Parameters: a_u (instance) – of DiaAct
Returns: (instance) of DiaAct
- modified input act
-
ErrorModel.py - error simulation¶
Copyright CUED Dialogue Systems Group 2015 - 2017
See also
CUED Imports/Dependencies:
import usersimulator.ConfidenceScorer
import utils.DiaAct
import utils.ContextLogger
NBestGenerator.py -¶
Copyright CUED Dialogue Systems Group 2015 - 2017
-
class
usersimulator.NBestGenerator.
DSTC2NBestGenerator
(confusion_model, error_rate, nbest_size, paramset=None)¶ Tool for generating random semantic errors based on the statistics learned from the DSTC2 corpus
-
getNBest
(a_u)¶ Returns an N-best list of dialogue acts of length self.nbest_size
Parameters: a_u (instance) – of DiaActWithProb
-
-
class
usersimulator.NBestGenerator.
EMNBestGenerator
(confusion_model, error_rate, nbest_size)¶ Tool for generating random semantic errors.
-
getNBest
(a_u)¶ Returns an N-best list of dialogue acts of length nbest_size. Each entry is a random confusion of the given dialogue act a_u with probability e (errorRate).
Parameters: a_u (instance) – of DiaActWithProb
-
-
class
usersimulator.NBestGenerator.
EMSampledNBestGenerator
(confusion_model, error_rate, nbest_size)¶ The Dirichlet collection NBest generator operates by sampling a length for the N-best list and then sampling from a specific Dirichlet for that length.
This is a derived class from base
NBestGenerator
Parameters: - confusion_model (instance) – of
ConfusionModel
- nbest_size (int) – None
Note
The original C++ implementation did not sample N which is the length of the N-best list.
-
getNBest
(a_u)¶ Parameters: a_u (instance) – of DiaActWithProb
Returns: (list) of such dialogue act types as input
- confusion_model (instance) – of
UserModel.py - goal, agenda inventor for sim user¶
Copyright CUED Dialogue Systems Group 2015 - 2017
See also
CUED Imports/Dependencies:
import utils.DiaAct
import utils.dact
import usersimulator.UMHdcSim
import ontology.Ontology
import utils.Settings
import utils.ContextLogger
-
class
usersimulator.UserModel.
GoalGenerator
(dstring)¶ Master class for defining a goal generator to generate domain specific goals for the simulated user.
This class also defines the interface for new goal generators.
To implement domain-specific behaviour, derive from this class and override init_goals.
-
init_goal
(otherDomainsConstraints, um_patience)¶ Initialises the goal g with random constraints and requests
Parameters: - otherDomainsConstraints (list) – of constraints from other domains in this dialog which have already had goals generated.
- um_patience (int) – the patiance value for this goal
Returns: (instance) of
UMGoal
-
-
class
usersimulator.UserModel.
UM
(domainString)¶ Simulated user
Parameters: None – -
init
(otherDomainsConstraints)¶ Initialises the simulated user. 1. Initialises the goal G using the goal generator. 2. Populates the agenda A using the goal G. Resets all UM status to their defaults.
Parameters: otherDomainsConstraints (list) – of domain goals/constraints (slot=val) from other domains in dialog for which goal has already been generated. Returns None:
-
receive
(sys_act)¶ This method is called to transmit the machine dialogue act to the user. It updates the goal and the agenda. :param sys_act: System action. :return:
-
respond
()¶ This method is called after receive() to get the user dialogue act response. The method first increments the turn counter, then pops n items off the agenda to form the response dialogue act. The agenda and goal are updated accordingly.
Parameters: None – Returns: (instance) of DiaAct
-
-
class
usersimulator.UserModel.
UMAgenda
(dstring)¶ Agenda of
DiaAct
acts corresponding to a goal.Parameters: domain (str) – domain tag (ie CamRestaurants) -
append_dact_to_front
(dact)¶ Adds the given dialogue act to the front of the agenda
Parameters: (instance) – dact Returns: None
-
clear
()¶ Erases all acts on the agenda (empties list)
Returns: None
-
contains
(slot, value, negate=False)¶ Check if slot, value pair is in an agenda dialogue act
Parameters: - slot –
- value –
- negate (bool) – None
Returns: (bool) slot, value is in an agenda dact?
-
filter_acts_slot
(slot)¶ Any acts related to the given slot are removed from the agenda. :param slot: slot name :type slot: str :return: None
-
filter_constraints
(dap)¶ Filters out acts on the agenda that convey the constraints mentioned in the given dialogue act. Calls
filter_acts_slot()
to do so.Parameters: dap – Returns: None
-
get_agenda_with_act
(act)¶ agenda items with this act :param act: dialogue act :type act: str :return: (list) agenda items
-
get_agenda_with_act_slot
(act, slot)¶ Parameters: - act (str) – dialogue act
- slot (str) – slot name
Returns: (list) of agenda items
-
init
(goal)¶ Initialises the agenda by creating DiaActs corresponding to the constraints in the goal G. Uses the default order for the dialogue acts on the agenda: an inform act is created for each constraint. Finally a bye act is added at the bottom of the agenda.
Parameters: goal – Note
No requests are added to the agenda.
-
replace_acts_slot
(slot, replaceact='confirm')¶
-
size
()¶ Utility func to get size of agenda_items list
Returns: (int) length
-
-
class
usersimulator.UserModel.
UMGoal
(patience, domainString)¶ Defines a goal within a domain
Parameters: patience (int) – user patience -
add_const
(slot, value, negate=False)¶
-
add_prev_used
(slot, value)¶ Adds the given slot-value pair to the record of previously used slot-value pairs.
-
are_all_requests_filled
()¶ Returns: True if all request slots have a non-empty value.
-
get_correct_const_value
(slot, negate=False)¶ Returns: (list of) value of the given slot in user goal constraint.
-
get_correct_const_value_list
(slot, negate=False)¶ Returns: (list of) value of the given slot in user goal constraint.
-
is_satisfy_all_consts
(item)¶ Check if all the given items set[(slot, op, value),..] satisfies all goal constraints (conjunction of constraints).
-
is_venue_recommended
()¶ Returns True if the request slot ‘name’ is not empty. :return:
-
set_copied_constraints
(all_conditional_constraints)¶ Creates a list of dacts, where the constraints have come from earlier domains in the dialog.
Parameters: all_conditional_constraints (dict) – of all previous constraints (over all domains in dialog) Returns: None
-
UMHdcSim.py - Handcrafted simulated user behaviour¶
Copyright CUED Dialogue Systems Group 2015 - 2017
See also
CUED Imports/Dependencies:
import usersimulator.UserModel
import utils.DiaAct
import utils.dact
import ontology.Ontology
import utils.Settings
import utils.ContextLogger
Relevant config variables (values are defaults):
[um]
usenewgoalscenarios = True
answerreqalways = False
[goalgenerator]
patience = 10
-
class
usersimulator.UMHdcSim.
UMHdcSim
(domainString, max_patience=5)¶ Handcrafted behaviour of simulated user
-
init
(goal, um_patience)¶
-
receive
(sys_act, goal)¶
-
respond
(goal)¶ This method is called to get the user response.
Parameters: goal (instance) – of UMGoal
Returns: (instance) of DiaActWithProb
-
-
usersimulator.UMHdcSim.
logger
= <utils.ContextLogger.ContextLogger instance>¶ rand_decision_probs = {‘InformCombination’: 0.6, ‘AddSlotToReq’: 0.333, ‘NoAfterReqmore’: 0.7, ‘YesAfterReqmore’: 0.25, ‘Greeting’: 0.5, ‘ConstraintRelax’: 0.667, ‘TellAboutChange’: 0.5, ‘ByeOrStartOver’: 0.333, ‘DealWithPending’: 0.5, ‘AddVenueNameToRequest’: 0.05, ‘NoSlotWithDontcare’: 0.8, ‘Repeat’: 0.0, ‘InformToConfirm’: 0.05, ‘CombAffirmWithAgdItem’: 0.05, ‘NullResp’: 0.0, ‘OverruleCorrection’: 0.1, ‘ConfirmRandomConstr’: 0.1, ‘ReqAltsAfterVenRec1’: 0.143, #0.8 ‘ReqAltsAfterVenRec2’: 0.143, ‘NewRequestResp1’: 0.2, ‘NewRequestResp2’: 0.2, ‘CorrectingAct1’: 0.45, ‘CorrectingAct2’: 0.4, ‘ThankAck1’: 0.1, ‘ThankAck2’: 0.1, ‘AffirmCombination’: 1.0}