2017-05-11 17:54:02 +00:00
|
|
|
import json
|
|
|
|
|
|
|
|
from knowledge_base import KnowledgeBase
|
2017-05-10 23:05:07 +00:00
|
|
|
|
|
|
|
examples = [
|
|
|
|
{
|
|
|
|
"text": "icecream is cold",
|
|
|
|
"parsed": ("exists-property-with-value", 'icecream', 'cold'),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "lava is dangerous",
|
|
|
|
"parsed": ("exists-property-with-value", 'lava', 'dangerous')
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "earth is a planet",
|
|
|
|
"parsed": ("pertenence-to-group", 'earth', 'planet'),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "Green is a color",
|
|
|
|
"parsed": ("pertenence-to-group", 'green', 'color'),
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "a plane can fly",
|
|
|
|
"parsed": ("has-capacity", 'plane', 'fly')
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"text": "a wale can swim",
|
|
|
|
"parsed": ("has-capacity", 'wale', 'swim')
|
|
|
|
}
|
|
|
|
]
|
|
|
|
|
|
|
|
base_knowledge = {
|
|
|
|
'icecream': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'object', 'comestible', 'sweet']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'lava': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'object']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'earth': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'object', 'planet']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'green': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'color', 'concept']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'plane': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'object', 'vehicle', 'fast']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'car': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'object', 'vehicle', 'slow-ish']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'wale': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'object', 'living-being']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'cold': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['property', 'temperature']),
|
|
|
|
"as_property": "temperature",
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'dangerous': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['property']),
|
|
|
|
"as_property": "safety",
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'planet': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['noun', 'group']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'color': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['property', 'group']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'fly': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['verb']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
'swim': {
|
2017-05-11 17:54:02 +00:00
|
|
|
"groups": set(['verb']),
|
2017-05-10 23:05:07 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
def main():
|
2017-05-11 17:54:02 +00:00
|
|
|
knowledge = KnowledgeBase(
|
|
|
|
knowledge=base_knowledge,
|
2017-05-10 23:05:07 +00:00
|
|
|
)
|
|
|
|
|
2017-05-11 17:54:02 +00:00
|
|
|
differences = knowledge.train(examples)
|
|
|
|
print("----")
|
|
|
|
print(differences())
|
|
|
|
print("----")
|
|
|
|
|
2017-05-10 23:05:07 +00:00
|
|
|
for test in [{'text': 'a bus can run'}, {'text': 'io is a moon'}]:
|
|
|
|
row = test['text'].lower().split()
|
2017-05-11 17:54:02 +00:00
|
|
|
result, differences = knowledge.process(row)
|
|
|
|
|
|
|
|
print("result:", result)
|
|
|
|
print(differences())
|
|
|
|
print()
|
|
|
|
print('-----')
|
|
|
|
print(json.dumps(sorted(knowledge.knowledge.keys()), indent=4))
|
2017-05-10 23:05:07 +00:00
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
main()
|