Visualize & use more data.

* Visualize more steps in the process.
 * Collect more possibilities in get_fit().
This commit is contained in:
kenkeiras 2017-05-29 23:23:53 +02:00
parent 9d49d00688
commit d3b604efca

View File

@ -297,6 +297,14 @@ def get_similar_tree(knowledge_base, atom, tokens):
if len(sorted_possibilities) < 1:
return None
for i, possibility in enumerate(sorted_possibilities):
logging.debug('---- POSSIBILITY #{} ----'.format(i))
similar_matcher, similar_result, similar_result_resolved, _, _ = possibility
logging.debug('AST: {}'.format(similar_result))
logging.debug('Based on: {}'.format(similar_matcher))
logging.debug('Results on: {}'.format(similar_result_resolved))
logging.debug('---------------------')
return sorted_possibilities[0]
@ -356,7 +364,7 @@ def reverse_remix(tree_section, remix):
offset = 0
for origin in remix:
if isinstance(origin, int):
if origin >= len(tree_section):
if (origin + offset) >= len(tree_section):
return None
result_section.append(copy.deepcopy(tree_section[origin + offset]))
@ -367,13 +375,18 @@ def reverse_remix(tree_section, remix):
def get_fit(knowledge, tokens, remaining_recursions=parameters.MAX_RECURSIONS):
results = []
for matcher, ast in knowledge.trained:
result = match_fit(knowledge, tokens, matcher, ast,
remaining_recursions)
if result is not None:
return result
return None
if result is not None:
results.append(result)
print("XXX", result)
print(' - ' + '\n - '.join(map(str, results)))
if len(results) > 0:
return results[0]
def is_definite_minisegment(minisegment):
@ -424,6 +437,7 @@ def resolve_fit(knowledge, fit, remaining_recursions):
def match_fit(knowledge, tokens, matcher, ast, remaining_recursions):
segment_possibilities = [([], tokens)] # Matched tokens, remaining tokens
indent = ' ' * (parameters.MAX_RECURSIONS - remaining_recursions)
for minisegment in matcher:
possibilities_after_round = []
for matched_tokens, remaining_tokens in segment_possibilities:
@ -453,7 +467,11 @@ def match_fit(knowledge, tokens, matcher, ast, remaining_recursions):
resolved_fits = []
for fit, _ in fully_matched_segments:
print(":::", fit)
print(indent + ":::", fit) # REMIXES HAVE TO BE APPLIED BEFORE!!!
print(indent + '*' * 20)
for fit, _ in fully_matched_segments:
print(indent + ":::", fit) # REMIXES HAVE TO BE APPLIED BEFORE!!!
resolved_fit = resolve_fit(knowledge, fit, remaining_recursions)
if resolved_fit is not None:
resolved_fits.append(resolved_fit)