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
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
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
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
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