def test_at_least_on_no_required(self): intent = IntentBuilder("play intent") \ .one_of("Television Show", "Radio Station") \ .build() for result in self.parser.parse("play the big bang theory"): result_intent = intent.validate(result.get('tags'), result.get('confidence')) assert result_intent.get('confidence') > 0.0 assert result_intent.get('Television Show') == "the big bang theory" for result in self.parser.parse("play the barenaked ladies"): result_intent = intent.validate(result.get('tags'), result.get('confidence')) assert result_intent.get('confidence') > 0.0 assert result_intent.get('Radio Station') == "barenaked ladies"
def test_at_least_one_alone(self): intent = IntentBuilder("OptionsForLunch") \ .one_of("Question", "Command") \ .build() for result in self.parser.parse("show"): result_intent = intent.validate(result.get('tags'), result.get('confidence')) assert result_intent.get('confidence') > 0.0 assert result_intent.get('Command') == "show"
def test_basic_intent_with_alternate_names(self): intent = IntentBuilder("play television intent")\ .require("PlayVerb", "Play Verb")\ .require("Television Show", "series")\ .build() for result in self.parser.parse("play the big bang theory"): result_intent = intent.validate(result.get('tags'), result.get('confidence')) assert result_intent.get('confidence') > 0.0 assert result_intent.get('Play Verb') == 'play' assert result_intent.get('series') == "the big bang theory"
def test_intent_using_alias(self): self.trie.insert("big bang", ("the big bang theory", "Television Show")) intent = IntentBuilder("play television intent")\ .require("PlayVerb", "Play Verb")\ .require("Television Show", "series")\ .build() for result in self.parser.parse("play the big bang theory"): result_intent = intent.validate(result.get('tags'), result.get('confidence')) assert result_intent.get('confidence') > 0.0 assert result_intent.get('Play Verb') == 'play' assert result_intent.get('series') == "the big bang theory"
def test_intent_with_regex_entity(self): self.trie = Trie() self.tagger = EntityTagger(self.trie, self.tokenizer, self.regex_entities) self.parser = Parser(self.tokenizer, self.tagger) self.trie.insert("theory", ("theory", "Concept")) regex = re.compile(r"the (?P<Event>.*)") self.regex_entities.append(regex) intent = IntentBuilder("mock intent")\ .require("Event")\ .require("Concept").build() for result in self.parser.parse("the big bang theory"): result_intent = intent.validate(result.get('tags'), result.get('confidence')) assert result_intent.get('confidence') > 0.0 assert result_intent.get('Event') == 'big bang' assert result_intent.get('Concept') == "theory"
def test_at_least_one_with_tag_in_multiple_slots(self): self.trie.insert("temperature", ("temperature", "temperature")) self.trie.insert("living room", ("living room", "living room")) self.trie.insert("what is", ("what is", "what is")) intent = IntentBuilder("test intent")\ .one_of("what is")\ .one_of("temperature", "living room")\ .one_of("temperature")\ .build() for result in self.parser.parse("what is the temperature in the living room"): result_intent = intent.validate(result.get("tags"), result.get("confidence")) assert result_intent.get("confidence") > 0.0 assert result_intent.get("temperature") == "temperature" assert result_intent.get("living room") == "living room" assert result_intent.get("what is") == "what is"