コード例 #1
0
def test_ontology():
    kb = KnowledgeBase()
    ontology = {
        "ontology": {
            "season": [
                "fall",
                "spring",
                "summer",
                "winter"
            ],
            "month": [
                "january",
                "february",
                "march",
                "april",
                "may",
                "june",
                "july",
                "august",
                "september",
                "october",
                "november",
                "december"
            ]
        }
    }
    kb.load_json(ontology)
    df = DialogueFlow(States.A, Speaker.USER, kb=kb)
    df.add_state(States.A)
    df.add_state(States.B)
    df.add_state(States.C)
    df.add_state(States.D)
    df.add_state(States.E)
    df.set_error_successor(States.A, States.E)
    df.set_error_successor(States.B, States.E)
    df.set_error_successor(States.C, States.E)
    df.set_error_successor(States.D, States.E)
    df.add_user_transition(States.A, States.B, "[#ONT(month)]")
    df.add_system_transition(States.B, States.C, "B to C")
    df.add_user_transition(States.C, States.D, "[$m=#ONT(month), $s=#ONT(season)]")

    df.user_turn("january")
    assert df.state() == States.B
    assert df.system_turn() == "B to C"
    df.user_turn("october is in the fall season")
    assert df.state() == States.D
    assert df._vars["m"] == "october"
    assert df._vars["s"] == "fall"

    df.set_state(States.A)
    df.set_speaker(Speaker.USER)
    df.user_turn("hello there", debugging=False)
    assert df.state() == States.E
コード例 #2
0
def test_information_state_based_dialogue():
    df = DialogueFlow("root", initial_speaker=Speaker.USER)
    df.add_user_transition("root", "one", "$x=[{cat, dog}]")
    df.set_error_successor("root", "one")
    df.add_system_transition("one", "root", "i am a stupid state machine")
    df.add_update_rule("[$x={ice cream, candy}]")
    df.add_update_rule("#ANY($x=candy)", "$y=blah")
    df.add_update_rule("#ANY($x=ice cream)", "$y=None")
    df.add_update_rule("#ANY($y=blah)", "i am a smart info state manager (2.0)")

    df.user_turn("candy", debugging=True)
    assert df.system_turn().strip() == "i am a smart info state manager"
    df.user_turn("ice cream", debugging=True)
    assert df.system_turn(debugging=True).strip() == "i am a stupid state machine"
    df.user_turn("ice cream", debugging=True)
    assert df.system_turn(debugging=True).strip() == "i am a stupid state machine"
    df.user_turn("ice cream", debugging=True)
    assert df.system_turn(debugging=True).strip() == "i am a stupid state machine"
    df.user_turn("ice cream", debugging=True)
    assert df.system_turn(debugging=True).strip() == "i am a stupid state machine"
コード例 #3
0
def test_information_state_based_dialogue():
    df = DialogueFlow('root', initial_speaker=Speaker.USER)
    df.add_user_transition('root', 'one', '$x=[{cat, dog}]')
    df.set_error_successor('root', 'one')
    df.add_system_transition('one', 'root', 'i am a stupid state machine')
    df.add_update_rule('[$x={ice cream, candy}]')
    df.add_update_rule('#ANY($x=candy)', '$y=blah')
    df.add_update_rule('#ANY($x=ice cream)', '$y=None')
    df.add_update_rule('#ANY($y=blah)', 'i am a smart info state manager (2.0)')

    df.user_turn('candy', debugging=True)
    assert df.system_turn().strip() == 'i am a smart info state manager'
    df.user_turn('ice cream', debugging=True)
    assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine'
    df.user_turn('ice cream', debugging=True)
    assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine'
    df.user_turn('ice cream', debugging=True)
    assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine'
    df.user_turn('ice cream', debugging=True)
    assert df.system_turn(debugging=True).strip() == 'i am a stupid state machine'