@@ -65,19 +65,25 @@ def translate_tree_grammar(tree: nltk.Tree, grammar_substitutions: dict):
65
65
num_subs = 0
66
66
# Convert tree to ParentedTree
67
67
ptree = tree_to_ptree (tree )
68
- # Traverse through subtrees
69
- for sub in ptree .subtrees ():
70
- # Create grammar string from left-most node. E.g: NP -> JJ NP,
71
- # in this case, JJ is left-most node
72
- grammar_str = build_grammar_str_from_left_most (sub )
73
- for src_grammar , tgt_grammar in grammar_substitutions .items ():
74
- if grammar_str == src_grammar :
75
- # Increment number of substitutions
76
- num_subs += 1
77
- # Calculate displacement between 2 grammar strings
78
- disp , new_words = calculate_displacement (src_grammar ,tgt_grammar )
79
- # Change tree nodes positions thanks to new displacement
80
- swap_tree_given_left (sub , disp , new_words )
68
+ old_num_subs = - 1
69
+
70
+ # Loops until there no substitution left
71
+ while num_subs != old_num_subs :
72
+ old_num_subs = num_subs
73
+ # Traverse through subtrees
74
+ for sub in ptree .subtrees ():
75
+ # Create grammar string from left-most node. E.g: NP -> JJ NP,
76
+ # in this case, JJ is left-most node
77
+ grammar_str = build_grammar_str_from_left_most (sub )
78
+ for src_grammar , tgt_grammar in grammar_substitutions .items ():
79
+ if grammar_str == src_grammar :
80
+ # Increment number of substitutions
81
+ num_subs += 1
82
+ # Calculate displacement between 2 grammar strings
83
+ disp , new_words = calculate_displacement (src_grammar ,tgt_grammar )
84
+ # Change tree nodes positions thanks to new displacement
85
+ swap_tree_given_left (sub , disp , new_words )
86
+
81
87
82
88
translated_grammar_sentence = " " .join (ptree .leaves ())
83
89
return translated_grammar_sentence , num_subs
@@ -101,7 +107,6 @@ def translate_trees_grammar(list_trees: List[nltk.Tree], src_to_tgt_grammar, src
101
107
trans_map = {}
102
108
103
109
for tree in list_trees :
104
-
105
110
# Translate grammar
106
111
trans_gram_sentence , num_subs = translate_tree_grammar (tree , src_to_tgt_grammar )
107
112
0 commit comments