Add session context, increase logging.
This commit is contained in:
parent
359f858c39
commit
bb7d438e0d
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,4 +3,4 @@
|
||||
*.ba?k
|
||||
*.pyc
|
||||
__pycache__
|
||||
treeNLU-*session-*.org
|
||||
treeNLU-*session*.org
|
||||
|
@ -34,7 +34,6 @@ def main():
|
||||
while True:
|
||||
try:
|
||||
data = input("> ").strip()
|
||||
session().log_step(data, 0)
|
||||
except EOFError:
|
||||
print("bye")
|
||||
break
|
||||
@ -50,6 +49,7 @@ def main():
|
||||
show_samples(knowledge)
|
||||
continue
|
||||
|
||||
with session().log(data):
|
||||
ret = knowledge.process(data)
|
||||
if ret:
|
||||
result, _, _ = ret
|
||||
|
@ -97,6 +97,7 @@ def integrate_language(knowledge_base, example):
|
||||
break
|
||||
|
||||
for position, atom in lower_levels:
|
||||
with session().log(atom):
|
||||
session().annotate("\x1b[1mSelecting\x1b[0m: {}".format(atom))
|
||||
similar = get_similar_tree(knowledge_base, atom, tokens)
|
||||
remix, (start_bounds, end_bounds) = build_remix_matrix(knowledge_base, tokens, atom, similar)
|
||||
@ -298,7 +299,7 @@ def get_similar_tree(knowledge_base, atom, tokens):
|
||||
return None
|
||||
|
||||
for i, possibility in enumerate(sorted_possibilities):
|
||||
session().annotate('---- POSSIBILITY #{} ----'.format(i))
|
||||
with session().log(possibility):
|
||||
similar_matcher, similar_result, similar_result_resolved, _, _ = possibility
|
||||
session().annotate('AST: {}'.format(similar_result))
|
||||
session().annotate('Based on: {}'.format(similar_matcher))
|
||||
|
@ -25,21 +25,40 @@ def global_session():
|
||||
return SESSION
|
||||
|
||||
|
||||
class LevelContext:
|
||||
def __init__(self, increaser, decreaser):
|
||||
self.increaser = increaser
|
||||
self.decreaser = decreaser
|
||||
|
||||
def __enter__(self):
|
||||
self.increaser()
|
||||
|
||||
def __exit__(self, _type, _value, _traceback):
|
||||
self.decreaser()
|
||||
|
||||
|
||||
class OrgModeSession:
|
||||
def __init__(self, fname):
|
||||
self.f = open(fname, 'wt')
|
||||
self.last_level = 0
|
||||
self.level = 0
|
||||
|
||||
def annotate(self, annotation):
|
||||
self.f.write("{indentation} {data}\n".format(
|
||||
indentation=' ' * (self.last_level + 2 + 1),
|
||||
indentation=' ' * (self.level + 2 + 1),
|
||||
data=annotation))
|
||||
|
||||
def log_step(self, string, level):
|
||||
def log(self, string):
|
||||
self.f.write("{indentation} {data}\n".format(
|
||||
indentation='*' * (level + 1),
|
||||
indentation='*' * (self.level + 1),
|
||||
data=string))
|
||||
self.last_level = level
|
||||
|
||||
return LevelContext(self.inc_level, self.dec_level)
|
||||
|
||||
def inc_level(self):
|
||||
self.level += 1
|
||||
|
||||
def dec_level(self):
|
||||
self.level -= 1
|
||||
|
||||
def close(self):
|
||||
self.f.close()
|
||||
|
@ -16,13 +16,15 @@ tests = (
|
||||
|
||||
|
||||
def gen_session_name():
|
||||
now = datetime.datetime.utcnow()
|
||||
return "treeNLU-test-session-{}.org".format(
|
||||
now.strftime("%y_%m_%d %H:%M:%S_%f"))
|
||||
return "treeNLU-test-session.org"
|
||||
|
||||
|
||||
def main():
|
||||
org_mode.create_global_session(gen_session_name())
|
||||
|
||||
now = datetime.datetime.utcnow()
|
||||
org_mode.global_session().annotate("Ran on {}".format(
|
||||
now.strftime("%y_%m_%d %H:%M:%S_%f")))
|
||||
failed = False
|
||||
for test_name, test_module in tests:
|
||||
try:
|
||||
@ -39,6 +41,7 @@ def main():
|
||||
failed = True
|
||||
traceback.print_exc()
|
||||
raise
|
||||
org_mode.global_session().close()
|
||||
|
||||
if failed:
|
||||
exit(1)
|
||||
|
@ -125,7 +125,9 @@ def main():
|
||||
knowledge=base_knowledge,
|
||||
)
|
||||
|
||||
differences = knowledge.train(examples)
|
||||
for example in examples:
|
||||
with session().log(example['text']):
|
||||
differences = knowledge.train([example])
|
||||
|
||||
session().annotate("----")
|
||||
session().annotate(differences())
|
||||
|
@ -696,16 +696,17 @@ def main():
|
||||
|
||||
for i, (example_type, data) in enumerate(examples):
|
||||
if example_type == 'full_example':
|
||||
session().log_step(data['affirmation'], 0)
|
||||
affirmation = {
|
||||
'text': data['affirmation'],
|
||||
'parsed': data['parsed'][1],
|
||||
}
|
||||
question = data
|
||||
|
||||
with session().log(data['affirmation']):
|
||||
show_progbar(i, total, data['affirmation'])
|
||||
differences = knowledge.train([affirmation])
|
||||
|
||||
with session().log(data['text']):
|
||||
show_progbar(i, total, data['text'])
|
||||
differences = knowledge.train([question])
|
||||
session().annotate(differences())
|
||||
@ -720,13 +721,13 @@ def main():
|
||||
raise AssertionError('{} is not {}'.format(result, data['answer']))
|
||||
|
||||
elif example_type == 'text_example':
|
||||
session().log_step(data['affirmation'], 0)
|
||||
|
||||
with session().log(data['affirmation']):
|
||||
show_progbar(i, total, data['affirmation'])
|
||||
affirmation = data['affirmation']
|
||||
session().annotate("Processing affirmation: {}".format(affirmation))
|
||||
_, _, _ = knowledge.process(affirmation)
|
||||
|
||||
with session().log(data['question']):
|
||||
show_progbar(i, total, data['question'])
|
||||
question = data['question']
|
||||
session().annotate("Processing question : {}".format(question))
|
||||
|
Loading…
Reference in New Issue
Block a user