def test_parse_with_intents_filter(self): # Given / When dataset_stream = io.StringIO(u""" --- type: intent name: MakeTea utterances: - make me a [beverage_temperature:Temperature](hot) cup of tea - make me [number_of_cups:snips/number](five) tea cups --- type: intent name: Make,Coffee utterances: - brew [number_of_cups:snips/number](one) cup of coffee please - make me [number_of_cups] cups of coffee""") dataset = Dataset.from_yaml_files("en", [dataset_stream]).json nlu_engine = SnipsNLUEngine().fit(dataset) nlu_engine.persist(self.tmp_file_path) # When / Then output_target = io.StringIO() with self.fail_if_exception("Failed to parse using CLI script"): with redirect_stdout(output_target): parse(str(self.tmp_file_path), "Make me two cups of coffee", False, 'MakeTea,"Make,Coffee"') output = output_target.getvalue() # Then expected_output = """{ "input": "Make me two cups of coffee", "intent": { "intentName": "Make,Coffee", "probability": 1.0 }, "slots": [ { "entity": "snips/number", "range": { "end": 11, "start": 8 }, "rawValue": "two", "slotName": "number_of_cups", "value": { "kind": "Number", "value": 2.0 } } ] } """ self.assertEqual(expected_output, output)
def test_generate_dataset(self): # Given yaml_string = """ # searchFlight Intent --- type: intent name: searchFlight utterances: - find me a flight to [destination:city](Lima) [date:snips/datetime](tonight) # City Entity --- type: entity name: city values: - [new york, big apple]""" self.tmp_file_path = self.tmp_file_path.with_suffix(".yaml") with self.tmp_file_path.open(mode="w") as f: f.write(unicode_string(yaml_string)) # When out = io.StringIO() with redirect_stdout(out): generate_dataset("en", str(self.tmp_file_path)) printed_value = out.getvalue() # Then expected_value = """{ "entities": { "city": { "automatically_extensible": true, "data": [ { "synonyms": [ "big apple" ], "value": "new york" } ], "matching_strictness": 1.0, "use_synonyms": true }, "snips/datetime": {} }, "intents": { "searchFlight": { "utterances": [ { "data": [ { "text": "find me a flight to " }, { "entity": "city", "slot_name": "destination", "text": "Lima" }, { "text": " " }, { "entity": "snips/datetime", "slot_name": "date", "text": "tonight" } ] } ] } }, "language": "en" } """ self.assertEqual(expected_value, printed_value)