From a2ce2e0fee5c9b6070d547a77d3546cd5d528080 Mon Sep 17 00:00:00 2001 From: Luka Date: Wed, 13 Nov 2019 15:03:51 +0100 Subject: [PATCH] Removed duplicated queries to children --- Result.py | 0 Tree.py | 47 ++++++++++++++++++++++++++++++++--------- dependency-parsetree.py | 1 + 3 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 Result.py diff --git a/Result.py b/Result.py new file mode 100644 index 0000000..e69de29 diff --git a/Tree.py b/Tree.py index 29067a5..dbaf02f 100644 --- a/Tree.py +++ b/Tree.py @@ -221,20 +221,47 @@ class Tree(object): all_new_partial_answers_architecture = [[] for query_part in child_queries_flatten] all_new_partial_answers_deprel = [[] for query_part in child_queries_flatten] + if filters['caching']: + # erase duplicate queries + child_queries_flatten_dedup = [] + child_queries_flatten_dedup_indices = [] + for query_part in child_queries_flatten: + try: + index = child_queries_flatten_dedup.index(query_part) + except ValueError: + index = len(child_queries_flatten_dedup) + child_queries_flatten_dedup.append(query_part) + + child_queries_flatten_dedup_indices.append(index) # ask children all queries/partial queries for child in children: # obtain children results - new_partial_answers_architecture, new_partial_answers, new_complete_answers = child.get_subtrees(permanent_query_trees, child_queries_flatten, - create_output_string, filters) - - assert len(new_partial_answers) == len(child_queries_flatten) - for i, new_partial_subtree in enumerate(new_partial_answers): - all_new_partial_answers[i].append(new_partial_subtree) - all_new_partial_answers_architecture[i].append(new_partial_answers_architecture[i]) - # if len(new_partial_answers_architecture[i]) > 1: - # print('HERE!!!') - all_new_partial_answers_deprel[i].append(create_output_string_deprel(child)) + if filters['caching']: + new_partial_answers_architecture_dedup, new_partial_answers_dedup, new_complete_answers = child.get_subtrees(permanent_query_trees, child_queries_flatten_dedup, + create_output_string, filters) + + assert len(new_partial_answers_dedup) == len(child_queries_flatten_dedup) + + # duplicate results again on correct places + for i, flattened_index in enumerate(child_queries_flatten_dedup_indices): + all_new_partial_answers[i].append(new_partial_answers_dedup[flattened_index]) + all_new_partial_answers_architecture[i].append(new_partial_answers_architecture_dedup[flattened_index]) + all_new_partial_answers_deprel[i].append(create_output_string_deprel(child)) + + else: + new_partial_answers_architecture, new_partial_answers, new_complete_answers = child.get_subtrees( + permanent_query_trees, child_queries_flatten, + create_output_string, filters) + + assert len(new_partial_answers) == len(child_queries_flatten) + + for i, new_partial_subtree in enumerate(new_partial_answers): + all_new_partial_answers[i].append(new_partial_subtree) + all_new_partial_answers_architecture[i].append(new_partial_answers_architecture[i]) + # if len(new_partial_answers_architecture[i]) > 1: + # print('HERE!!!') + all_new_partial_answers_deprel[i].append(create_output_string_deprel(child)) # add 6 queries from 3 split up # self.group_results(new_partial_subtrees, child_queries_metadata, all_query_indices, diff --git a/dependency-parsetree.py b/dependency-parsetree.py index 2800d15..9cd19d5 100644 --- a/dependency-parsetree.py +++ b/dependency-parsetree.py @@ -302,6 +302,7 @@ def main(): result_dict = {} filters = {} filters['node_order'] = config.get('settings', 'node_order') == 'fixed' + filters['caching'] = config.getboolean('settings', 'caching') filters['dependency_type'] = config.get('settings', 'dependency_type') == 'labeled' if config.has_option('settings', 'label_whitelist'): filters['label_whitelist'] = config.get('settings', 'label_whitelist').split('|')