Speed improvements
This commit is contained in:
parent
41f87fc8bd
commit
c6eaf12753
188
ResultTree.py
188
ResultTree.py
|
@ -7,29 +7,13 @@ from generic import create_output_string_form, create_output_string_deprel, crea
|
||||||
|
|
||||||
class ResultTree(object):
|
class ResultTree(object):
|
||||||
def __init__(self, node, children, filters):
|
def __init__(self, node, children, filters):
|
||||||
# self.array = [[create_output_string(node) for create_output_string in create_output_strings]]
|
|
||||||
# if create_output_string_lemma in create_output_strings:
|
|
||||||
# key_array = [[create_output_string(node) if create_output_string != create_output_string_lemma else 'L=' + create_output_string(node) for create_output_string in create_output_strings]]
|
|
||||||
# else:
|
|
||||||
# key_array = self.array
|
|
||||||
# if len(self.array[0]) > 1:
|
|
||||||
# self.key = '&'.join(key_array[0])
|
|
||||||
# else:
|
|
||||||
# # output_string = create_output_strings[0](node)
|
|
||||||
# self.key = key_array[0][0]
|
|
||||||
|
|
||||||
self.node = node
|
self.node = node
|
||||||
|
|
||||||
# order with original numbers in sentences
|
|
||||||
# self.order = str([architecture_order])
|
|
||||||
# order with numbers from 0 to n of n-gram
|
|
||||||
# self.root = ''
|
|
||||||
# self.final_order = ''
|
|
||||||
# self.separators = separators
|
|
||||||
self.children = children
|
self.children = children
|
||||||
self.filters = filters
|
self.filters = filters
|
||||||
self.key = None
|
self.key = None
|
||||||
self.order_key = None
|
self.order_key = None
|
||||||
|
self.order = None
|
||||||
|
self.array = None
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return self.get_key()
|
return self.get_key()
|
||||||
|
@ -37,18 +21,21 @@ class ResultTree(object):
|
||||||
def set_children(self, children):
|
def set_children(self, children):
|
||||||
self.children = children
|
self.children = children
|
||||||
|
|
||||||
def get_key(self, get_free=False):
|
def reset_params(self):
|
||||||
# if self.key:
|
self.key = None
|
||||||
# return self.key
|
self.order_key = None
|
||||||
|
self.order = None
|
||||||
|
self.array = None
|
||||||
|
|
||||||
|
def get_key(self):
|
||||||
|
if self.key:
|
||||||
|
return self.key
|
||||||
key = ''
|
key = ''
|
||||||
write_self_node_to_result = False
|
write_self_node_to_result = False
|
||||||
if self.children:
|
if self.children:
|
||||||
if get_free:
|
|
||||||
children = sorted(self.children, key=lambda x: x.node.name)
|
|
||||||
else:
|
|
||||||
children = self.children
|
children = self.children
|
||||||
for child in children:
|
for child in children:
|
||||||
if self.filters['node_order'] and child.node.location < self.node.location and not get_free:
|
if self.filters['node_order'] and child.node.location < self.node.location:
|
||||||
if self.filters['dependency_type']:
|
if self.filters['dependency_type']:
|
||||||
# separator = ' <' + deprel[i_child][i_answer] + ' '
|
# separator = ' <' + deprel[i_child][i_answer] + ' '
|
||||||
separator = ' <' + child.node.deprel + ' '
|
separator = ' <' + child.node.deprel + ' '
|
||||||
|
@ -72,9 +59,31 @@ class ResultTree(object):
|
||||||
self.key = self.node.name
|
self.key = self.node.name
|
||||||
return self.key
|
return self.key
|
||||||
|
|
||||||
|
def get_key_sorted(self):
|
||||||
|
key = ''
|
||||||
|
write_self_node_to_result = False
|
||||||
|
if self.children:
|
||||||
|
children = sorted(self.children, key=lambda x: x.node.name)
|
||||||
|
for child in children:
|
||||||
|
if not write_self_node_to_result:
|
||||||
|
write_self_node_to_result = True
|
||||||
|
key += self.node.name
|
||||||
|
if self.filters['dependency_type']:
|
||||||
|
separator = ' >' + child.node.deprel + ' '
|
||||||
|
else:
|
||||||
|
separator = ' > '
|
||||||
|
key += separator + child.get_key_sorted()
|
||||||
|
|
||||||
|
if not write_self_node_to_result:
|
||||||
|
key += self.node.name
|
||||||
|
key = '(' + key + ')'
|
||||||
|
else:
|
||||||
|
key = self.node.name
|
||||||
|
return key
|
||||||
|
|
||||||
def get_order_key(self):
|
def get_order_key(self):
|
||||||
# if self.order_key:
|
if self.order_key:
|
||||||
# return self.order_key
|
return self.order_key
|
||||||
order_key = ''
|
order_key = ''
|
||||||
write_self_node_to_result = False
|
write_self_node_to_result = False
|
||||||
if self.children:
|
if self.children:
|
||||||
|
@ -103,8 +112,8 @@ class ResultTree(object):
|
||||||
return self.order_key
|
return self.order_key
|
||||||
|
|
||||||
def get_order(self):
|
def get_order(self):
|
||||||
# if self.order_key:
|
if self.order:
|
||||||
# return self.order_key
|
return self.order
|
||||||
order = []
|
order = []
|
||||||
write_self_node_to_result = False
|
write_self_node_to_result = False
|
||||||
if self.children:
|
if self.children:
|
||||||
|
@ -125,8 +134,8 @@ class ResultTree(object):
|
||||||
return self.order
|
return self.order
|
||||||
|
|
||||||
def get_array(self):
|
def get_array(self):
|
||||||
# if self.order_key:
|
if self.array:
|
||||||
# return self.order_key
|
return self.array
|
||||||
array = []
|
array = []
|
||||||
write_self_node_to_result = False
|
write_self_node_to_result = False
|
||||||
if self.children:
|
if self.children:
|
||||||
|
@ -164,73 +173,74 @@ class ResultTree(object):
|
||||||
# self.key += ' ' + separator + ' ' + string
|
# self.key += ' ' + separator + ' ' + string
|
||||||
# self.order_key += ' ' + separator + ' ' + architecture_order
|
# self.order_key += ' ' + separator + ' ' + architecture_order
|
||||||
|
|
||||||
def add_separator(self, separator, left=True):
|
# def add_separator(self, separator, left=True):
|
||||||
self_copy = copy.copy(self)
|
# self_copy = copy.copy(self)
|
||||||
if left:
|
# if left:
|
||||||
self_copy.separators += [separator]
|
# self_copy.separators += [separator]
|
||||||
self_copy.key += separator
|
# self_copy.key += separator
|
||||||
self_copy.order_key += separator
|
# self_copy.order_key += separator
|
||||||
else:
|
# else:
|
||||||
self_copy.separators = [separator] + self_copy.separators
|
# self_copy.separators = [separator] + self_copy.separators
|
||||||
self_copy.key = separator + self_copy.key
|
# self_copy.key = separator + self_copy.key
|
||||||
self_copy.order_key = separator + self_copy.order_key
|
# self_copy.order_key = separator + self_copy.order_key
|
||||||
return self_copy
|
# return self_copy
|
||||||
|
|
||||||
# def merge_results2(self):
|
# def merge_results2(self):
|
||||||
|
|
||||||
|
|
||||||
def merge_results(self, right_t, separator, left=True):
|
# def merge_results(self, right_t, separator, left=True):
|
||||||
left_tree = copy.copy(self)
|
# left_tree = copy.copy(self)
|
||||||
right_tree = copy.copy(right_t)
|
# right_tree = copy.copy(right_t)
|
||||||
|
#
|
||||||
|
# if separator:
|
||||||
|
# if left:
|
||||||
|
# # merged_results.append(left_part + right_part + separator)
|
||||||
|
# left_tree.key = left_tree.key + right_tree.key + separator
|
||||||
|
# left_tree.order_key = left_tree.order_key + right_tree.order_key + separator
|
||||||
|
# left_tree.array = left_tree.array + right_tree.array
|
||||||
|
# left_tree.order = left_tree.order + right_tree.order
|
||||||
|
# # left_tree.order = str([architecture_order])
|
||||||
|
# left_tree.separators = left_tree.separators + right_tree.separators + [separator]
|
||||||
|
# else:
|
||||||
|
# # merged_results.append(left_part + separator + right_part)
|
||||||
|
# left_tree.key = left_tree.key + separator + right_tree.key
|
||||||
|
# left_tree.order_key = left_tree.order_key + separator + right_tree.order_key
|
||||||
|
# left_tree.array = left_tree.array + right_tree.array
|
||||||
|
# left_tree.order = left_tree.order + right_tree.order
|
||||||
|
# # left_tree.order = str([architecture_order])
|
||||||
|
# left_tree.separators = left_tree.separators + [separator] + right_tree.separators
|
||||||
|
# else:
|
||||||
|
# # merged_results.append(left_part + right_part)
|
||||||
|
# left_tree.key = left_tree.key + right_tree.key
|
||||||
|
# left_tree.order_key = left_tree.order_key + right_tree.order_key
|
||||||
|
# left_tree.array = left_tree.array + right_tree.array
|
||||||
|
# left_tree.order = left_tree.order + right_tree.order
|
||||||
|
# # left_tree.order = str([architecture_order])
|
||||||
|
# left_tree.separators = left_tree.separators + right_tree.separators
|
||||||
|
#
|
||||||
|
# return left_tree
|
||||||
|
|
||||||
if separator:
|
# def extend_answer(self, other_answer, separator):
|
||||||
if left:
|
# self.array.extend(other_answer.array)
|
||||||
# merged_results.append(left_part + right_part + separator)
|
# self.order.extend(other_answer.order)
|
||||||
left_tree.key = left_tree.key + right_tree.key + separator
|
# self.key += separator + other_answer.key
|
||||||
left_tree.order_key = left_tree.order_key + right_tree.order_key + separator
|
# self.order_key += separator + other_answer.order_key
|
||||||
left_tree.array = left_tree.array + right_tree.array
|
# self.separators.extend(separator)
|
||||||
left_tree.order = left_tree.order + right_tree.order
|
|
||||||
# left_tree.order = str([architecture_order])
|
|
||||||
left_tree.separators = left_tree.separators + right_tree.separators + [separator]
|
|
||||||
else:
|
|
||||||
# merged_results.append(left_part + separator + right_part)
|
|
||||||
left_tree.key = left_tree.key + separator + right_tree.key
|
|
||||||
left_tree.order_key = left_tree.order_key + separator + right_tree.order_key
|
|
||||||
left_tree.array = left_tree.array + right_tree.array
|
|
||||||
left_tree.order = left_tree.order + right_tree.order
|
|
||||||
# left_tree.order = str([architecture_order])
|
|
||||||
left_tree.separators = left_tree.separators + [separator] + right_tree.separators
|
|
||||||
else:
|
|
||||||
# merged_results.append(left_part + right_part)
|
|
||||||
left_tree.key = left_tree.key + right_tree.key
|
|
||||||
left_tree.order_key = left_tree.order_key + right_tree.order_key
|
|
||||||
left_tree.array = left_tree.array + right_tree.array
|
|
||||||
left_tree.order = left_tree.order + right_tree.order
|
|
||||||
# left_tree.order = str([architecture_order])
|
|
||||||
left_tree.separators = left_tree.separators + right_tree.separators
|
|
||||||
|
|
||||||
return left_tree
|
# def put_in_bracelets(self, inplace=False):
|
||||||
|
# if inplace:
|
||||||
def extend_answer(self, other_answer, separator):
|
# self.key = ('(' + self.key + ')')
|
||||||
self.array.extend(other_answer.array)
|
# self.order_key = ('(' + self.order_key + ')')
|
||||||
self.order.extend(other_answer.order)
|
# return
|
||||||
self.key += separator + other_answer.key
|
# result = copy.copy(self)
|
||||||
self.order_key += separator + other_answer.order_key
|
# result.key = ('(' + result.key + ')')
|
||||||
self.separators.extend(separator)
|
# result.order_key = ('(' + result.order_key + ')')
|
||||||
|
# return result
|
||||||
def put_in_bracelets(self, inplace=False):
|
|
||||||
if inplace:
|
|
||||||
self.key = ('(' + self.key + ')')
|
|
||||||
self.order_key = ('(' + self.order_key + ')')
|
|
||||||
return
|
|
||||||
result = copy.copy(self)
|
|
||||||
result.key = ('(' + result.key + ')')
|
|
||||||
result.order_key = ('(' + result.order_key + ')')
|
|
||||||
return result
|
|
||||||
|
|
||||||
def finalize_result(self):
|
def finalize_result(self):
|
||||||
result = copy.copy(self)
|
result = copy.copy(self)
|
||||||
result.key = result.get_key()
|
result.reset_params()
|
||||||
|
# result.key = result.get_key()
|
||||||
# result.set_root()
|
# result.set_root()
|
||||||
|
|
||||||
# create order letters
|
# create order letters
|
||||||
|
|
318
Tree.py
318
Tree.py
|
@ -146,61 +146,61 @@ class Tree(object):
|
||||||
old_subtree.extend(new_subtree)
|
old_subtree.extend(new_subtree)
|
||||||
|
|
||||||
|
|
||||||
def get_results(self, partial_results_dict, result_index, result_part, outcome, last_result_part):
|
# def get_results(self, partial_results_dict, result_index, result_part, outcome, last_result_part):
|
||||||
# save results for later usage
|
# # save results for later usage
|
||||||
|
#
|
||||||
|
# # if result index already in and element 0 exists (otherwise error)
|
||||||
|
# if result_index in partial_results_dict and 0 in partial_results_dict[result_index]:
|
||||||
|
# if result_part - 1 in partial_results_dict[result_index]:
|
||||||
|
# if result_part in partial_results_dict[result_index]:
|
||||||
|
# partial_results_dict[result_index][result_part].extend(self.merge_results(partial_results_dict[result_index][result_part - 1], outcome))
|
||||||
|
# else:
|
||||||
|
# partial_results_dict[result_index][result_part] = self.merge_results(partial_results_dict[result_index][result_part - 1], outcome)
|
||||||
|
#
|
||||||
|
# # extend one word layer with output
|
||||||
|
# else:
|
||||||
|
# partial_results_dict[result_index][0].extend(outcome)
|
||||||
|
# else:
|
||||||
|
# partial_results_dict[result_index] = {0: outcome}
|
||||||
|
#
|
||||||
|
# if last_result_part - 1 in partial_results_dict[result_index]:
|
||||||
|
# return partial_results_dict[result_index].pop(last_result_part - 1)
|
||||||
|
# return []
|
||||||
|
|
||||||
# if result index already in and element 0 exists (otherwise error)
|
# def group_results(self, new_partial_subtrees, child_queries_metadata, all_query_indices, partial_results_dict, partial_subtrees):
|
||||||
if result_index in partial_results_dict and 0 in partial_results_dict[result_index]:
|
# for outcome, (result_part, result_index, is_permanent) in zip(new_partial_subtrees, child_queries_metadata):
|
||||||
if result_part - 1 in partial_results_dict[result_index]:
|
# if outcome:
|
||||||
if result_part in partial_results_dict[result_index]:
|
# new_results = self.get_results(partial_results_dict, result_index, result_part, outcome, len(all_query_indices[result_index][0]))
|
||||||
partial_results_dict[result_index][result_part].extend(self.merge_results(partial_results_dict[result_index][result_part - 1], outcome))
|
# if new_results:
|
||||||
else:
|
# self.add_subtrees(partial_subtrees[result_index], new_results)
|
||||||
partial_results_dict[result_index][result_part] = self.merge_results(partial_results_dict[result_index][result_part - 1], outcome)
|
# else:
|
||||||
|
# if not is_permanent:
|
||||||
|
# partial_subtrees[result_index].append([])
|
||||||
|
|
||||||
# extend one word layer with output
|
# def get_all_query_indices_old(self, temporary_query_trees_size, completed_subtrees_size, permanent_query_trees, l_all_query_indices, children, create_output_string):
|
||||||
else:
|
# partial_subtrees = [[] for i in range(completed_subtrees_size + temporary_query_trees_size)]
|
||||||
partial_results_dict[result_index][0].extend(outcome)
|
# completed_subtrees = [[] for i in range(completed_subtrees_size)]
|
||||||
else:
|
#
|
||||||
partial_results_dict[result_index] = {0: outcome}
|
# # list of pairs (index of query in group, group of query)
|
||||||
|
# partial_results_dict = {}
|
||||||
if last_result_part - 1 in partial_results_dict[result_index]:
|
#
|
||||||
return partial_results_dict[result_index].pop(last_result_part - 1)
|
# children_queries_generator = self.generate_children_queries(l_all_query_indices, children)
|
||||||
return []
|
#
|
||||||
|
# child_index = 0
|
||||||
def group_results(self, new_partial_subtrees, child_queries_metadata, all_query_indices, partial_results_dict, partial_subtrees):
|
# child, child_queries, child_queries_metadata = next(children_queries_generator)
|
||||||
for outcome, (result_part, result_index, is_permanent) in zip(new_partial_subtrees, child_queries_metadata):
|
# while child:
|
||||||
if outcome:
|
# # obtain children results
|
||||||
new_results = self.get_results(partial_results_dict, result_index, result_part, outcome, len(all_query_indices[result_index][0]))
|
# new_partial_subtrees, new_completed_subtrees = child.get_subtrees(permanent_query_trees, child_queries, create_output_string)
|
||||||
if new_results:
|
#
|
||||||
self.add_subtrees(partial_subtrees[result_index], new_results)
|
# self.group_results(new_partial_subtrees, child_queries_metadata, l_all_query_indices,
|
||||||
else:
|
# partial_results_dict, partial_subtrees)
|
||||||
if not is_permanent:
|
#
|
||||||
partial_subtrees[result_index].append([])
|
# for i in range(len(new_completed_subtrees)):
|
||||||
|
# completed_subtrees[i].extend(new_completed_subtrees[i])
|
||||||
def get_all_query_indices_old(self, temporary_query_trees_size, completed_subtrees_size, permanent_query_trees, l_all_query_indices, children, create_output_string):
|
# child, child_queries, child_queries_metadata = children_queries_generator.send(partial_results_dict)
|
||||||
partial_subtrees = [[] for i in range(completed_subtrees_size + temporary_query_trees_size)]
|
# child_index += 1
|
||||||
completed_subtrees = [[] for i in range(completed_subtrees_size)]
|
#
|
||||||
|
# return partial_subtrees, completed_subtrees
|
||||||
# list of pairs (index of query in group, group of query)
|
|
||||||
partial_results_dict = {}
|
|
||||||
|
|
||||||
children_queries_generator = self.generate_children_queries(l_all_query_indices, children)
|
|
||||||
|
|
||||||
child_index = 0
|
|
||||||
child, child_queries, child_queries_metadata = next(children_queries_generator)
|
|
||||||
while child:
|
|
||||||
# obtain children results
|
|
||||||
new_partial_subtrees, new_completed_subtrees = child.get_subtrees(permanent_query_trees, child_queries, create_output_string)
|
|
||||||
|
|
||||||
self.group_results(new_partial_subtrees, child_queries_metadata, l_all_query_indices,
|
|
||||||
partial_results_dict, partial_subtrees)
|
|
||||||
|
|
||||||
for i in range(len(new_completed_subtrees)):
|
|
||||||
completed_subtrees[i].extend(new_completed_subtrees[i])
|
|
||||||
child, child_queries, child_queries_metadata = children_queries_generator.send(partial_results_dict)
|
|
||||||
child_index += 1
|
|
||||||
|
|
||||||
return partial_subtrees, completed_subtrees
|
|
||||||
|
|
||||||
def get_all_query_indices(self, temporary_query_nb, permanent_query_nb, permanent_query_trees, all_query_indices, children, create_output_string, filters):
|
def get_all_query_indices(self, temporary_query_nb, permanent_query_nb, permanent_query_trees, all_query_indices, children, create_output_string, filters):
|
||||||
# l_partial_subtrees, l_completed_subtrees = self.get_all_query_indices(len(temporary_query_trees),
|
# l_partial_subtrees, l_completed_subtrees = self.get_all_query_indices(len(temporary_query_trees),
|
||||||
|
@ -432,37 +432,37 @@ class Tree(object):
|
||||||
return partial_answers, complete_answers
|
return partial_answers, complete_answers
|
||||||
# return merged_partial_subtrees_architecture[len(active_permanent_query_trees):], merged_partial_subtrees[len(active_permanent_query_trees):], completed_subtrees
|
# return merged_partial_subtrees_architecture[len(active_permanent_query_trees):], merged_partial_subtrees[len(active_permanent_query_trees):], completed_subtrees
|
||||||
|
|
||||||
@staticmethod
|
# @staticmethod
|
||||||
def merge_results(left_parts, right_parts, separator, left=True, right_part_free=False):
|
# def merge_results(left_parts, right_parts, separator, left=True, right_part_free=False):
|
||||||
if not left_parts:
|
# if not left_parts:
|
||||||
# return all right_parts
|
# # return all right_parts
|
||||||
return [r_p.add_separator(separator, left) for r_p in right_parts]
|
# return [r_p.add_separator(separator, left) for r_p in right_parts]
|
||||||
# if left:
|
# # if left:
|
||||||
# return [r_p + separator for r_p in right_parts]
|
# # return [r_p + separator for r_p in right_parts]
|
||||||
# # return [r_p.add_separator(separator, left) for r_p in right_parts]
|
# # # return [r_p.add_separator(separator, left) for r_p in right_parts]
|
||||||
|
# # else:
|
||||||
|
# # return [separator + r_p for r_p in right_parts]
|
||||||
|
#
|
||||||
|
# if not right_parts:
|
||||||
|
# return [l_p.add_separator(separator, False) for l_p in left_parts]
|
||||||
|
# # return [separator + l_p for l_p in left_parts]
|
||||||
|
# merged_results = []
|
||||||
|
# for left_part in left_parts:
|
||||||
|
# if right_part_free:
|
||||||
|
# for right_part in right_parts[1]:
|
||||||
|
# merged_results.append((right_parts[0], left_part.merge_results(right_part, separator, left)))
|
||||||
# else:
|
# else:
|
||||||
# return [separator + r_p for r_p in right_parts]
|
# for right_part in right_parts:
|
||||||
|
# merged_results.append(left_part.merge_results(right_part, separator, left))
|
||||||
if not right_parts:
|
# # merged_results.append(left_part.merge_results(right_part, separator))
|
||||||
return [l_p.add_separator(separator, False) for l_p in left_parts]
|
# # if separator:
|
||||||
# return [separator + l_p for l_p in left_parts]
|
# # if left:
|
||||||
merged_results = []
|
# # merged_results.append(left_part + right_part + separator)
|
||||||
for left_part in left_parts:
|
# # else:
|
||||||
if right_part_free:
|
# # merged_results.append(left_part + separator + right_part)
|
||||||
for right_part in right_parts[1]:
|
# # else:
|
||||||
merged_results.append((right_parts[0], left_part.merge_results(right_part, separator, left)))
|
# # merged_results.append(left_part + right_part)
|
||||||
else:
|
# return merged_results
|
||||||
for right_part in right_parts:
|
|
||||||
merged_results.append(left_part.merge_results(right_part, separator, left))
|
|
||||||
# merged_results.append(left_part.merge_results(right_part, separator))
|
|
||||||
# if separator:
|
|
||||||
# if left:
|
|
||||||
# merged_results.append(left_part + right_part + separator)
|
|
||||||
# else:
|
|
||||||
# merged_results.append(left_part + separator + right_part)
|
|
||||||
# else:
|
|
||||||
# merged_results.append(left_part + right_part)
|
|
||||||
return merged_results
|
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_children_groups(left_parts, right_parts):
|
def create_children_groups(left_parts, right_parts):
|
||||||
|
@ -482,6 +482,7 @@ class Tree(object):
|
||||||
for left_part in left_parts:
|
for left_part in left_parts:
|
||||||
for right_part in right_parts:
|
for right_part in right_parts:
|
||||||
new_part = copy(left_part)
|
new_part = copy(left_part)
|
||||||
|
# new_part.reset_params()
|
||||||
new_part.extend(right_part)
|
new_part.extend(right_part)
|
||||||
all_children_group_possibilities.append(new_part)
|
all_children_group_possibilities.append(new_part)
|
||||||
# merged_results.append(left_part.merge_results(right_part, separator))
|
# merged_results.append(left_part.merge_results(right_part, separator))
|
||||||
|
@ -511,87 +512,87 @@ class Tree(object):
|
||||||
merged_indices.append(new_indices)
|
merged_indices.append(new_indices)
|
||||||
return merged_results, merged_indices
|
return merged_results, merged_indices
|
||||||
|
|
||||||
def merge_results2(self, child, new_results, filters):
|
# def merge_results2(self, child, new_results, filters):
|
||||||
if create_output_string_form(self) == 'začelo':
|
# if create_output_string_form(self) == 'začelo':
|
||||||
print('HERE!@@!')
|
# print('HERE!@@!')
|
||||||
if create_output_string_form(self) == 'Dogodek':
|
# if create_output_string_form(self) == 'Dogodek':
|
||||||
print('HERE!@@!')
|
# print('HERE!@@!')
|
||||||
if create_output_string_form(self) == 'utišal':
|
# if create_output_string_form(self) == 'utišal':
|
||||||
print('HERE!@@!')
|
# print('HERE!@@!')
|
||||||
if create_output_string_form(self) == 'prijel':
|
# if create_output_string_form(self) == 'prijel':
|
||||||
print('HERE!@@!')
|
# print('HERE!@@!')
|
||||||
if filters['node_order']:
|
|
||||||
new_child = child
|
|
||||||
# new_child_sorted = sorted(enumerate(child), key=lambda x: x[1][0].key)
|
|
||||||
else:
|
|
||||||
new_child = sorted(child, key=lambda x: x[0].key)
|
|
||||||
|
|
||||||
l_res = []
|
|
||||||
r_res = []
|
|
||||||
results = []
|
|
||||||
for i_answer, answer in enumerate(new_child):
|
|
||||||
if filters['node_order'] and answer[0].order[0] < self.index:
|
|
||||||
# if filters['node_order'] and indices[i_child][i_answer] < self.children_split:
|
|
||||||
if filters['dependency_type']:
|
|
||||||
# separator = ' <' + deprel[i_child][i_answer] + ' '
|
|
||||||
separator = ' <' + answer[0].deprel + ' '
|
|
||||||
else:
|
|
||||||
separator = ' < '
|
|
||||||
l_res = self.merge_results(l_res, answer, separator, left=True)
|
|
||||||
# l_res += answer + separator
|
|
||||||
else:
|
|
||||||
if filters['dependency_type']:
|
|
||||||
separator = ' >' + answer[0].deprel + ' '
|
|
||||||
else:
|
|
||||||
separator = ' > '
|
|
||||||
r_res = self.merge_results(r_res, answer, separator, left=False)
|
|
||||||
# r_res += separator + answer
|
|
||||||
|
|
||||||
# if filters['node_order']:
|
# if filters['node_order']:
|
||||||
# r_res_sorted = []
|
# new_child = child
|
||||||
# for i_answer, answer in new_child_sorted:
|
# # new_child_sorted = sorted(enumerate(child), key=lambda x: x[1][0].key)
|
||||||
|
# else:
|
||||||
|
# new_child = sorted(child, key=lambda x: x[0].key)
|
||||||
|
#
|
||||||
|
# l_res = []
|
||||||
|
# r_res = []
|
||||||
|
# results = []
|
||||||
|
# for i_answer, answer in enumerate(new_child):
|
||||||
|
# if filters['node_order'] and answer[0].order[0] < self.index:
|
||||||
|
# # if filters['node_order'] and indices[i_child][i_answer] < self.children_split:
|
||||||
|
# if filters['dependency_type']:
|
||||||
|
# # separator = ' <' + deprel[i_child][i_answer] + ' '
|
||||||
|
# separator = ' <' + answer[0].deprel + ' '
|
||||||
|
# else:
|
||||||
|
# separator = ' < '
|
||||||
|
# l_res = self.merge_results(l_res, answer, separator, left=True)
|
||||||
|
# # l_res += answer + separator
|
||||||
|
# else:
|
||||||
# if filters['dependency_type']:
|
# if filters['dependency_type']:
|
||||||
# separator = ' >' + answer[0].deprel + ' '
|
# separator = ' >' + answer[0].deprel + ' '
|
||||||
# else:
|
# else:
|
||||||
# separator = ' > '
|
# separator = ' > '
|
||||||
# r_res_sorted = (i_answer, self.merge_results(r_res_sorted, answer, separator, left=False))
|
# r_res = self.merge_results(r_res, answer, separator, left=False)
|
||||||
|
# # r_res += separator + answer
|
||||||
|
#
|
||||||
|
# # if filters['node_order']:
|
||||||
|
# # r_res_sorted = []
|
||||||
|
# # for i_answer, answer in new_child_sorted:
|
||||||
|
# # if filters['dependency_type']:
|
||||||
|
# # separator = ' >' + answer[0].deprel + ' '
|
||||||
|
# # else:
|
||||||
|
# # separator = ' > '
|
||||||
|
# # r_res_sorted = (i_answer, self.merge_results(r_res_sorted, answer, separator, left=False))
|
||||||
|
# #
|
||||||
|
# #
|
||||||
|
# # r_res_sorted_combined = self.merge_results(new_results, r_res_sorted, None, right_part_free=True)
|
||||||
|
# # # print('here')
|
||||||
|
#
|
||||||
|
# if l_res:
|
||||||
|
# l_res_combined = self.merge_results(l_res, new_results, None)
|
||||||
|
# if r_res:
|
||||||
|
# r_res_combined = self.merge_results(l_res_combined, r_res, None)
|
||||||
|
# # merged_results.extend(['(' + el + ')' for el in r_res_combined])
|
||||||
|
# result = r_res_combined
|
||||||
|
# # results.extend([el.put_in_bracelets() for el in r_res_combined])
|
||||||
|
# else:
|
||||||
|
# result = l_res_combined
|
||||||
|
# # results.extend([el.put_in_bracelets() for el in l_res_combined])
|
||||||
|
# elif r_res:
|
||||||
|
# r_res_combined = self.merge_results(new_results, r_res, None)
|
||||||
|
# result = r_res_combined
|
||||||
|
# # results.extend([el.put_in_bracelets() for el in r_res_combined])
|
||||||
|
# else:
|
||||||
|
# result = []
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# r_res_sorted_combined = self.merge_results(new_results, r_res_sorted, None, right_part_free=True)
|
# results.extend([el.put_in_bracelets() for el in result])
|
||||||
# # print('here')
|
#
|
||||||
|
# return results
|
||||||
|
|
||||||
if l_res:
|
# def create_merged_results(self, answers, separators, separator_switch):
|
||||||
l_res_combined = self.merge_results(l_res, new_results, None)
|
# new_answers = []
|
||||||
if r_res:
|
# for answer_i, answer in enumerate(answers):
|
||||||
r_res_combined = self.merge_results(l_res_combined, r_res, None)
|
# new_answer = copy(answer[0])
|
||||||
# merged_results.extend(['(' + el + ')' for el in r_res_combined])
|
# print(create_output_string_form(self))
|
||||||
result = r_res_combined
|
# for answer_part_i, answer_part in enumerate(answer[1:]):
|
||||||
# results.extend([el.put_in_bracelets() for el in r_res_combined])
|
# new_answer.extend_answer(answer_part, separators[answer_part_i])
|
||||||
else:
|
# new_answer.put_in_bracelets(inplace=True)
|
||||||
result = l_res_combined
|
# new_answers.append(new_answer)
|
||||||
# results.extend([el.put_in_bracelets() for el in l_res_combined])
|
# return new_answers
|
||||||
elif r_res:
|
|
||||||
r_res_combined = self.merge_results(new_results, r_res, None)
|
|
||||||
result = r_res_combined
|
|
||||||
# results.extend([el.put_in_bracelets() for el in r_res_combined])
|
|
||||||
else:
|
|
||||||
result = []
|
|
||||||
|
|
||||||
|
|
||||||
results.extend([el.put_in_bracelets() for el in result])
|
|
||||||
|
|
||||||
return results
|
|
||||||
|
|
||||||
def create_merged_results(self, answers, separators, separator_switch):
|
|
||||||
new_answers = []
|
|
||||||
for answer_i, answer in enumerate(answers):
|
|
||||||
new_answer = copy(answer[0])
|
|
||||||
print(create_output_string_form(self))
|
|
||||||
for answer_part_i, answer_part in enumerate(answer[1:]):
|
|
||||||
new_answer.extend_answer(answer_part, separators[answer_part_i])
|
|
||||||
new_answer.put_in_bracelets(inplace=True)
|
|
||||||
new_answers.append(new_answer)
|
|
||||||
return new_answers
|
|
||||||
# def create_merged_results(self, new_child, new_answers, i_child, indices, deprel, filters):
|
# def create_merged_results(self, new_child, new_answers, i_child, indices, deprel, filters):
|
||||||
|
|
||||||
def merge_results3(self, child, new_results, filters):
|
def merge_results3(self, child, new_results, filters):
|
||||||
|
@ -635,8 +636,11 @@ class Tree(object):
|
||||||
for result in new_results:
|
for result in new_results:
|
||||||
for children in children_groups:
|
for children in children_groups:
|
||||||
new_result = copy(result)
|
new_result = copy(result)
|
||||||
|
# if result.key is not None or result.order is not None or result.array is not None or result.order_key is not None:
|
||||||
|
# print('here')
|
||||||
|
# new_result.reset_params()
|
||||||
new_result.set_children(children)
|
new_result.set_children(children)
|
||||||
order = tuple(sorted(new_result.get_order()))
|
# order = tuple(sorted(new_result.get_order()))
|
||||||
results.append(new_result)
|
results.append(new_result)
|
||||||
|
|
||||||
return results
|
return results
|
||||||
|
|
|
@ -483,9 +483,9 @@ def main():
|
||||||
# print('HERE')
|
# print('HERE')
|
||||||
# print(tree_i)
|
# print(tree_i)
|
||||||
if filters['node_order']:
|
if filters['node_order']:
|
||||||
key = r.key + r.order
|
key = r.get_key() + r.order
|
||||||
else:
|
else:
|
||||||
key = r.key
|
key = r.get_key()
|
||||||
# if r == '(" < , < je < velik) < tem':
|
# if r == '(" < , < je < velik) < tem':
|
||||||
# print(tree_i)
|
# print(tree_i)
|
||||||
# if r in result_dict:
|
# if r in result_dict:
|
||||||
|
@ -520,9 +520,9 @@ def main():
|
||||||
for query_results in subtrees:
|
for query_results in subtrees:
|
||||||
for r in query_results:
|
for r in query_results:
|
||||||
if filters['node_order']:
|
if filters['node_order']:
|
||||||
key = r.key + r.order
|
key = r.get_key() + r.order
|
||||||
else:
|
else:
|
||||||
key = r.key
|
key = r.get_key()
|
||||||
# if r == '(" < , < je < velik) < tem':
|
# if r == '(" < , < je < velik) < tem':
|
||||||
# print(tree_i)
|
# print(tree_i)
|
||||||
if key in result_dict:
|
if key in result_dict:
|
||||||
|
@ -586,11 +586,11 @@ def main():
|
||||||
break
|
break
|
||||||
words_only = [word_att for word in v['object'].array for word_att in word] + ['' for i in range((tree_size_range[-1] - len(v['object'].array)) * len(v['object'].array[0]))]
|
words_only = [word_att for word in v['object'].array for word_att in word] + ['' for i in range((tree_size_range[-1] - len(v['object'].array)) * len(v['object'].array[0]))]
|
||||||
# words_only = printable_answers(k)
|
# words_only = printable_answers(k)
|
||||||
row = [v['object'].key[1:-1]] + words_only + [str(v['number'])]
|
row = [v['object'].get_key()[1:-1]] + words_only + [str(v['number'])]
|
||||||
row += ['%.4f' % absolute_frequency]
|
row += ['%.4f' % absolute_frequency]
|
||||||
if filters['node_order']:
|
if filters['node_order']:
|
||||||
row += [v['object'].order]
|
row += [v['object'].order]
|
||||||
row += [v['object'].get_key(get_free=True)[1:-1]]
|
row += [v['object'].get_key_sorted()[1:-1]]
|
||||||
if filters['nodes_number']:
|
if filters['nodes_number']:
|
||||||
row += ['%d' % len(v['object'].array)]
|
row += ['%d' % len(v['object'].array)]
|
||||||
if filters['print_root']:
|
if filters['print_root']:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user