示例#1
0
    def test_select_doamin_2domain_no_answer_vs_noraml(self):
        domain_intend_dic = {
            'Weather':
            EngineQueryResult(0, self.DETERMINISTIC_RESULT_PROB, 0, None, []),
            'News':
            EngineQueryResult(100, self.DETERMINISTIC_RESULT_PROB, 0, None, [])
        }

        domain_selector = DomainSelector()
        result = domain_selector.select_doamin(self._get_domain_sorted_list(),
                                               domain_intend_dic, '', [],
                                               self._get_intend_dic())
        self.assertEqual(result[0], 'News')
        self.assertEqual(result[1].intent_id, 100)
示例#2
0
    def test_select_doamin_2domain_noraml_vs_just_fit_para_fit_intent_para(
            self):
        domain_intend_dic = {
            'Weather':
            EngineQueryResult(200, self.DETERMINISTIC_RESULT_PROB, 0, None,
                              []),
            'News':
            EngineQueryResult(1, self.DETERMINISTIC_RESULT_PROB, 0, None, [])
        }

        intent_selector = DomainSelector()
        result = intent_selector.select_doamin(
            self._get_domain_sorted_list(), domain_intend_dic, '',
            [self._get_IntentRecord(100, 0)], self._get_intend_dic())
        self.assertEqual(result[0], 'Weather')
        self.assertEqual(result[1].intent_id, 200)
示例#3
0
 def get_mock_DomainSelector():
     return_DomainSelector = DomainSelector()
     return_DomainSelector.select_doamin = Mock(return_value=(
         self.TEST_DOMAIN_NAME,
         EngineQueryResult(self.TEST_INTENT_ID,
                           self.DETERMINISTIC_RESULT_PROB,
                           self.TEST_TO_STATE_ID, {}, [])))
     return return_DomainSelector
示例#4
0
    def test_state_transition_no_parameter_state_transfer(self):
        from_state_id = 99
        to_state_id = 100
        engine_query_result = EngineQueryResult(
            self.TEST_INTENT_ID, self.DETERMINISTIC_RESULT_PROB, to_state_id, {}, [])
        intent_record = IntentRecord(self.TEST_INTENT_ID, from_state_id)
        intent = Intent(self.TEST_INTENT_ID, 'test_domain', from_state_id, {
                        (from_state_id, None): 'test_reply'}, {})
        context_manager = ContextManager()
        result = context_manager.state_transition(
            engine_query_result, intent_record, intent, False)

        self.assertEqual(self.TEST_INTENT_ID, result.intent_id)
        self.assertEqual(to_state_id, result.state_id)
示例#5
0
    def parse(self, user_input, state_id_list):
        '''
        Description:
            將使用者輸入的語音語句進行前處理、取出語句中的實體、進行utterance mapping
        Parameters:
            user_input:使用者語音語句
            state_id_list:
        return:
            EngineQueryResult object
        '''
        user_input = self._preprocess(user_input)
        entities = self._extract_entities(user_input)
        matched_intent_id, prob, transfer_to_state_id, intent_parameters = self._map_utterance(
            user_input, state_id_list, entities)

        return EngineQueryResult(matched_intent_id, prob, transfer_to_state_id,
                                 intent_parameters, entities)
示例#6
0
    def test_state_transition_multi_value_slot_less_than_max_but_stop(self):
        from_state_id=99
        to_state_id=100
        engine_query_result=EngineQueryResult(
            self.TEST_INTENT_ID, self.DETERMINISTIC_RESULT_PROB, to_state_id, {}, [])
        intent_record=IntentRecord(self.TEST_INTENT_ID, from_state_id)
        intent_record.user_paramenters={'test_para': ['test_value']}
        intent=Intent(
            self.TEST_INTENT_ID,
            'test_domain',
            from_state_id,
            {(from_state_id, from_state_id): 'test_reply'},
            [IntentParameter('test_keyword_name', 'test_para', 'ask', 2, 're_ask', None, 'string')])
        context_manager=ContextManager()
        result=context_manager.state_transition(
            engine_query_result, intent_record, intent, True)

        self.assertEqual(self.TEST_INTENT_ID, result.intent_id)
        self.assertEqual(self.PARA_SATISFIED_STATE_ID, result.state_id)
示例#7
0
    def test_state_transition_None_to_parameter_not_satisfied(self):
        from_state_id = 99
        to_state_id = 100
        engine_query_result = EngineQueryResult(
            self.TEST_INTENT_ID, self.DETERMINISTIC_RESULT_PROB, to_state_id, {}, [])
        intent_record = IntentRecord(self.TEST_INTENT_ID, from_state_id)
        intent=Intent(
            self.TEST_INTENT_ID,
            'test_domain',
            from_state_id,
            {(from_state_id, from_state_id): 'test_reply'},
            [IntentParameter('test_keyword_name', 'test_para', 'ask', 1, None, None, 'string')])
            
        context_manager=ContextManager()
        result=context_manager.state_transition(
            engine_query_result, intent_record, intent, False)

        self.assertEqual(self.TEST_INTENT_ID, result.intent_id)
        self.assertEqual(self.LACK_PARA_STATE_ID, result.state_id)