From 3cc1f9bcdebb856c352a3d28250ced11dcfb7940 Mon Sep 17 00:00:00 2001 From: kenkeiras Date: Thu, 11 May 2017 20:36:49 +0200 Subject: [PATCH] Add question asking operator. --- naive-nlu/knowledge_evaluation.py | 11 ++++++++++- naive-nlu/test.py | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/naive-nlu/knowledge_evaluation.py b/naive-nlu/knowledge_evaluation.py index c625056..c705964 100644 --- a/naive-nlu/knowledge_evaluation.py +++ b/naive-nlu/knowledge_evaluation.py @@ -4,7 +4,7 @@ from modifiable_property import ModifiableProperty def resolve(knowledge_base, elements, value): if isinstance(value, int): return elements[value] - elif isinstance(value, tuple): + elif isinstance(value, tuple) or isinstance(value, list): return integrate_information(knowledge_base, { "elements": elements, "parsed": value, @@ -89,10 +89,19 @@ def has_capacity(knowledge_base, elements, subj, capacity): ) +def question(knowledge_base, elements, subj): + subj = resolve(knowledge_base, elements, subj) + + if isinstance(subj, ModifiableProperty): + return subj.getter() + return subj + + knowledge_ingestion = { "exists-property-with-value": exists_property_with_value, "pertenence-to-group": pertenence_to_group, "has-capacity": has_capacity, + "question": question, } diff --git a/naive-nlu/test.py b/naive-nlu/test.py index 552b416..b7e269c 100644 --- a/naive-nlu/test.py +++ b/naive-nlu/test.py @@ -74,6 +74,17 @@ base_knowledge = { } +def test_assumption(expectedResponse, knowledge, query): + print("Query: {}".format(query['text'])) + print("Expected: {}".format(expectedResponse)) + + import knowledge_evaluation + result = knowledge_evaluation.integrate_information( + knowledge.knowledge, + query) + print("\x1b[0;3{}mResult: {}\x1b[0m".format("1" if result != expectedResponse else "2", result)) + + def main(): knowledge = KnowledgeBase( knowledge=base_knowledge, @@ -93,7 +104,12 @@ def main(): print() print('-----') print(json.dumps(sorted(knowledge.knowledge.keys()), indent=4)) + print('-----') + 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(True, knowledge, queryTrue) + test_assumption(False, knowledge, queryFalse) if __name__ == '__main__': main()