Visualize & use more data.
* Visualize more steps in the process. * Collect more possibilities in get_fit().
This commit is contained in:
parent
9d49d00688
commit
d3b604efca
@ -297,6 +297,14 @@ def get_similar_tree(knowledge_base, atom, tokens):
|
|||||||
if len(sorted_possibilities) < 1:
|
if len(sorted_possibilities) < 1:
|
||||||
return None
|
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]
|
return sorted_possibilities[0]
|
||||||
|
|
||||||
|
|
||||||
@ -356,7 +364,7 @@ def reverse_remix(tree_section, remix):
|
|||||||
offset = 0
|
offset = 0
|
||||||
for origin in remix:
|
for origin in remix:
|
||||||
if isinstance(origin, int):
|
if isinstance(origin, int):
|
||||||
if origin >= len(tree_section):
|
if (origin + offset) >= len(tree_section):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
result_section.append(copy.deepcopy(tree_section[origin + offset]))
|
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):
|
def get_fit(knowledge, tokens, remaining_recursions=parameters.MAX_RECURSIONS):
|
||||||
|
results = []
|
||||||
for matcher, ast in knowledge.trained:
|
for matcher, ast in knowledge.trained:
|
||||||
result = match_fit(knowledge, tokens, matcher, ast,
|
result = match_fit(knowledge, tokens, matcher, ast,
|
||||||
remaining_recursions)
|
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):
|
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):
|
def match_fit(knowledge, tokens, matcher, ast, remaining_recursions):
|
||||||
segment_possibilities = [([], tokens)] # Matched tokens, remaining tokens
|
segment_possibilities = [([], tokens)] # Matched tokens, remaining tokens
|
||||||
|
indent = ' ' * (parameters.MAX_RECURSIONS - remaining_recursions)
|
||||||
for minisegment in matcher:
|
for minisegment in matcher:
|
||||||
possibilities_after_round = []
|
possibilities_after_round = []
|
||||||
for matched_tokens, remaining_tokens in segment_possibilities:
|
for matched_tokens, remaining_tokens in segment_possibilities:
|
||||||
@ -453,7 +467,11 @@ def match_fit(knowledge, tokens, matcher, ast, remaining_recursions):
|
|||||||
|
|
||||||
resolved_fits = []
|
resolved_fits = []
|
||||||
for fit, _ in fully_matched_segments:
|
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)
|
resolved_fit = resolve_fit(knowledge, fit, remaining_recursions)
|
||||||
if resolved_fit is not None:
|
if resolved_fit is not None:
|
||||||
resolved_fits.append(resolved_fit)
|
resolved_fits.append(resolved_fit)
|
||||||
|
Loading…
Reference in New Issue
Block a user