lang-model/naive-nlu/knowledge_evaluation.py

60 lines
1.6 KiB
Python
Raw Normal View History

def resolve(elements, value):
if isinstance(value, int):
return elements[value]
return value
def property_for_value(knowledge_base, value):
print(value)
print(knowledge_base[value])
return knowledge_base[value]['as_property']
def exists_property_with_value(knowledge_base, elements, subj, value):
subj = resolve(elements, subj)
value = resolve(elements, value)
if subj not in knowledge_base:
knowledge_base[subj] = {}
knowledge_base[subj][property_for_value(knowledge_base, value)] = value
def pertenence_to_group(knowledge_base, elements, subj, group):
subj = resolve(elements, subj)
group = resolve(elements, group)
if subj not in knowledge_base:
knowledge_base[subj] = {}
if "groups" not in knowledge_base[subj]:
knowledge_base[subj]["groups"] = set()
knowledge_base[subj]["groups"].add(group)
def has_capacity(knowledge_base, elements, subj, capacity):
subj = resolve(elements, subj)
capacity = resolve(elements, capacity)
if subj not in knowledge_base:
knowledge_base[subj] = {}
if "capacities" not in knowledge_base[subj]:
knowledge_base[subj]["capacities"] = set()
knowledge_base[subj]["capacities"].add(capacity)
knowledge_ingestion = {
"exists-property-with-value": exists_property_with_value,
"pertenence-to-group": pertenence_to_group,
"has-capacity": has_capacity,
}
def integrate_information(knowledge_base, example):
method = example['parsed'][0]
args = example['parsed'][1:]
elements = example.get('elements', None)
knowledge_ingestion[method](knowledge_base, elements, *args)