Пример #1
0
    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...
        """
        
        # Set number of goals/different dialogues to generate:
        self.MIN_TASK_NUM = 10000   # start the tasks from a large number - so that DTMF = 3*task_id can work
        self.NUM_TASKS = 100
        if Settings.config.has_option("tasks","numtasks"):
            self.NUM_TASKS = Settings.config.getint("tasks","numtasks")

        # SAVE NAME:
        if not Settings.config.has_option("tasks","savename"):
            logger.error("No name given to save file under")
        self.savename = Settings.config.get("tasks","savename")
        # if savedir given, then prepend it to save name
        if Settings.config.has_option("tasks","savedir"):
            directory = Settings.config.get("tasks","savedir")
            self.savename = directory+self.savename

        ## Create goal generators for each domain:
        self.multi_domain_sim_user = SimulatedUsersManager.SimulatedUsersManager(Ontology.global_ontology.possible_domains)
        
        # data structure to hold and write out generated tasks:
        self.tasks = {"possible_domains":Ontology.global_ontology.possible_domains,
                      "tasks": {},    # will add to this, keys=task numbers
                     }
Пример #2
0
    def __init__(self, error_rate, ontology, cfg, logger, SetObj):
        '''
        :param error_rate: error rate of the simulated environment
        :type error_rate: float
        '''
        # Dialogue Agent Factory:
        #-----------------------------------------
        self.agent_factory = Agent.AgentFactory(hub_id='simulate',
                                                ontology=ontology,
                                                cfg=cfg,
                                                logger=logger,
                                                SetObj=SetObj)
        # NOTE - using agent factory here rather than just an agent - since for simulate I can easily envisage wanting to
        # have multiple agents and looking at combining their policies etc... This is not being used now though; will just use
        # a single agent in here at present.

        # Simulated User.
        #-----------------------------------------
        self.simulator = SimulatedUsersManager.SimulatedUsersManager(
            error_rate, ontology, cfg, logger, SetObj)
        self.traceDialog = 2
        self.sim_level = 'act'
        self.logger = logger

        if cfg.has_option("GENERAL", "tracedialog"):
            self.traceDialog = cfg.getint("GENERAL", "tracedialog")
        if cfg.has_option("usermodel", "simlevel"):
            self.sim_level = cfg.getint("usermodel", "simlevel")
Пример #3
0
    def __init__(self, error_rate):
        '''
        :param error_rate: error rate of the simulated environment
        :type error_rate: float
        '''
        # Dialogue Agent Factory:
        #-----------------------------------------
        self.agent_factory = Agent.AgentFactory(hub_id='simulate')
        # NOTE - using agent factory here rather than just an agent - since for simulate I can easily envisage wanting to
        # have multiple agents and looking at combining their policies etc... This is not being used now though; will just use
        # a single agent in here at present.

        # Simulated User.
        #-----------------------------------------
        self.simulator = SimulatedUsersManager.SimulatedUsersManager(
            error_rate)
        self.traceDialog = 2
        self.sim_level = 'dial_act'
        #self.sim_level = 'text'
        self.text_sampling = 'dict'

        if Settings.config.has_option("GENERAL", "tracedialog"):
            self.traceDialog = Settings.config.getint("GENERAL", "tracedialog")
        if Settings.config.has_option("usermodel", "simlevel"):
            self.sim_level = Settings.config.get("usermodel", "simlevel")
        if Settings.config.has_option("usermodel", "textsampling"):
            self.text_sampling = Settings.config.get("usermodel",
                                                     "textsampling")
        if self.sim_level == 'text':
            #Load the text generator
            '''
            if self.text_sampling == 'dict':
                sampling_dict = os.path.join(Settings.root, 'usersimulator/textgenerator/textgen_dict.pkl')
            else:
                sampling_dict = None
	    '''
            import usersimulator.SCTranslate as SCT
            #self.SCT = SCT.SCTranslate(sampling_dict=sampling_dict)
            self.SCT = SCT.SCTranslate()
        elif self.sim_level == 'sys2text':
            pass  #load here florians model