import json import logging logging.getLogger().setLevel(logging.INFO) from .knowledge_base import KnowledgeBase from .modifiable_property import is_modifiable_property import hy from .tests import base def test_assumption(expectedResponse, knowledge, query): logging.info("Query: {}".format(query['text'])) logging.info("Expected: {}".format(expectedResponse)) result, abstract_tree, diff = knowledge.process(query['text']) end_result = result.getter() if is_modifiable_property(result) else result logging.info("\x1b[0;3{}mResult: {}\x1b[0m".format("1" if end_result != expectedResponse else "2", end_result)) assert(end_result == expectedResponse) def main(): base.run_tests() knowledge = KnowledgeBase( knowledge=base_knowledge, ) differences = knowledge.train(examples) logging.info("----") logging.info(differences()) logging.info("----") test_assumption(True, knowledge, {'text': 'earth is a planet'}) test_assumption(True, knowledge, {'text': 'is lava dangerous?'}) for test in [{'text': 'a bus can run'}, {'text': 'io is a moon'}]: row = test['text'] result, inferred_tree, differences = knowledge.process(row) logging.info("result:", result) logging.info(differences()) logging.info("---") logging.info('-----') logging.info(json.dumps(sorted(knowledge.knowledge.keys()), indent=4)) logging.info('-----') queryTrue = { "text": "is io a moon?", "parsed": ("question", ("pertenence-to-group", "io", "moon")) } queryFalse = { "text": "is io a planet?", "parsed": ("question", ("pertenence-to-group", "io", "planet")) } test_assumption(False, knowledge, queryFalse) test_assumption(True, knowledge, queryTrue) if __name__ == '__main__': main()