Example #1
0
 def __init__(self):
     self.configname = './tests/test_configs/tasks.cfg'
     Settings.init(config_file=self.configname)
     ContextLogger.createLoggingHandlers(config=Settings.config)
     self.taskdir = Settings.config.get('tasks', 'savedir')
     if not os.path.isdir(self.taskdir):
         os.mkdir(self.taskdir)
     savename = Settings.config.get('tasks', 'savename')
     self.taskfile = self.taskdir + savename + '.json'
Example #2
0
 def test_simulate_multidomain(self):
     '''Run HDC policy for domains in 2 multi domain dialogues
     '''
     Settings.init(config_file='./tests/test_configs/simulate_multiDomains_HDC.cfg')
     ContextLogger.createLoggingHandlers(config=Settings.config)
     logger = ContextLogger.getLogger('')
     logger.info("Starting HDC Multidomain Simulation")
     reload(Ontology.FlatOntologyManager)        # since this has a singleton class
     Ontology.init_global_ontology()
     simulator = Simulate.SimulationSystem(error_rate=0.1)
     simulator.run_dialogs(2)    # run 2 dialogues
Example #3
0
 def test_simulate_multidomain(self):
     '''Run 2 dialogues with the multidomain system and GP policies
     (NB: config needs to explicitly set each domain to use gp actually...)
     '''
     Settings.init(config_file='./tests/test_configs/simulate_multiDomains_GP.cfg')
     ContextLogger.createLoggingHandlers(config=Settings.config)
     logger = ContextLogger.getLogger('')
     logger.info("Starting GP Multidomain Simulation")
     reload(Ontology.FlatOntologyManager)        # since this has a singleton class
     Ontology.init_global_ontology()
     simulator = Simulate.SimulationSystem(error_rate=0.1)
     simulator.run_dialogs(2)    # run 2 dialogues
Example #4
0
    def test_simulate_singledomain_for_all_domains(self):
        '''Loop over all domains and runs 2 dialogues with GP policy in each
        '''
        import numpy.random as nprand
        # not seeding this - so will be based on system clock--> meaning TESTING here will be somewhat random -->
        # NOTE --> THIS IS !!!REALLY REALLY REALLY!!! NOT IN THE SPIRIT OF (UNIT) TESTING - WHICH SHOULD NEVER BE ~RANDOM
        # doing it to get a little more coverage of testing without writing permutations of explicit tests ...

        Settings.init(
            config_file=
            './tests/test_configs/simulate_singledomain_for_all_domains.cfg')
        ContextLogger.createLoggingHandlers(config=Settings.config)
        logger = ContextLogger.getLogger('')
        domains = TestingUtils.get_loop_over_domains()
        for dstring in domains:
            Settings.config.set("GENERAL", 'domains', dstring)
            logger.info("Starting GP Single Domain Simulation for " + dstring)

            # [policy_DOMAINTAG]
            Settings.config.add_section('policy_' + dstring)
            Settings.config.set('policy_' + dstring, 'learning', 'True')
            Settings.config.set('policy_' + dstring, 'policytype', 'gp')
            # no inpolicy file give --> starts with empty file (random policy)
            Settings.config.set('policy_' + dstring, 'outpolicyfile',
                                'tests/test_gp/' + dstring)
            if nprand.uniform() > 0.5:
                Settings.config.set('policy_' + dstring, 'belieftype',
                                    'baseline')
            else:
                Settings.config.set('policy_' + dstring, 'belieftype', 'focus')

            # [gppolicy_DOMAINTAG]
            Settings.config.add_section('gppolicy_' + dstring)
            if nprand.uniform() > 0.5:
                Settings.config.set('gppolicy_' + dstring, 'kernel',
                                    'polysort')
            else:
                Settings.config.set('gppolicy_' + dstring, 'kernel',
                                    'gausssort')
            if nprand.uniform() > 0.5:
                Settings.config.set('gppolicy_' + dstring, 'actionkerneltype',
                                    'delta')
            else:
                Settings.config.set('gppolicy_' + dstring, 'actionkerneltype',
                                    'hdc')
            reload(Ontology.FlatOntologyManager
                   )  # since this has a singleton class
            Ontology.init_global_ontology()
            simulator = Simulate.SimulationSystem(error_rate=0.1)
            simulator.run_dialogs(2)  # run 2 dialogues
Example #5
0
 def test_simulate_singledomain_for_all_domains(self):
     '''Loop over all domains and run 2 dialogues via HDC policy in each
     '''
     Settings.init(config_file='./tests/test_configs/simulate_singledomain_for_all_domains.cfg')
     ContextLogger.createLoggingHandlers(config=Settings.config)
     logger = ContextLogger.getLogger('')
     domains = TestingUtils.get_loop_over_domains()
     for dstring in domains:
         Settings.config.set("GENERAL", 'domains', dstring)
         # no policy settings given --> defaults to HDC
         logger.info("Starting HDC Single Domain Simulation for "+dstring)
         reload(Ontology.FlatOntologyManager)        # since this has a singleton class
         Ontology.init_global_ontology()
         simulator = Simulate.SimulationSystem(error_rate=0.1)
         simulator.run_dialogs(2)    # run 2 dialogues
Example #6
0
.. seealso:: CUED Imports/Dependencies: 

    import :mod:`utils.Settings` |.|
    import :mod:`utils.ContextLogger` |.|
    import :mod:`ontology.Ontology` |.|
    import :mod:`ontology.OntologyUtils`

************************

'''
__author__ = "cued_dialogue_systems_group"

from utils import Settings, ContextLogger
from ontology import Ontology, OntologyUtils
logger = ContextLogger.getLogger('')


class PolicyManager(object):
    '''
    The policy manager manages the policies for all domains. 
    
    It provides the interface to get the next system action based on the current belief state in :func:`act_on` and to initiate the learning in the policy in :func:`train`.
    '''
    def __init__(self):
        self.domainPolicies = dict.fromkeys(OntologyUtils.available_domains,
                                            None)
        self.committees = self._load_committees()
        self.shared_params = None

        self.SPECIAL_DOMAINS = ['topicmanager', 'wikipedia']
Example #7
0
    import :mod:`utils.Settings` |.|
    import :mod:`usersimulator.SimulatedUsersManager` |.|
    import :mod:`ontology.FlatOntology` |.|
    import :mod:`Agent` |.|

************************

'''
import os
import argparse
import Agent
from usersimulator import SimulatedUsersManager
from utils import Settings
from utils import ContextLogger
from ontology import Ontology
logger = ContextLogger.getLogger('')

__author__ = "cued_dialogue_systems_group"
__version__ = Settings.__version__


class SimulationSystem(object):
    '''
    Semantic level simulated dialog system
    '''
    def __init__(self, error_rate):
        '''
        :param error_rate: error rate of the simulated environment
        :type error_rate: float
        '''
        # Dialogue Agent Factory:
Example #8
0
 def __init__(self):
     # cfg = 'tests/test_configs/dialogueserver-KUSTOM.cfg'
     cfg = 'tests/test_configs/dialogueserver-Films.cfg'
     assert (os.path.exists(cfg))
     Settings.init(config_file=cfg)
     ContextLogger.createLoggingHandlers(config=Settings.config)
Example #9
0
import json
import argparse
try:
    from utils import Settings, ContextLogger
    from usersimulator import SimulatedUsersManager
    from ontology import Ontology
except ImportError:
    import os,sys
    curdir = os.path.dirname(os.path.realpath(__file__))
    curdir = curdir.split('/')
    curdir = '/'.join(curdir[:-1]) +'/'
    sys.path.append(curdir)
    from utils import Settings, ContextLogger
    from usersimulator import SimulatedUsersManager
    from ontology import Ontology
logger = ContextLogger.getLogger('')


class TaskCreator(object):
    """
    """
    def __init__(self):
        """
        needs to set:
            - num tasks
            - domains
            - conditional goals/constraints (for multi domain tasks)
            - outfile root name - for .json (to be used by voiphub) and for .xml for Camdial
            - NOTE: not sure if any problems could arise from unicode v. string differences...
        """
        
Example #10
0
 
.. seealso:: CUED Imports/Dependencies:
    
    import :mod:`policy.Policy` |.|
    import :mod:`utils.Settings` |.|
    import :mod:`utils.ContextLogger`

************************
"""

__author__ = "cued_dialogue_systems_group"
import wikipedia # pip install wikipedia
from utils import Settings
from utils import ContextLogger
import Policy
logger = ContextLogger.getLogger('wiki')

import sys
reload(sys)
# sys.setdefaultencoding("utf8")


class WikipediaDM(Policy.Policy):
    """
    Dialogue Manager interface to Wikipedia -- developement state.
    """
    def __init__(self):
        super(WikipediaDM,self).__init__("wikipedia")
        
        self.startwithhello = False