def duckling_interpreter(component_builder, tmpdir_factory): conf = RasaNLUModelConfig({"pipeline": [{"name": "ner_duckling"}]}) return utilities.interpreter_for( component_builder, data="./data/examples/rasa/demo-rasa.json", path=tmpdir_factory.mktemp("projects").strpath, config=conf)
def duckling_interpreter(component_builder, tmpdir_factory): conf = RasaNLUModelConfig({"pipeline": [{"name": "ner_duckling_http"}]}) return utilities.interpreter_for( component_builder, data="./data/examples/rasa/demo-rasa.json", path=tmpdir_factory.mktemp("projects").strpath, config=conf)
def test_example_component(component_builder, tmpdir_factory): conf = RasaNLUModelConfig({"pipeline": [ {"name": "tests.example_component.MyComponent"}]}) interpreter = utilities.interpreter_for( component_builder, data="./data/examples/rasa/demo-rasa.json", path=tmpdir_factory.mktemp("projects").strpath, config=conf) r = interpreter.parse("test") assert r is not None
def test_interpreter(pipeline_template, component_builder): test_data = "data/examples/rasa/demo-rasa.json" _conf = utilities.base_test_conf(pipeline_template) _conf["data"] = test_data td = training_data.load_data(test_data) interpreter = utilities.interpreter_for(component_builder, _conf) texts = ["good bye", "i am looking for an indian spot"] for text in texts: result = interpreter.parse(text, time=None) assert result['text'] == text assert not result['intent']['name'] or result['intent']['name'] in td.intents assert result['intent']['confidence'] >= 0 # Ensure the model doesn't detect entity types that are not present # Models on our test data set are not stable enough to require the exact entities to be found for entity in result['entities']: assert entity['entity'] in td.entities
def test_samples(pipeline_template, component_builder): _conf = utilities.base_test_conf(pipeline_template) _conf["data"] = "./data/examples/rasa/demo-rasa.json" interpreter = utilities.interpreter_for(component_builder, _conf) available_intents = [ "greet", "restaurant_search", "affirm", "goodbye", "None" ] samples = [("good bye", { 'intent': 'goodbye', 'entities': [] }), ("i am looking for an indian spot", { 'intent': 'restaurant_search', 'entities': [{ "start": 20, "end": 26, "value": "indian", "entity": "cuisine" }, { "end": 26, "entity": "NORP", "start": 20, "value": "indian" }] })] for text, gold in samples: result = interpreter.parse(text, time=None) assert result['text'] == text, \ "Wrong text for sample '{}'".format(text) assert result['intent']['name'] in available_intents, \ "Wrong intent for sample '{}'".format(text) assert result['intent']['confidence'] >= 0, \ "Low confidence for sample '{}'".format(text) # This ensures the model doesn't detect entities that are not present # Models on our test data set are not stable enough to require the entities to be found for entity in result['entities']: del entity["extractor"] assert entity in gold['entities'], \ "Wrong entities for sample '{}'".format(text)
def test_samples(pipeline_template, component_builder): _conf = utilities.base_test_conf(pipeline_template) _conf["data"] = "./data/examples/rasa/demo-rasa.json" interpreter = utilities.interpreter_for(component_builder, _conf) available_intents = ["greet", "restaurant_search", "affirm", "goodbye", "None"] samples = [ ( "good bye", { 'intent': 'goodbye', 'entities': [] } ), ( "i am looking for an indian spot", { 'intent': 'restaurant_search', 'entities': [{"start": 20, "end": 26, "value": "indian", "entity": "cuisine"}] } ) ] for text, gold in samples: result = interpreter.parse(text, time=None) assert result['text'] == text, \ "Wrong text for sample '{}'".format(text) assert result['intent']['name'] in available_intents, \ "Wrong intent for sample '{}'".format(text) assert result['intent']['confidence'] >= 0, \ "Low confidence for sample '{}'".format(text) # This ensures the model doesn't detect entities that are not present # Models on our test data set are not stable enough to require the entities to be found for entity in result['entities']: del entity["extractor"] assert entity in gold['entities'], \ "Wrong entities for sample '{}'".format(text)
def duckling_interpreter(component_builder): _conf = utilities.base_test_conf("") _conf["pipeline"] = ["ner_duckling"] _conf["data"] = "./data/examples/rasa/demo-rasa.json" return utilities.interpreter_for(component_builder, _conf)