Integrate elements.

* Move interface to KnowledgeBase object.
 * Connect process and evaluate calls.
This commit is contained in:
kenkeiras 2017-05-11 19:54:02 +02:00
parent edc3cb97ab
commit e42ef8f415
6 changed files with 150 additions and 84 deletions

View file

@ -2,31 +2,29 @@
from functools import reduce
from knowledge_base import KnowledgeBase
def make_template(knowledge_base: KnowledgeBase, text, parsed):
def make_template(knowledge_base, text, parsed):
tokens = text.split()
matcher = list(tokens)
template = list(parsed)
for i in range(len(tokens)):
word = tokens[i]
for i in range(len(matcher)):
word = matcher[i]
if word in template:
print(word, i, template)
template[template.index(word)] = i
print(knowledge_base)
tokens[i] = {'groups': set(knowledge_base.knowledge[word]['groups'])}
return tokens, template
matcher[i] = {
'groups': set(knowledge_base.knowledge[word]['groups'])
}
return tokens, matcher, template
def integrate_language(knowledge_base: KnowledgeBase, example):
def integrate_language(knowledge_base, example):
text = example["text"].lower()
parsed = example["parsed"]
matcher, result = make_template(knowledge_base, text, parsed)
tokens, matcher, result = make_template(knowledge_base, text, parsed)
print(text)
print(parsed)
print()
return matcher, result
return tokens, matcher, result
def get_matching(sample, other):
@ -67,3 +65,15 @@ def reprocess_language_knowledge(knowledge_base, examples):
print()
return pattern_examples
def get_fit(knowledge, row):
for sample, ast in knowledge.trained:
if len(sample) != len(row):
continue
if all(map(lambda x: (not isinstance(sample[x], str)
or sample[x] == row[x]),
range(len(sample)))):
return sample, ast
else:
return None