diff --git a/naive-nlu/tree_nlu/knowledge_base.py b/naive-nlu/tree_nlu/knowledge_base.py index e00bc0d..31c84a1 100644 --- a/naive-nlu/tree_nlu/knowledge_base.py +++ b/naive-nlu/tree_nlu/knowledge_base.py @@ -24,6 +24,13 @@ class KnowledgeBase(object): # Parse everything parsed_examples = [] for example in examples: + # If there's parsed data, leverage it ASAP + if 'parsed' in example: + result = knowledge_evaluation.integrate_information(self.knowledge, { + "parsed": example['parsed'], + }) + self.act_upon(result) + logging.info("\x1b[7;32m> {} \x1b[0m".format(example)) tokens, decomposition, inferred_tree = parsing.integrate_language(self, example) logging.info(tokens) diff --git a/naive-nlu/tree_nlu/knowledge_evaluation.py b/naive-nlu/tree_nlu/knowledge_evaluation.py index 0869728..4a49faa 100644 --- a/naive-nlu/tree_nlu/knowledge_evaluation.py +++ b/naive-nlu/tree_nlu/knowledge_evaluation.py @@ -123,12 +123,17 @@ def pertenence_to_group(knowledge_base, elements, subj, group): if "groups" not in knowledge_base[subj]: knowledge_base[subj]["groups"] = set() - return modifiable_element_for_existance_in_set( - container=knowledge_base[subj], - set_name="groups", - element=group - ) + if group not in knowledge_base: + knowledge_base[group] = {} + if "groups" not in knowledge_base[group]: + knowledge_base[group]["groups"] = set() + + return modifiable_element_for_existance_in_group( + container=knowledge_base[subj], + element=group, + backlink=knowledge_base[group], + ) def has_capacity(knowledge_base, elements, subj, capacity): subj = resolve(knowledge_base, elements, subj)