Пример #1
0
    def test_planning3(self):
        system = DialogueSystem(TestPlanning.domain2)

        system.get_settings().show_gui = False

        system.get_settings().horizon = 2
        system.start_system()
        TestPlanning.inference.check_prob(system.get_state(), "a_m",
                                          "AskRepeat", 1.0)
Пример #2
0
    def test_planning4(self):
        system = DialogueSystem(TestPlanning.domain3)

        system.get_settings().show_gui = False

        system.get_settings().horizon = 3
        system.start_system()

        t1 = CategoricalTableBuilder("a_u")
        t1.add_row("Ask(Coffee)", 0.95)
        t1.add_row("Ask(Tea)", 0.02)
        system.add_content(t1.build())
        TestPlanning.inference.check_prob(system.get_state(), "a_m",
                                          "Do(Coffee)", 1.0)
Пример #3
0
    def test_3(self):
        system = DialogueSystem(TestRule2.domain)
        system.get_settings().show_gui = False
        system.detach_module(ForwardPlanner)
        eq_factor = EquivalenceDistribution.none_prob
        EquivalenceDistribution.none_prob = 0.1
        old_prune_threshold = StatePruner.value_pruning_threshold
        StatePruner.value_pruning_threshold = 0.0
        system.start_system()

        TestRule2.inference.check_util(system.get_state(), "a_m'", "Do(A)",
                                       0.6)
        TestRule2.inference.check_util(system.get_state(), "a_m'", "Do(B)",
                                       -2.6)

        builder = CategoricalTableBuilder("a_u")
        builder.add_row("Ask(B)", 0.8)
        builder.add_row("None", 0.2)
        system.get_state().remove_nodes(
            system.get_state().get_action_node_ids())
        system.get_state().remove_nodes(
            system.get_state().get_utility_node_ids())
        system.add_content(builder.build())

        TestRule2.inference.check_util(system.get_state(), "a_m'", "Do(A)",
                                       -4.35)
        TestRule2.inference.check_util(system.get_state(), "a_m'", "Do(B)",
                                       2.357)

        EquivalenceDistribution.none_prob = eq_factor
        StatePruner.value_pruning_threshold = old_prune_threshold
Пример #4
0
    def test_5(self):
        domain2 = XMLDomainReader.extract_domain(TestRule2.domain_file3)
        system2 = DialogueSystem(domain2)
        system2.detach_module(ForwardPlanner)
        system2.get_settings().show_gui = False
        system2.start_system()

        TestRule2.inference.check_util(
            system2.get_state(), ["a_ml'", "a_mg'", "a_md'"],
            Assignment([
                Assignment("a_ml'", "SayYes"),
                Assignment("a_mg'", "Nod"),
                Assignment("a_md'", "None")
            ]), 2.4)
        TestRule2.inference.check_util(
            system2.get_state(), ["a_ml'", "a_mg'", "a_md'"],
            Assignment([
                Assignment("a_ml'", "SayYes"),
                Assignment("a_mg'", "Nod"),
                Assignment("a_md'", "DanceAround")
            ]), -0.6)
        TestRule2.inference.check_util(
            system2.get_state(), ["a_ml'", "a_mg'", "a_md'"],
            Assignment([
                Assignment("a_ml'", "SayYes"),
                Assignment("a_mg'", "None"),
                Assignment("a_md'", "None")
            ]), 1.6)
Пример #5
0
    def test_state_copy(self):
        system = DialogueSystem(TestDialogueState.domain)
        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False

        system.get_settings().show_gui = False
        system.start_system()

        initial_state = copy(system.get_state())

        rule_id = ""
        for id in system.get_state().get_node("u_u2").get_output_node_ids():
            if str(system.get_content(id)).find("+=HowAreYou") != -1:
                rule_id = id

        TestDialogueState.inference.check_prob(
            initial_state, rule_id, Effect.parse_effect("a_u2+=HowAreYou"),
            0.9)
        TestDialogueState.inference.check_prob(initial_state, rule_id,
                                               Effect.parse_effect("Void"),
                                               0.1)

        TestDialogueState.inference.check_prob(initial_state, "a_u2",
                                               "[HowAreYou]", 0.2)
        TestDialogueState.inference.check_prob(initial_state, "a_u2",
                                               "[Greet, HowAreYou]", 0.7)
        TestDialogueState.inference.check_prob(initial_state, "a_u2", "[]",
                                               0.1)

        StatePruner.enable_reduction = True
Пример #6
0
    def test_rule_and_params(self):
        domain = XMLDomainReader.extract_domain(TestRuleAndParams.domain_file)
        system = DialogueSystem(domain)

        system.get_settings().show_gui = False

        system.start_system()
        assert system.get_content("theta_moves").to_continuous().get_function().get_mean()[0] == pytest.approx(0.2, abs=0.02)
        assert system.get_content("a_u^p").get_prob("I want left") == pytest.approx(0.12, abs=0.03)
        assert len(system.get_state().get_chance_node("theta_moves").get_output_node_ids()) == 1
        assert system.get_state().has_chance_node("movements")
        assert isinstance(system.get_state().get_chance_node("movements").get_distrib(), AnchoredRule)

        t = CategoricalTableBuilder("a_u")
        t.add_row("I want left", 0.8)
        t.add_row("I want forward", 0.1)
        system.add_content(t.build())

        assert len(system.get_state().get_chance_node("theta_moves").get_output_node_ids()) == 0
        assert not system.get_state().has_chance_node("movements")
        assert system.get_content("theta_moves").to_continuous().get_function().get_mean()[0] == pytest.approx(2.0 / 6.0, abs=0.07)

        system.add_content("a_m", "turning left")

        assert system.get_content("a_u^p").get_prob("I want left") == pytest.approx(0.23, abs=0.04)
        assert len(system.get_state().get_chance_node("theta_moves").get_output_node_ids()) == 1
Пример #7
0
    def test_param_4(self):
        system = DialogueSystem(TestParameters.domain1)
        system.detach_module(ForwardPlanner)
        system.get_settings().show_gui = False
        system.start_system()

        rules = TestParameters.domain1.get_models()[1].get_rules()
        outputs = rules[0].get_output(Assignment("u_u", "my name is"))
        o = Effect(BasicEffect("u_u^p", "Pierre"))
        assert isinstance(outputs.get_parameter(o), SingleParameter)
        input = Assignment("theta_5", ValueFactory.create("[0.36, 0.24, 0.40]"))
        assert outputs.get_parameter(o).get_value(input) == pytest.approx(0.36, abs=0.01)

        system.get_state().remove_nodes(system.get_state().get_action_node_ids())
        system.get_state().remove_nodes(system.get_state().get_utility_node_ids())
        system.add_content("u_u", "my name is")

        system.get_state().remove_nodes(system.get_state().get_action_node_ids())
        system.get_state().remove_nodes(system.get_state().get_utility_node_ids())
        system.add_content("u_u", "Pierre")

        system.get_state().remove_nodes(system.get_state().get_action_node_ids())
        system.get_state().remove_nodes(system.get_state().get_utility_node_ids())
        system.add_content("u_u", "my name is")

        system.get_state().remove_nodes(system.get_state().get_action_node_ids())
        system.get_state().remove_nodes(system.get_state().get_utility_node_ids())
        system.add_content("u_u", "Pierre")

        assert system.get_state().query_prob("theta_5").to_continuous().get_function().get_mean()[0] == pytest.approx(0.3, abs=0.12)
Пример #8
0
    def test_IS2013(self):
        domain = XMLDomainReader.extract_domain(TestLearning.domain_file)
        params = XMLStateReader.extract_bayesian_network(TestLearning.parameters_file, "parameters")
        domain.set_parameters(params)
        system = DialogueSystem(domain)
        system.get_settings().show_gui = False
        system.detach_module(ForwardPlanner)
        Settings.nr_samples = Settings.nr_samples * 3
        Settings.max_sampling_time = Settings.max_sampling_time * 10
        system.start_system()

        init_mean = system.get_content("theta_1").to_continuous().get_function().get_mean()

        builder = CategoricalTableBuilder("a_u")
        builder.add_row("Move(Left)", 1.0)
        builder.add_row("Move(Right)", 0.0)
        builder.add_row("None", 0.0)
        system.add_content(builder.build())
        system.get_state().remove_nodes(system.get_state().get_utility_node_ids())
        system.get_state().remove_nodes(system.get_state().get_action_node_ids())

        after_mean = system.get_content("theta_1").to_continuous().get_function().get_mean()

        assert after_mean[0] - init_mean[0] > 0.04
        assert after_mean[1] - init_mean[1] < 0.04
        assert after_mean[2] - init_mean[2] < 0.04
        assert after_mean[3] - init_mean[3] < 0.04
        assert after_mean[4] - init_mean[4] < 0.04
        assert after_mean[5] - init_mean[5] < 0.04
        assert after_mean[6] - init_mean[6] < 0.04
        assert after_mean[7] - init_mean[7] < 0.04

        Settings.nr_samples = int(Settings.nr_samples / 3)
        Settings.max_sampling_time = Settings.max_sampling_time / 10
Пример #9
0
 def test_priority(self):
     system = DialogueSystem(XMLDomainReader.extract_domain(TestRule3.domain_file))
     system.get_settings().show_gui = False
     system.start_system()
     assert system.get_content("a_u").get_prob("Opening") == pytest.approx(0.8, abs=0.01)
     assert system.get_content("a_u").get_prob("Nothing") == pytest.approx(0.1, abs=0.01)
     assert system.get_content("a_u").get_prob("start") == pytest.approx(0.0, abs=0.01)
     assert not system.get_content("a_u").to_discrete().has_prob(ValueFactory.create("start"))
Пример #10
0
    def test_template_quick(self):
        domain = XMLDomainReader.extract_domain("test/data/quicktest.xml")
        system = DialogueSystem(domain)
        system.get_settings().show_gui = False

        system.start_system()
        assert system.get_content("caught").get_prob(False) == pytest.approx(1.0, abs=0.01)
        assert system.get_content("caught2").get_prob(True) == pytest.approx(1.0, abs=0.01)
Пример #11
0
    def test_planning2(self):
        system = DialogueSystem(TestPlanning.domain2)

        system.get_settings().show_gui = False

        system.start_system()
        assert len(system.get_state().get_node_ids()) == 2
        assert not system.get_state().has_chance_node("a_m")
Пример #12
0
 def test_param_6(self):
     system = DialogueSystem(XMLDomainReader.extract_domain("test/data/testparams3.xml"))
     system.get_settings().show_gui = False
     system.start_system()
     table = system.get_content("b").to_discrete()
     assert len(table) == 6
     assert table.get_prob("something else") == pytest.approx(0.45, abs=0.05)
     assert table.get_prob("value: first with type 1") == pytest.approx(0.175, abs=0.05)
     assert table.get_prob("value: second with type 2") == pytest.approx(0.05, abs=0.05)
Пример #13
0
    def test_nlu(self):
        system = DialogueSystem(TestRefResolution.domain)
        system.get_settings().show_gui = False
        system.start_system()
        system.add_user_input("take the red box")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=box, def=def, nb=sg, attr=red]")
        system.add_user_input("take the big yellow box")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=box, def=def, nb=sg, attr=big, attr=yellow]")
        system.add_user_input("take the big and yellow box")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=box, def=def, nb=sg, attr=big, attr=yellow]")
        system.add_user_input("take the big box on your left")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[rel=left(agent), type=box, def=def, nb=sg, attr=big]")
        system.add_user_input("take the big box on the left")
        assert system.get_content("properties(ref_main)").to_discrete().get_prob("[rel=left(agent), type=box, def=def, nb=sg, attr=big]") == pytest.approx(0.5, abs=0.01)
        assert system.get_content("properties(ref_main)").to_discrete().get_prob("[rel=left(spk), type=box, def=def, nb=sg, attr=big]") == pytest.approx(0.5, abs=0.01)
        system.add_user_input("take one box now")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[def=indef, nb=sg, type=box]")
        system.add_user_input("take the small and ugly box ")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=box, def=def, nb=sg, attr=small, attr=ugly]")
        system.add_user_input("now please pick up the book that is behind you")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=book, def=def, nb=sg, rel=behind(ref_behind)]")
        assert system.get_content("ref_behind").get_best() == ValueFactory.create("you")
        assert system.get_content("ref_main").get_best() == ValueFactory.create("the book")
        system.add_user_input("could you take the red ball on the desk")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=ball, attr=red, rel=on(ref_on), def=def, nb=sg]")
        assert system.get_content("ref_main").get_best() == ValueFactory.create("the red ball")
        assert system.get_content("ref_on").get_best() == ValueFactory.create("the desk")
        system.add_user_input("could you take the red ball next to the window")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=ball, attr=red, rel=next to(ref_next to), def=def, nb=sg]")
        assert system.get_content("ref_main").get_best() == ValueFactory.create("the red ball")
        assert system.get_content("ref_next to").get_best() == ValueFactory.create("the window")

        system.add_user_input("could you take the big red ball near the window to your left")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=ball, attr=red, attr=big, rel=near(ref_near), def=def, nb=sg]")
        assert system.get_content("ref_main").get_best() == ValueFactory.create("the big red ball")
        assert system.get_content("properties(ref_near)").get_best() == ValueFactory.create("[type=window, rel=left(agent), def=def, nb=sg]")
        assert system.get_content("ref_near").get_best() == ValueFactory.create("the window")

        system.add_user_input("could you take the big red ball near the window and to your left")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=ball, attr=red, attr=big, rel=left(agent), rel=near(ref_near), def=def, nb=sg]")
        assert system.get_content("ref_main").get_best() == ValueFactory.create("the big red ball")
        assert system.get_content("properties(ref_near)").get_best() == ValueFactory.create("[type=window, def=def, nb=sg]")
        assert system.get_content("ref_near").get_best() == ValueFactory.create("the window")

        system.add_user_input("and now pick up the books that are on top of the shelf")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=book, rel=top(ref_top), def=def, nb=pl]")
        assert system.get_content("properties(ref_top)").get_best() == ValueFactory.create("[type=shelf,def=def, nb=sg]")
        system.add_user_input("and now pick up one book which is big")
        assert system.get_content("properties(ref_main)").get_best() == ValueFactory.create("[type=book,def=indef, attr=big, nb=sg]")

        nbest = dict()
        nbest["and take the red book"] = 0.5
        nbest["and take the wred hook"] = 0.1
        system.add_user_input(nbest)
        assert system.get_content("properties(ref_main)").get_prob("[type=book,attr=red,def=def,nb=sg]") == pytest.approx(0.5, abs=0.01)
        assert system.get_content("properties(ref_main)").get_prob("[type=hook,attr=wred,def=def,nb=sg]") == pytest.approx(0.1, abs=0.01)
Пример #14
0
    def test_incondition(self):
        domain = XMLDomainReader.extract_domain(TestRule3.incondition_file)

        system = DialogueSystem(domain)
        system.get_settings().show_gui = False

        system.start_system()

        assert system.get_content("out").get_prob("val1 is in [val1, val2]") + system.get_content("out").get_prob("val1 is in [val2, val1]") == pytest.approx(0.56, abs=0.01)
        assert system.get_content("out2").get_prob("this is a string is matched") == pytest.approx(0.5, abs=0.01)
Пример #15
0
 def test_underspec(self):
     domain = XMLDomainReader.extract_domain("test/data/underspectest.xml")
     system = DialogueSystem(domain)
     system.get_settings().show_gui = False
     StatePruner.enable_reduction = False
     system.start_system()
     assert system.get_content("match").get_prob("obj_1") == pytest.approx(0.66, abs=0.05)
     assert system.get_content("match").get_prob("obj_3") == pytest.approx(0.307, abs=0.05)
     assert len(system.get_state().get_chance_node_ids()) == 14
     StatePruner.enable_reduction = True
Пример #16
0
 def test_6(self):
     domain2 = XMLDomainReader.extract_domain(TestRule2.domain_file4)
     system2 = DialogueSystem(domain2)
     system2.detach_module(ForwardPlanner)
     system2.get_settings().show_gui = False
     system2.start_system()
     TestRule2.inference.check_prob(system2.get_state(), "A",
                                    ValueFactory.create("[a1,a2]"), 1.0)
     TestRule2.inference.check_prob(system2.get_state(), "a_u",
                                    "Request(ball)", 0.5)
Пример #17
0
    def test_reward_learner(self):
        system = DialogueSystem()
        Settings.nr_samples = Settings.nr_samples * 2

        out_break = False
        for k in range(3):
            if out_break is True:
                break

            if k > 0:
                # log message
                pass

            system = DialogueSystem(
                XMLDomainReader.extract_domain(TestSimulator.main_domain2))
            sim_domain3 = XMLDomainReader.extract_domain(
                TestSimulator.sim_domain2)
            sim = Simulator(system, sim_domain3)
            system.attach_module(sim)

            # NEED GUI
            system.get_settings().show_gui = False

            system.start_system()

            for i in range(20):
                if system.get_module(Simulator) is None:
                    break

                sleep(0.1)

                try:
                    self.check_condition2(system)
                    system.detach_module(Simulator)
                    out_break = True
                    break
                except:
                    assert False

            system.detach_module(Simulator)

        self.check_condition2(system)
        system.detach_module(Simulator)
        system.pause(True)
        theta_correct = system.get_content(
            "theta_correct").to_continuous().get_function()
        theta_incorrect = system.get_content(
            "theta_incorrect").to_continuous().get_function()
        theta_repeat = system.get_content(
            "theta_repeat").to_continuous().get_function()
        self.log.debug("theta_correct %s" % theta_correct)
        self.log.debug("theta_incorrect %s" % theta_incorrect)
        self.log.debug("theta_repeat %s" % theta_repeat)

        Settings.nr_samples = Settings.nr_samples / 2.0
Пример #18
0
    def test_simulator(self):
        system = DialogueSystem()
        nr_samples = Settings.nr_samples
        Settings.nr_samples = nr_samples / 5.0

        out_break = False
        for k in range(3):
            if out_break:
                break

            system = DialogueSystem(
                XMLDomainReader.extract_domain(TestSimulator.main_domain))
            if k > 0:
                self.log.warning("restarting the simulator...")
                pass

            system.get_domain().get_models().pop(0)
            system.get_domain().get_models().pop(0)
            system.get_domain().get_models().pop(0)

            sim_domain2 = XMLDomainReader.extract_domain(
                TestSimulator.sim_domain)
            sim = Simulator(system, sim_domain2)

            system.attach_module(sim)

            # NEED GUI
            system.get_settings().show_gui = False

            system.start_system()

            for i in range(40):
                if system.get_module(Simulator) is None:
                    break
                sleep(0.2)

                # NEED DialogueRecorder
                str = system.get_module(DialogueRecorder).get_record()
                try:
                    self.check_condition(str)
                    system.detach_module(Simulator)
                    out_break = True
                    break
                except:
                    pass

            if not out_break:
                system.detach_module(Simulator)

        # NEED DialogueRecorder
        self.check_condition(system.get_module(DialogueRecorder).get_record())

        system.detach_module(Simulator)
        system.pause(True)
        Settings.nr_samples = nr_samples * 5
Пример #19
0
    def test_1(self):
        system = DialogueSystem(TestRule1.domain)
        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False
        system.get_settings().show_gui = False
        system.start_system()

        TestRule1.inference.check_prob(system.get_state(), "a_u", "Greeting",
                                       0.8)
        TestRule1.inference.check_prob(system.get_state(), "a_u", "None", 0.2)

        StatePruner.enable_reduction = True
Пример #20
0
    def test_planning(self):
        system = DialogueSystem(TestPlanning.domain)

        system.get_settings().show_gui = False

        system.start_system()
        assert len(system.get_state().get_nodes()) == 3
        assert len(system.get_state().get_chance_nodes()) == 3
        assert len(system.get_state().get_evidence().get_variables()) == 0
        TestPlanning.inference.check_prob(system.get_state(), "a_m3", "Do",
                                          1.0)
        TestPlanning.inference.check_prob(system.get_state(), "obj(a_m3)", "A",
                                          1.0)
Пример #21
0
    def test_param1(self):
        domain = XMLDomainReader.extract_domain(TestDemo.domain_file)
        params = XMLStateReader.extract_bayesian_network(
            TestDemo.param_file, "parameters")
        domain.set_parameters(params)
        system = DialogueSystem(domain)
        system.get_settings().show_gui = False

        system.detach_module(ForwardPlanner)
        system.get_settings().show_gui = False

        system.start_system()
        system.add_content("a_m", "AskRepeat")

        t = CategoricalTableBuilder("a_u")
        t.add_row("DoA", 0.7)
        t.add_row("a_u", 0.2)
        t.add_row("a_u", 0.1)
        system.add_content(t.build())
        for i in range(3000):
            print((system.get_state().get_chance_node("theta").sample()
                   ).get_array()[0])
Пример #22
0
    def test_7(self):
        system = DialogueSystem(TestRule1.domain)
        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False
        system.get_settings().show_gui = False
        system.start_system()

        TestRule1.inference.check_prob(system.get_state(), "a_u2",
                                       "[Greet, HowAreYou]", 0.7)
        TestRule1.inference.check_prob(system.get_state(), "a_u2", "[]", 0.1)
        TestRule1.inference.check_prob(system.get_state(), "a_u2",
                                       "[HowAreYou]", 0.2)

        StatePruner.enable_reduction = True
Пример #23
0
    def test_4(self):
        system = DialogueSystem(TestRule1.domain)
        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False
        system.get_settings().show_gui = False
        system.start_system()

        TestRule1.inference.check_prob(system.get_state(), "o",
                                       "and we have var1=value2", 0.3)
        TestRule1.inference.check_prob(system.get_state(), "o",
                                       "and we have localvar=value1", 0.2)
        TestRule1.inference.check_prob(system.get_state(), "o",
                                       "and we have localvar=value3", 0.28)

        StatePruner.enable_reduction = True
Пример #24
0
    def test_5(self):
        system = DialogueSystem(TestRule1.domain)
        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False
        system.get_settings().show_gui = False
        system.start_system()

        TestRule1.inference.check_prob(system.get_state(), "o2",
                                       "here is value1", 0.35)
        TestRule1.inference.check_prob(system.get_state(), "o2",
                                       "and value2 is over there", 0.07)
        TestRule1.inference.check_prob(system.get_state(), "o2",
                                       "value3, finally", 0.28)

        StatePruner.enable_reduction = True
Пример #25
0
    def test_1(self):
        system = DialogueSystem(TestRule2.domain)
        eq_factor = EquivalenceDistribution.none_prob
        EquivalenceDistribution.none_prob = 0.1
        old_prune_threshold = StatePruner.value_pruning_threshold
        StatePruner.value_pruning_threshold = 0.0

        system.get_settings().show_gui = False
        system.detach_module(ForwardPlanner)
        system.start_system()

        TestRule2.inference.check_prob(system.get_state(), "a_u^p", "Ask(A)",
                                       0.63)
        TestRule2.inference.check_prob(system.get_state(), "a_u^p", "Ask(B)",
                                       0.27)
        TestRule2.inference.check_prob(system.get_state(), "a_u^p", "None",
                                       0.1)

        builder = CategoricalTableBuilder("a_u")
        builder.add_row("Ask(B)", 0.8)
        builder.add_row("None", 0.2)

        system.get_state().remove_nodes(
            system.get_state().get_action_node_ids())
        system.get_state().remove_nodes(
            system.get_state().get_utility_node_ids())

        system.add_content(builder.build())

        TestRule2.inference.check_prob(system.get_state(), "i_u", "Want(A)",
                                       0.090)
        TestRule2.inference.check_prob(system.get_state(), "i_u", "Want(B)",
                                       0.91)

        TestRule2.inference.check_prob(system.get_state(), "a_u^p", "Ask(B)",
                                       0.91 * 0.9)
        TestRule2.inference.check_prob(system.get_state(), "a_u^p", "Ask(A)",
                                       0.09 * 0.9)
        TestRule2.inference.check_prob(system.get_state(), "a_u^p", "None",
                                       0.1)

        TestRule2.inference.check_prob(system.get_state(), "a_u", "Ask(B)",
                                       0.918)
        TestRule2.inference.check_prob(system.get_state(), "a_u", "None",
                                       0.081)

        EquivalenceDistribution.none_prob = eq_factor
        StatePruner.value_pruning_threshold = old_prune_threshold
Пример #26
0
    def test_1(self):
        domain = XMLDomainReader.extract_domain(TestRule3.test1_domain_file)
        inference = InferenceChecks()
        inference.exact_threshold = 0.06
        system = DialogueSystem(domain)
        system.get_settings().show_gui = False
        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False
        system.start_system()

        inference.check_prob(system.get_state(), "found", "A", 0.7)

        inference.check_prob(system.get_state(), "found2", "D", 0.3)
        inference.check_prob(system.get_state(), "found2", "C", 0.5)

        StatePruner.enable_reduction = True
Пример #27
0
    def test_state_copy2(self):
        InferenceChecks.exact_threshold = 0.08

        system = DialogueSystem(TestDialogueState.domain)
        system.get_settings().show_gui = False
        system.detach_module(ForwardPlanner)
        system.start_system()

        initial_state = copy(system.get_state())

        TestDialogueState.inference.check_prob(initial_state, "a_u2",
                                               "[HowAreYou]", 0.2)
        TestDialogueState.inference.check_prob(initial_state, "a_u2",
                                               "[Greet, HowAreYou]", 0.7)
        TestDialogueState.inference.check_prob(initial_state, "a_u2", "[]",
                                               0.1)
Пример #28
0
    def test_3(self):
        InferenceChecks.exact_threshold = 0.06

        system = DialogueSystem(TestRule1.domain)
        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False
        system.get_settings().show_gui = False
        system.start_system()

        TestRule1.inference.check_prob(system.get_state(), "direction",
                                       "straight", 0.79)
        TestRule1.inference.check_prob(system.get_state(), "direction", "left",
                                       0.20)
        TestRule1.inference.check_prob(system.get_state(), "direction",
                                       "right", 0.01)

        StatePruner.enable_reduction = True
Пример #29
0
    def test_2(self):
        inference = InferenceChecks()

        domain = XMLDomainReader.extract_domain(TestRule3.test2_domain_file)
        system = DialogueSystem(domain)
        system.get_settings().show_gui = False

        system.detach_module(ForwardPlanner)
        StatePruner.enable_reduction = False
        system.start_system()

        inference.check_prob(system.get_state(), "graspable(obj1)", "True", 0.81)

        inference.check_prob(system.get_state(), "graspable(obj2)", "True", 0.16)
        inference.check_util(system.get_state(), "a_m'", "grasp(obj1)", 0.592)

        StatePruner.enable_reduction = True
Пример #30
0
    def test_param_2(self):
        InferenceChecks.exact_threshold = 0.1

        system = DialogueSystem(TestParameters.domain1)
        system.detach_module(ForwardPlanner)
        system.get_settings().show_gui = False

        assert system.get_state().has_chance_node("theta_3")
        TestParameters.inference.check_cdf(system.get_state(), "theta_3", 0.6, 0.0)
        TestParameters.inference.check_cdf(system.get_state(), "theta_3", 0.8, 0.5)
        TestParameters.inference.check_cdf(system.get_state(), "theta_3", 0.95, 1.0)

        system.start_system()
        system.add_content("u_u", "brilliant")
        distrib = system.get_content("a_u")

        assert distrib.get_prob("approval") == pytest.approx(0.8, abs=0.05)