Utility Modules¶
ContextLogger.py - wrapper for Python logging API¶
Copyright CUED Dialogue Systems Group 2015 - 2017
Relevant Config variables [Default values]:
[logging]
screen_level=info
file_level=debug
file=logFileName.txt
usecolor = False
- Basic Usage:
>>> from utils import ContextLogger >>> ContextLogger.createLoggingHandlers() >>> logger = ContextLogger.getLogger('Name')
then within any script issue debug, info, warning and error messages, eg
>>> logger.warning("String too long [%d]", 100)
issuing an error message generates
ExceptionRaisedByLogger
.Logger can if required be configured via a config section. Then pass config info to
createLoggingHandlers
>>> ContextLogger.createLoggingHandlers(config)
-
class
utils.ContextLogger.
ConsoleFormatter
(*args, **kwargs)¶ Class to format logger output to console.
-
format
(record)¶ Format the specified record as text.
The record’s attribute dictionary is used as the operand to a string formatting operation which yields the returned string. Before formatting the dictionary, a couple of preparatory steps are carried out. The message attribute of the record is computed using LogRecord.getMessage(). If the formatting string uses the time (as determined by a call to usesTime(), formatTime() is called to format the event time. If there is exception information, it is formatted using formatException() and appended to the message.
-
-
class
utils.ContextLogger.
ContextLogger
(module_name=None, *args)¶ Wrapper for Python logging class.
-
addContext
(**kwds)¶ Create a nested named context for use in a
with
statement.Parameters: args – list of one or more context names (str) Returns: ContextManager - Example:
>>> with mylogger.addContext("Session 1") : ... mylogger.warning("Warn Message from Session 1")
-
addTimedContext
(**kwds)¶ Create a timed nested named context for use in a
with
statement.Parameters: args – list of one or more context names (str) Returns: ContextManager - Example:
>>> with mylogger.addContext("Session 1") : ... Dostuff()
On exit from the
with
statement, the elapsed time is logged.
-
debug
(msg, *args, **kwargs)¶ Log a DEBUG message.
Parameters: - msg (formatted-str) – message string
- args – args to formatted message string if any
Returns: None
-
error
(msg, *args, **kwargs)¶ Log an ERROR message.
Parameters: - msg (formatted-str) – message string
- args – args to formatted message string if any
Returns: None
Note
Issuing an error message also raises exception
ExceptionRaisedByLogger
-
info
(msg, *args, **kwargs)¶ Log an INFO message.
Parameters: - msg (formatted-str) – message string
- args – args to formatted message string if any
Returns: None
-
setLevel
(level)¶ Set the logging level of this logger.
Parameters: level (str) – default screen logging level if no config Returns: None
-
warning
(msg, *args, **kwargs)¶ Log a WARNING message.
Parameters: - msg (formatted-str) – message string
- args – args to formatted message string if any
Returns: None
-
-
exception
utils.ContextLogger.
ExceptionRaisedByLogger
¶
-
class
utils.ContextLogger.
NOcolors
¶ ASCII escape chars just print junk when dumping logger output to file. Can use the config setting usecolor.
-
class
utils.ContextLogger.
bcolors
¶ Color specification for logger output.
-
utils.ContextLogger.
createLoggingHandlers
(config=None, screen_level='INFO', log_file=None, file_level='DEBUG', use_color=True)¶ Create a top level logger and configure logging handlers
Parameters: - config – a config structure as returned by the std ConfigParser
- screen_level (str) – default screen logging level if no config
- log_file (str) – default log file if no config
- file_level (str) – default file logging level if no config
Returns: None
Note
Valid logging levels are “DEBUG”, “INFO”, “WARNING”, “ERROR”
- config – a config structure as returned by the std ConfigParser
-
utils.ContextLogger.
getLogger
(name)¶ Retrieve or if necessary create a context logger with specified name.
Parameters: name (str) – name of logger to create or retrieve Returns: logger (ContextLogger.ContextLogger) Note
Use only this function to create instances of the ContextLogger class
dact.py - dialogue act specification¶
Copyright CUED Dialogue Systems Group 2015 - 2017
- Basic Usage:
>>> import dact
Note
Copied from dstc-ii code
-
class
utils.dact.
DactItem
(slot, op, val)¶ Dialogue act specification
Parameters: - slot (str) – slot name
- op (str) – comparative operation, e.g. ‘=’ or ‘!=’
-
match
(other)¶ Commutative operation for comparing two items. Note that “self” is the goal constraint, and “other” is from the system action. The item in “other” must be more specific. For example, the system action confirm(food=dontcare) doesn’t match the goal with food=chinese, but confirm(food=chinese) matches the goal food=dontcare.
If slots are different, return True.
- If slots are the same, (possible values are x, y, dontcare, !x, !y, !dontcare)s
x, x = True x, y = False dontcare, x = True x, dontcare = False dontcare, dontcare = True
x, !x = False x, !y = True x, !dontcare = True dontcare, !x = False dontcare, !dontcare = False
!x, !x = True !x, !y = True !x, !dontcare = True !dontcare, !dontcare = True
Parameters: other – Returns:
-
utils.dact.
inferSlotsForAct
(uacts, ontology=None)¶ Works out the slot from the ontology and value
Parameters: - uacts –
- ontology –
Returns: user’s dialogue acts
DiaAct.py - dialogue act specification that extends dact.py¶
Copyright CUED Dialogue Systems Group 2015 - 2017
- Basic Usage:
>>> import DiaAct
-
class
utils.DiaAct.
DiaAct
(act)¶ Dialogue act class.
self.dact =
{'act': acttype,'slots': [(slot1, op1, value1), ..])}
Parameters: act – dialogue act in string Todo
SummaryAction is not implemented.
-
append
(slot, value, negate=False)¶ Add item to this act avoiding duplication
Parameters: - slot (str) – None
- value (str) – None
- negate (bool [Default=False]) – semantic operation is negation or not
Returns:
-
append_front
(slot, value, negate=False)¶ Add item to this act avoiding duplication
Parameters: - slot (str) – None
- value (str) – None
- negate (bool) – operation is ‘=’ or not? False by default.
Returns:
-
contains
(slot, value, negate=False)¶ Parameters: - slot (str) – None
- value (str) – None
- negate (bool - default False) – None
Returns: (bool) is full semantic act in self.items?
-
contains_slot
(slot)¶ Parameters: slot (str) – slot name Returns: (bool) answering whether self.items mentions slot
-
getDiaItemFormat
()¶ Parameters: None (based on self.items) – None Returns: the number of arguments of this diaact type. e.g. act: 0, act(slot): 1, act(slot,value): 2
-
get_value
(slot, negate=False)¶ Parameters: - slot (str) – slot name
- negate (bool - default False) – relating to semantic operation, i.e slot = or slot !=.
Returns: (str) value
-
get_values
(slot, negate=False)¶ Parameters: - slot (str) – slot name
- negate (bool - default False) –
- semantic operation
Returns: (list) values in self.items
-
has_conflicting_value
(constraints)¶ Parameters: constraints (list) – as [(slot, op, value), …] Returns: (bool) True if this DiaAct has values which conflict with the given constraints. Note that consider only non-name slots.
-
to_string
()¶ Parameters: None – Returns: (str) semantic act
-
-
class
utils.DiaAct.
DiaActWithProb
(act)¶ self.dact =
{'act': acttype,'slots': set([(slot1, value1), ..])}
Parameters: act (str) – dialogue act Todo
Parser is not complete. Attached probability P_Au_O cannot be parsed. SummaryAction is not implemented. Emphasis and operator are not implemented.
-
utils.DiaAct.
known_format
= {'affirm': 2, 'badact': 0, 'bye': 0, 'confirm': 2, 'confreq': 1, 'deny': 3, 'hello': 0, 'inform': 2, 'negate': 2, 'null': 0, 'repeat': 0, 'reqalts': 2, 'request': 1, 'select': 3, 'thankyou': 0}¶ within class dictionary
0 signals no dia item, eg hello() 1 signals slot, but no value, eg request(bar) 2 signals slot value pair, eg inform(food=”Italian”) 3 signals 2 slot value pairs, eg deny(food=”Italian”, food=”Chinese”)
DialogueState.py - dialogue state object specification¶
Copyright CUED Dialogue Systems Group 2017
- Basic Usage:
>>> import DialogueState
-
class
utils.DialogueState.
DialogueState
¶ The encapsulation of the dialogue state with a definition of the main interface.
-
check_user_ending
()¶ Utility function to check whether the user has said good bye.
-
getDomainState
(dstring)¶ Access to the dialogue state (belief state) of the specified domain. Returns None if there is no state yet.
Parameters: dstring (str) – the string identifier of the domain the state should be retreived from Returns: the state dict or None
-
getLastSystemAct
(dstring)¶ Retreives the last system act of domain dstring.
Parameters: dstring (str) – the string identifier of the domain of which the last system act should be retreived from Returns: the last system act of domain dstring or None
-
printUserActs
(dstring)¶ Utility function to print the user acts stored in the belief state of domain dstring.
Parameters: dstring (str) – the string identifier of the domain of which the user act should be printed
-
setLastSystemAct
(sysAct)¶ Sets the last system act of the current domain. Note that currentdomain needs to be set first, otherwise it does not work.
Parameters: sysAct (str) – string representation of the last system action
-
dummyDialogueServerClient.py - script for talking to the dialogue server via cmd line, i.e. without using any voice client.¶
Copyright CUED Dialogue Systems Group 2015 - 2017
- Basic Usage:
Also can be used to simulate multiple concurrent calls to a running DialogueServer() - each of these is run in it’s own process via python’s multiprocessing module. >> python dummyDialogueServerClient.py fake number_of_fake_clients
— where number_of_fake_clients is an integer.
NB: This was just a tool I wrote for developing DialogueServer, but it is actually pretty useful so i’ve put it in the repo and it is also used by nosetests now to execute some basic testing of DialogueServer.
Scanner.py - string scanning utility¶
Copyright CUED Dialogue Systems Group 2015 - 2017
See also
CUED Imports/Dependencies:
none
-
class
utils.Scanner.
Scanner
(string)¶ Class to maintain tokenized string.
-
utils.Scanner.
remove_comments
(src)¶ This reads tokens using tokenize.generate_tokens and recombines them using tokenize.untokenize, and skipping comment/docstring tokens in between
Settings.py - global variables: config, random num generator¶
Copyright CUED Dialogue Systems Group 2015 - 2017
Creates and makes accessible system wide a config parser and random number generator. Also contains hardcodings of the paths to the ontologies.
- [GENERAL]
- root = ‘’ - which is the path to root directory of python system. Use when running grid jobs.
Globals:
config: python ConfigParser.ConfigParser() object
random: numpy.random.RandomState() random number generator
root: location of root directory of repository - for running on the grid
See also
CUED Imports/Dependencies:
none
-
utils.Settings.
init
(config_file, seed=None)¶ Called by dialog programs (simulate, texthub, dialogueserver) to init Settings globals
-
utils.Settings.
load_config
(config_file)¶ Loads the passed config file into a python ConfigParser().
Parameters: config_file (str) – path to config
-
utils.Settings.
load_root
(rootIn=None)¶ Root is the location (ie full path) of the cued-python repository. This is used when running things on the grid (non local machines in general).
-
utils.Settings.
locate_file
(filename)¶ Locate file either as given or relative to root
Parameters: filename – file to check Returns: filename possibly prepended with root
-
utils.Settings.
set_seed
(seed)¶ Intialise np random num generator
Parameters: seed (int) – None