lang-model/naive-nlu/tree_nlu/test.py

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()