From 6693b7deb01a34db33816b8a3b18734291104b1c Mon Sep 17 00:00:00 2001 From: kenkeiras Date: Tue, 23 May 2017 23:16:19 +0200 Subject: [PATCH] Remove need from `as_property` info. Probably this can be improved upon if the data is later analyzed with it's similars. --- naive-nlu/tree_nlu/knowledge_base.py | 1 + naive-nlu/tree_nlu/knowledge_evaluation.py | 21 ++++++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/naive-nlu/tree_nlu/knowledge_base.py b/naive-nlu/tree_nlu/knowledge_base.py index 4c27700..e00bc0d 100644 --- a/naive-nlu/tree_nlu/knowledge_base.py +++ b/naive-nlu/tree_nlu/knowledge_base.py @@ -49,6 +49,7 @@ class KnowledgeBase(object): def process(self, row): + row = row.lower() knowledge_before = copy.deepcopy(self.knowledge) logging.info("\x1b[7;32m> {} \x1b[0m".format(row)) tokens = parsing.to_tokens(row) diff --git a/naive-nlu/tree_nlu/knowledge_evaluation.py b/naive-nlu/tree_nlu/knowledge_evaluation.py index a24c07d..ed48f85 100644 --- a/naive-nlu/tree_nlu/knowledge_evaluation.py +++ b/naive-nlu/tree_nlu/knowledge_evaluation.py @@ -41,17 +41,32 @@ def get_subquery_type(knowledge_base, atom): def property_for_value(knowledge_base, value): - return knowledge_base[value]['as_property'] + if 'as_property' in knowledge_base[value]: + return knowledge_base[value]['as_property'] + + return knowledge_base[value].get('groups', set(['noun'])) def modifiable_property_from_property(prop, path, value): def getter(): nonlocal prop, path, value - return (path in prop) and prop[path] == value + if isinstance(path, set): + # If the property is from a set, it's true if any possible + # path has a element as true + return any(map(lambda possible_path: ((possible_path in prop) + and + (prop[possible_path] == value)), + path)) + else: + return (path in prop) and prop[path] == value def setter(): nonlocal prop, path, value - prop[path] = value + if isinstance(path, set): + for possible_path in path: + prop[possible_path] = value + else: + prop[path] = value return ModifiableProperty( getter=getter,