62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
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()
|