Add question asking operator.

This commit is contained in:
kenkeiras 2017-05-11 20:36:49 +02:00
parent 675a494723
commit 3cc1f9bcde
2 changed files with 26 additions and 1 deletions

View File

@ -4,7 +4,7 @@ from modifiable_property import ModifiableProperty
def resolve(knowledge_base, elements, value): def resolve(knowledge_base, elements, value):
if isinstance(value, int): if isinstance(value, int):
return elements[value] return elements[value]
elif isinstance(value, tuple): elif isinstance(value, tuple) or isinstance(value, list):
return integrate_information(knowledge_base, { return integrate_information(knowledge_base, {
"elements": elements, "elements": elements,
"parsed": value, "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 = { knowledge_ingestion = {
"exists-property-with-value": exists_property_with_value, "exists-property-with-value": exists_property_with_value,
"pertenence-to-group": pertenence_to_group, "pertenence-to-group": pertenence_to_group,
"has-capacity": has_capacity, "has-capacity": has_capacity,
"question": question,
} }

View File

@ -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(): def main():
knowledge = KnowledgeBase( knowledge = KnowledgeBase(
knowledge=base_knowledge, knowledge=base_knowledge,
@ -93,7 +104,12 @@ def main():
print() print()
print('-----') print('-----')
print(json.dumps(sorted(knowledge.knowledge.keys()), indent=4)) 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__': if __name__ == '__main__':
main() main()