Example #1
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")
Example #2
0
    def __init__(self):
        """    HTTP Server
        """
        self.RECEIVED_DTMF_MSG = "Got it, thanks."
        self.GENERATE_TOKEN = True
        self.COLLECT_SUBJECTIVE_FEEDBACK = False
        self.COLLECT_TASK = False
        self.host = "localhost"
        self.port = 8082
        self.TOKENSERVERURL = "http://www.camdial.org/~djv27/mt-multiDomain/receive-token.py"
        # DTMF prompt given over voip call at dialogue's end
        self.COLLECT_TASKID_PROMPT = ".  Please now enter the 5 digit task number followed by the hash key"
        #The hash key is only for multiple digits
        self.COLLECT_SUBJECTIVE_PROMPT = " Have you found all the information you were looking for? Please enter one for yes, and zero for no."

        self.ood_count = 0
        self.OOD_THRESHOLD = 1

        # Speech Settings:
        self.allowbargein = False  # TODO - config this or remove it -- OR SHOULD IT BE SOMETHING SENT FROM VOICEBROKER EACH TURN?
        if Settings.config.has_option("dialogueserver", "tokenserverurl"):
            self.TOKENSERVERURL = Settings.config.get("dialogueserver",
                                                      "tokenserverurl")
            self.TOKENSERVERURL = self.TOKENSERVERURL.strip('"')
        if Settings.config.has_option("dialogueserver", "generatetoken"):
            self.GENERATE_TOKEN = Settings.config.getboolean(
                "dialogueserver", "generatetoken")
        if Settings.config.has_option("dialogueserver", "collecttask"):
            self.COLLECT_TASK = Settings.config.getboolean(
                "dialogueserver", "collecttask")
        if Settings.config.has_option("dialogueserver", "subjectivefeedback"):
            self.COLLECT_SUBJECTIVE_FEEDBACK = Settings.config.getboolean(
                "dialogueserver", "subjectivefeedback")
        if Settings.config.has_option("dialogueserver",
                                      "subjectivefeedbackprompt"):
            self.COLLECT_SUBJECTIVE_PROMPT = Settings.config.get(
                "dialogueserver", "subjectivefeedbackprompt")
        if Settings.config.has_option("dialogueserver", "dialhost"):
            self.host = Settings.config.get("dialogueserver", "dialhost")
            self.host = self.host.strip('"')
        if Settings.config.has_option("dialogueserver", "dialport"):
            self.port = Settings.config.getint("dialogueserver", "dialport")

        self.issueConsent = False
        if Settings.config.has_option("dialogueserver", "issueConsent"):
            self.issueConsent = Settings.config.getboolean(
                "dialogueserver", "issueConsent")

        # Dialogue agent:
        self.agent_factory = Agent.AgentFactory(hub_id='dialogueserver')

        self.tasks = None
        if Settings.config.has_option("dialogueserver", "tasksfile"):
            from tasks import Tasks
            self.tasks = Tasks.TaskReader(
                taskfile=Settings.config.get("dialogueserver", "tasksfile"))
        if self.COLLECT_TASK and self.tasks is None:
            logger.error(
                "Must provide a tasks file if you want to collect task")
Example #3
0
    def __init__(self):
        """    HTTP Server
        """
        self.RECEIVED_DTMF_MSG = u"Bien reçu! Au revoir et bonne journée!"
        self.GENERATE_TOKEN = False
        self.COLLECT_SUBJECTIVE_FEEDBACK = False
        self.COLLECT_TASK = False
        self.host = 'localhost'
        self.port = 8082
        self.TOKENSERVERURL = 'http://www.camdial.org/~djv27/mt-multiDomain/receive-token.py'
        # DTMF prompt given over voip call at dialogue's end
        self.COLLECT_TASKID_PROMPT = '.  Please now enter the 5 digit task number followed by the hash key'
        #The hash key is only for multiple digits
        self.COLLECT_SUBJECTIVE_PROMPT = u" Avez-vous bien obtenu toutes les informations dont vous aviez besoin? Répondez simplement par oui ou non, s'il vous plaît."

        self.ood_count = 0
        self.OOD_THRESHOLD = 1

        # Speech Settings:
        self.allowbargein = False  # TODO - config this or remove it -- OR SHOULD IT BE SOMETHING SENT FROM VOICEBROKER EACH TURN?
        if Settings.config.has_option("dialogueserver", "tokenserverurl"):
            self.TOKENSERVERURL = Settings.config.get("dialogueserver",
                                                      "tokenserverurl")
            self.TOKENSERVERURL = self.TOKENSERVERURL.strip('"')
        if Settings.config.has_option("dialogueserver", "generatetoken"):
            self.GENERATE_TOKEN = Settings.config.getboolean(
                "dialogueserver", "generatetoken")
        if Settings.config.has_option("dialogueserver", "collecttask"):
            self.COLLECT_TASK = Settings.config.getboolean(
                "dialogueserver", "collecttask")
        if Settings.config.has_option("dialogueserver", "subjectivefeedback"):
            self.COLLECT_SUBJECTIVE_FEEDBACK = Settings.config.getboolean(
                "dialogueserver", "subjectivefeedback")
        if Settings.config.has_option("dialogueserver",
                                      "subjectivefeedbackprompt"):
            self.COLLECT_SUBJECTIVE_PROMPT = Settings.config.get(
                "dialogueserver", "subjectivefeedbackprompt")
        if Settings.config.has_option("dialogueserver", "dialhost"):
            self.host = Settings.config.get("dialogueserver", "dialhost")
            self.host = self.host.strip('"')
        if Settings.config.has_option("dialogueserver", "dialport"):
            self.port = Settings.config.getint("dialogueserver", "dialport")

        self.issueConsent = False
        if Settings.config.has_option("dialogueserver", "issueConsent"):
            self.issueConsent = Settings.config.getboolean(
                "dialogueserver", "issueConsent")

        # Dialogue agent:
        self.agent_factory = Agent.AgentFactory(hub_id='dialogueserver')

        self.tasks = None
        if Settings.config.has_option("dialogueserver", "tasksfile"):
            from tasks import Tasks
            self.tasks = Tasks.TaskReader(
                taskfile=Settings.config.get("dialogueserver", "tasksfile"))
        if self.COLLECT_TASK and self.tasks is None:
            logger.error(
                "Must provide a tasks file if you want to collect task")
Example #4
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