def test_get_slots_should_raise_with_unknown_intent(self): # Given slots_dataset_stream = io.StringIO(""" --- type: intent name: greeting1 utterances: - Hello [name1](John) --- type: intent name: goodbye utterances: - Goodbye [name](Eric)""") dataset = Dataset.from_yaml_files("en", [slots_dataset_stream]).json # pylint:disable=unused-variable @IntentClassifier.register("my_intent_classifier", True) class MyIntentClassifier(MockIntentClassifier): pass @SlotFiller.register("my_slot_filler", True) class MySlotFiller(MockSlotFiller): pass # pylint:enable=unused-variable config = ProbabilisticIntentParserConfig( intent_classifier_config="my_intent_classifier", slot_filler_config="my_slot_filler") parser = ProbabilisticIntentParser(config).fit(dataset) # When / Then with self.assertRaises(IntentNotFoundError): parser.get_slots("Hello John", "greeting3")
def test_should_get_slots(self): # Given slots_dataset_stream = io.StringIO(""" --- type: intent name: greeting1 utterances: - Hello [name1](John) --- type: intent name: greeting2 utterances: - Hello [name2](John) --- type: intent name: greeting3 utterances: - Hello John""") dataset = Dataset.from_yaml_files("en", [slots_dataset_stream]).json parser = ProbabilisticIntentParser().fit(dataset) # When slots_greeting1 = parser.get_slots("Hello John", "greeting1") slots_greeting2 = parser.get_slots("Hello John", "greeting2") slots_goodbye = parser.get_slots("Hello John", "greeting3") # Then self.assertEqual(1, len(slots_greeting1)) self.assertEqual(1, len(slots_greeting2)) self.assertEqual(0, len(slots_goodbye)) self.assertEqual("John", slots_greeting1[0][RES_VALUE]) self.assertEqual("name1", slots_greeting1[0][RES_ENTITY]) self.assertEqual("John", slots_greeting2[0][RES_VALUE]) self.assertEqual("name2", slots_greeting2[0][RES_ENTITY])
def test_should_get_no_slots_with_none_intent(self): # Given slots_dataset_stream = io.StringIO(""" --- type: intent name: greeting utterances: - Hello [name](John)""") dataset = Dataset.from_yaml_files("en", [slots_dataset_stream]).json parser = ProbabilisticIntentParser().fit(dataset) # When slots = parser.get_slots("Hello John", None) # Then self.assertListEqual([], slots)