예제 #1
0
def test_eva_robot():
    robot = EvaRobot(TEST_PROJECT, TEST_PROJECT, TEST_PROJECT)
    robot.train()

    rst = robot.process_question("帮我查一下美国利率新闻")
    # todo query answer json in evarobot
    target = {
        'intent': 'search',
        'sid': 0,
        'response_id': 'search',
        'nlu': {
            'intent': 'search',
            'slots': {
                'country': 'United States',
                'category': 'Interest Rate'
            }
        }
    }
    assert same_dict(rst, target)
    rst = robot.process_question("帮我查一下伊朗的新闻")
    from pprint import pprint
    pprint(rst)

    rst = robot.process_question("分析一下美元和黄金的相关性")
    pprint(rst)
    rst = robot.process_question("2003年")
    rst = robot.process_question("二零零三年")
    pprint(rst)
예제 #2
0
def test_robot():
    robot0 = NLURobot.get_robot(TEST_PROJECT)
    robot = NLURobot.get_robot(TEST_PROJECT)

    assert id(robot0) == id(robot)

    robot = NLURobot.reset_robot(TEST_PROJECT)
    assert id(robot) != id(robot0)
    robot0 = NLURobot.get_robot(TEST_PROJECT)
    assert id(robot0) == id(robot)

    robot0.train()
    context = {
        "intent": None,
        "agents": [("weather.query", "weather.query", "node4")]
    }
    rst = robot0.predict(context, "帮我查一下北京今天的天气")
    target = {
        'question': '帮我查一下北京今天的天气',
        'intent': 'weather.query',
        'confidence': 1,
        'entities': {
            'date': '今天',
            'city': '北京'
        },
        'target_entities': ['meteorology', 'date', 'city'],
        'node_id': 'node4'
    }
    assert same_dict(rst, target)
예제 #3
0
def test_entity_recognizer():
    recognizer = EntityRecognizer.get_entity_recognizer(file_io)
    result = recognizer.recognize("北京在哪里", ["city"])
    target = {'city': '北京'}
    assert (result == target)
    result = recognizer.recognize("帝都在哪里", ["city"])
    assert (result == target)
    result = recognizer.recognize("福州在哪里", ["city"])
    assert (result == {'city': '福州'})
    result = recognizer.recognize("深圳在哪里", ["city"])
    assert (result == {})
    result = recognizer.recognize("深圳会下雨吗", ["city", "meteorology"])
    assert (same_dict(result, {"meteorology": "雨"}))
    result = recognizer.recognize("深圳会下雨吗", ["@sys.city", "meteorology"])
    assert (same_dict(result, {"meteorology": "雨", "@sys.city": "深圳"}))
    result = recognizer.recognize("深圳今天会下雨吗", ["@sys.date"])
    assert result == {"@sys.date": "今天"}
예제 #4
0
파일: io_test.py 프로젝트: evarobot/eva
def test_dm_file_io():
    tree = file_io.get_dict_tree()
    assert(len(tree["children"]) == 7)
    target = {
        "data": {
            "id": "root",
            "tag": "root",
            "entrance": False,
            "response_id": "root",
            "timeout": "5",
            "type": "TYPE_MIX"
        }
    }
    assert same_dict(tree, target, "children")
예제 #5
0
def test_eva_robot():
    robot = EvaRobot(TEST_PROJECT, TEST_PROJECT, TEST_PROJECT)
    robot.train()
    rst = robot.process_question("帮我查一下北京今天的天气")
    # todo query answer json in evarobot
    target = {
        'intent': 'weather.query',
        'nlu': {
            'intent': 'weather.query',
            'slots': {
                'city': '北京',
                'date': '今天'
            }
        },
        'response_id': 'result',
        'sid': 0
    }
    assert same_dict(rst, target)
예제 #6
0
def test_en_robot():
    robot = EvaRobot(TEST_PROJECT, TEST_PROJECT, TEST_PROJECT)
    robot.train()

    rst = robot.process_question("show me American interest rate")
    # todo query answer json in evarobot
    target = {
        'intent': 'search',
        'sid': 0,
        'response_id': 'search',
        'nlu': {
            'intent': 'search',
            'slots': {
                'country': 'United States',
                'category': 'Interest Rate'
            }
        }
    }
    assert same_dict(rst, target)
예제 #7
0
파일: io_test.py 프로젝트: evarobot/eva
def test_file_io():
    sensitive_words = file_io.get_sensitive_words()
    assert (set(sensitive_words) == {"共产党", "毛泽东", "法轮功"})

    not_nonsense_words = file_io.get_not_nonsense_words()
    assert (set(not_nonsense_words) == {"你好", "晚安"})

    rst = file_io.get_entities_with_value()
    entities = rst["entities"]
    target = {
        'city': {
            '北京': ['帝都', '北京'],
            '上海': ['魔都', '上海'],
            '福州': ['福州']
        },
        '@sys.city': {
            '北京': ['帝都', '北京'],
            '上海': ['魔都', '上海'],
            '深圳': ['鹏城', '深圳']
        },
        'meteorology': {
            '晴': ['晴'],
            '雨': ['雨']
        }
    }
    assert same_dict(target, entities)
    scripts = rst["scripts"]
    sys_script_path = os.path.join(PROJECT_DIR, "tests", "data", "projects",
                                   "sys", "entity", "date.py")
    script_path = os.path.join(PROJECT_DIR, "tests", "data", "projects",
                               "project_cn_test", "entity", "date.py")
    with open(sys_script_path, "r") as file:
        sys_script = file.read()
    with open(script_path, "r") as file:
        script = file.read()
    assert scripts == {
        "@sys.date": sys_script,
        "date": script,
    }

    rst = file_io.get_label_data()
    target = {
        LabeledData("weather.query", "帮我查一下北京今天的天气"),
        LabeledData("weather.query", "深圳明天会下雨吗"),
        LabeledData("weather.query", "今天什么天气"),
        LabeledData("airline.query", "帮我查一下从北京到上海的航班"),
        LabeledData("airline.query", "帮我看看去北京的航班有哪些")
    }
    assert set(rst) == target

    rst = file_io.get_all_intent_entities()

    target = {
        'airline.query': {
            'slots': {
                'from_city': 'city',
                'to_city': 'city'
            }
        },
        'weather.query': {
            'slots': {
                'city': '@sys.city',
                'date': '@sys.date',
                'meteorology': 'meteorology'
            }
        }
    }
    assert same_dict(rst, target)