コード例 #1
0
ファイル: test_rule_only_provider.py プロジェクト: zoovu/rasa
def test_provide(default_model_storage: ModelStorage,
                 default_execution_context: ExecutionContext):
    resource = Resource("some resource")

    domain = Domain.load("examples/rules/domain.yml")
    trackers = rasa.core.training.load_data("examples/rules/data/rules.yml",
                                            domain)

    policy = RulePolicy.create(
        RulePolicy.get_default_config(),
        default_model_storage,
        resource,
        default_execution_context,
    )

    policy.train(trackers, domain)

    provider = RuleOnlyDataProvider.load({}, default_model_storage, resource,
                                         default_execution_context)
    rule_only_data = provider.provide()

    assert rule_only_data

    for key in [RULE_ONLY_SLOTS, RULE_ONLY_LOOPS]:
        assert rule_only_data[key] == policy.lookup[key]
コード例 #2
0
def test_validate_after_adding_adding_default_parameter(
    get_validation_method: Callable[..., ValidationMethodType],
    nlu: bool,
    core: bool,
):
    # create a schema and rely on rasa to fill in defaults later
    schema1 = _get_example_schema()
    schema1.nodes["nlu-node"] = SchemaNode(needs={},
                                           uses=WhitespaceTokenizer,
                                           constructor_name="",
                                           fn="",
                                           config={})
    schema1.nodes["core-node"] = SchemaNode(needs={},
                                            uses=RulePolicy,
                                            constructor_name="",
                                            fn="",
                                            config={})

    # training
    validate = get_validation_method(finetuning=False,
                                     load=False,
                                     nlu=nlu,
                                     core=core,
                                     graph_schema=schema1)
    validate(importer=EmptyDataImporter())

    # same schema -- we just explicitly pass default values
    schema2 = copy.deepcopy(schema1)
    schema2.nodes["nlu-node"] = SchemaNode(
        needs={},
        uses=WhitespaceTokenizer,
        constructor_name="",
        fn="",
        config=WhitespaceTokenizer.get_default_config(),
    )
    schema2.nodes["core-node"] = SchemaNode(
        needs={},
        uses=RulePolicy,
        constructor_name="",
        fn="",
        config=RulePolicy.get_default_config(),
    )

    # finetuning *does not raise*
    loaded_validate = get_validation_method(finetuning=True,
                                            load=True,
                                            nlu=nlu,
                                            core=core,
                                            graph_schema=schema2)
    loaded_validate(importer=EmptyDataImporter())