Пример #1
0
    def determine_intent(self,
                         utterance,
                         num_results=1,
                         include_tags=False,
                         context_manager=None):
        """
        Given an utterance, provide a valid intent.

        Args:
            utterance(str): an ascii or unicode string representing natural language speech
            include_tags(list): includes the parsed tags (including position and confidence)
                as part of result
            context_manager(list): a context manager to provide context to the utterance
            num_results(int): a maximum number of results to be returned.

        Returns: A generator that yields dictionaries.
        """
        parser = Parser(self.tokenizer, self.tagger)
        parser.on('tagged_entities',
                  (lambda result: self.emit("tagged_entities", result)))

        context = []
        if context_manager:
            context = context_manager.get_context()

        for result in parser.parse(utterance, N=num_results, context=context):
            self.emit("parse_result", result)
            # create a context without entities used in result
            remaining_context = self.__get_unused_context(result, context)
            best_intent, tags = self.__best_intent(result, remaining_context)
            if best_intent and best_intent.get('confidence', 0.0) > 0:
                if include_tags:
                    best_intent['__tags__'] = tags
                yield best_intent
Пример #2
0
    def determine_intent(self, utterance, num_results=1, include_tags=False, context_manager=None):
        """
        Given an utterance, provide a valid intent.

        :param utterance: an ascii or unicode string representing natural language speech

        :param include_tags: includes the parsed tags (including position and confidence)
            as part of result

        :param context_manager: a context manager to provide context to the utterance

        :param num_results: a maximum number of results to be returned.

        :return: A generator that yields dictionaries.
        """
        parser = Parser(self.tokenizer, self.tagger)
        parser.on('tagged_entities',
                  (lambda result:
                   self.emit("tagged_entities", result)))

        context = []
        if context_manager:
            context = context_manager.get_context()

        for result in parser.parse(utterance, N=num_results, context=context):
            self.emit("parse_result", result)
            # create a context without entities used in result
            remaining_context = self.__get_unused_context(result, context)
            best_intent, tags = self.__best_intent(result, remaining_context)
            if best_intent and best_intent.get('confidence', 0.0) > 0:
                if include_tags:
                    best_intent['__tags__'] = tags
                yield best_intent
Пример #3
0
    def determine_intent(self, utterance, num_results=1):
        """
        Given an utterance, provide a valid intent.

        :param utterance: an ascii or unicode string representing natural language speech

        :param num_results: a maximum number of results to be returned.

        :return: A generator the yields dictionaries.
        """
        parser = Parser(self.tokenizer, self.tagger)
        parser.on("tagged_entities", (lambda result: self.emit("tagged_entities", result)))

        for result in parser.parse(utterance, N=num_results):
            self.emit("parse_result", result)
            best_intent = self.__best_intent(result)
            if best_intent and best_intent.get("confidence", 0.0) > 0:
                yield best_intent
Пример #4
0
    def determine_intent(self, utterance, num_results=1):
        """
        Given an utterance, provide a valid intent.

        :param utterance: an ascii or unicode string representing natural language speech

        :param num_results: a maximum number of results to be returned.

        :return: A generator the yields dictionaries.
        """
        parser = Parser(self.tokenizer, self.tagger)
        parser.on('tagged_entities',
                  (lambda result: self.emit("tagged_entities", result)))

        for result in parser.parse(utterance, N=num_results):
            self.emit("parse_result", result)
            best_intent = self.__best_intent(result)
            if best_intent and best_intent.get('confidence', 0.0) > 0:
                yield best_intent
Пример #5
0
    def determine_good_intents(self,
                               utterance,
                               num_results=1,
                               include_tags=False,
                               context_manager=None):
        """
        Given an utterance, provide a valid intent.

        :param utterance: an ascii or unicode string representing natural language speech

        :param include_tags: includes the parsed tags (including position and confidence)
            as part of result

        :param context_manager: a context manager to provide context to the utterance

        :param num_results: a maximum number of results to be returned.

        :return: A generator that yields dictionaries.
        """
        parser = Parser(self.tokenizer, self.tagger)
        parser.on('tagged_entities',
                  (lambda result: self.emit("tagged_entities", result)))

        context = []
        if context_manager:
            context = context_manager.get_context()

        all_good_intents = []
        for result in parser.parse(utterance, N=num_results, context=context):
            self.emit("parse_result", result)
            # create a context without entities used in result
            remaining_context = self.__get_unused_context(result, context)
            good_intents = self.__good_intents(result, include_tags,
                                               remaining_context)

            all_good_intents += good_intents

        all_good_intents = sorted(all_good_intents,
                                  key=lambda i: i['confidence'],
                                  reverse=True)
        for intent in all_good_intents:
            yield intent