def __init__(self, generate_prompts): configs = [] if not Settings.config.has_option("DEFAULT", "domains"): logger.error("You must specify the domains under the DEFAULT section of the config") domains = Settings.config.get("DEFAULT", "domains") logger.info("--Simulating dialogues over the domains: ", domains) self.possible_domains = domains.split(",") DomainUtils.checkDomainStrings(domainStrings=self.possible_domains) self.maxTurns = 30 if Settings.config.has_option("simulate", "maxturns"): configs.append("maxturns") self.maxTurns = Settings.config.getint("simulate", "maxturns") self.forceNullPositive = False if Settings.config.has_option("simulate", "forcenullpositive"): configs.append("forcenullpositive") self.forceNullPositive = Settings.config.getboolean("simulate", "forcenullpositive") conf_scorer_name = "additive" if Settings.config.has_option("simulate", "confscorer"): conf_scorer_name = Settings.config.get("simulate", "confscorer") if Settings.config.has_section("simulate"): for opt in Settings.config.options("simulate"): if opt not in configs and opt not in Settings.config.defaults(): logger.error("Invalid config: " + opt) # [MultiDomain?] Dialogue Management/policy. # ----------------------------------------- self.topic_manager = TopicManager.TopicManager() # Simulated User. # ----------------------------------------- # TODO - deal with multi domain simulation - whilst changing Settings.py ill just pass domain here for now logger.debug("simulate.py -- XXXXXXX -- directly passing domain name in simulate at present...") self.simulator = UserSimulator.SimulatedUsersManager(domainStrings=self.possible_domains) # Error Simulator. # ----------------------------------------- # TODO - it is a hack for now passing the domain string directly from config via self.possible_domains. look at this # self.errorSimulator = ErrorSimulator.CuedErrorSimulator(conf_scorer_name, domainString=self.possible_domains[0]) self.errorSimulator = ErrorSimulator.SimulatedErrorManager(conf_scorer_name, self.possible_domains) # SemO. # ----------------------------------------- self.semoClass = None if generate_prompts: self.semo_name = "PassthroughSemO" if Settings.config.has_option("hub", "semo"): self.semo_name = Settings.config.get("hub", "semo") # SemO. if self.semo_name == "PassthroughSemO": self.semoClass = SemO.PassthroughSemO() elif self.semo_name == "BasicSemO": self.semoClass = SemO.BasicSemO() else: logger.warning("Invalid SemO: %s. Using PassthroughSemO." % self.semo_name) self.semoClass = SemO.PassthroughSemO() # Evaluation Manager. # ----------------------------------------- self.evaluator = Evaluation.EvaluationManager(self.possible_domains)
def __init__(self, generate_prompts): configs = [] if not Settings.config.has_option("DEFAULT", "domains"): logger.error( "You must specify the domains under the DEFAULT section of the config" ) domains = Settings.config.get("DEFAULT", 'domains') logger.info('--Simulating dialogues over the domains: ', domains) self.possible_domains = domains.split(',') DomainUtils.checkDomainStrings(domainStrings=self.possible_domains) self.maxTurns = 30 if Settings.config.has_option("simulate", "maxturns"): configs.append('maxturns') self.maxTurns = Settings.config.getint("simulate", "maxturns") self.forceNullPositive = False if Settings.config.has_option("simulate", "forcenullpositive"): configs.append('forcenullpositive') self.forceNullPositive = Settings.config.getboolean( "simulate", "forcenullpositive") conf_scorer_name = 'additive' if Settings.config.has_option('simulate', 'confscorer'): conf_scorer_name = Settings.config.get('simulate', 'confscorer') if Settings.config.has_section('simulate'): for opt in Settings.config.options('simulate'): if opt not in configs and opt not in Settings.config.defaults( ): logger.error('Invalid config: ' + opt) # [MultiDomain?] Dialogue Management/policy. #----------------------------------------- self.topic_manager = TopicManager.TopicManager() # Simulated User. #----------------------------------------- # TODO - deal with multi domain simulation - whilst changing Settings.py ill just pass domain here for now logger.debug( 'simulate.py -- XXXXXXX -- directly passing domain name in simulate at present...' ) self.simulator = UserSimulator.SimulatedUsersManager( domainStrings=self.possible_domains) # Error Simulator. #----------------------------------------- # TODO - it is a hack for now passing the domain string directly from config via self.possible_domains. look at this #self.errorSimulator = ErrorSimulator.CuedErrorSimulator(conf_scorer_name, domainString=self.possible_domains[0]) self.errorSimulator = ErrorSimulator.SimulatedErrorManager( conf_scorer_name, self.possible_domains) # SemO. #----------------------------------------- self.semoClass = None if generate_prompts: self.semo_name = 'PassthroughSemO' if Settings.config.has_option('hub', 'semo'): self.semo_name = Settings.config.get('hub', 'semo') # SemO. if self.semo_name == 'PassthroughSemO': self.semoClass = SemO.PassthroughSemO() elif self.semo_name == 'BasicSemO': self.semoClass = SemO.BasicSemO() else: logger.warning('Invalid SemO: %s. Using PassthroughSemO.' % self.semo_name) self.semoClass = SemO.PassthroughSemO() # Evaluation Manager. #----------------------------------------- self.evaluator = Evaluation.EvaluationManager(self.possible_domains)