Commit 10a5a33cd5abe188aeff0f3ed021771ca3b36b7d

Authored by Erickson Silva
1 parent d9027031
Exists in master and in 1 other branch devel

Implementa aplicacao do action 'concate_intens'

Showing 1 changed file with 36 additions and 45 deletions   Show diff stats
src/AplicaRegras.py
@@ -33,7 +33,7 @@ class AplicaRegras(object): @@ -33,7 +33,7 @@ class AplicaRegras(object):
33 "i":self.verificar_adv_intensidade, "vbi":"zero", "n":self.verificar_vb_muda_negacao, "abmn":"zero", 33 "i":self.verificar_adv_intensidade, "vbi":"zero", "n":self.verificar_vb_muda_negacao, "abmn":"zero",
34 "adji":"zero","adjn":"zero", "advi":"zero"} 34 "adji":"zero","adjn":"zero", "advi":"zero"}
35 35
36 - self.__acoes = {"change_vb":self.get_vb_infinitivo, "concate_intens":self.get_token_intensidade} 36 + self.__acoes = {"change_vb":self.get_vb_infinitivo}
37 37
38 # Gera arvore a partir do arquivos regras.xml 38 # Gera arvore a partir do arquivos regras.xml
39 def get_root(self): 39 def get_root(self):
@@ -177,6 +177,7 @@ class AplicaRegras(object): @@ -177,6 +177,7 @@ class AplicaRegras(object):
177 for classe in rule.iter('class'): 177 for classe in rule.iter('class'):
178 action = classe.find('action') 178 action = classe.find('action')
179 newprop = classe.find('newprop') 179 newprop = classe.find('newprop')
  180 + title_text = classe.find('title').text
180 181
181 self.count += 1 182 self.count += 1
182 183
@@ -197,46 +198,35 @@ class AplicaRegras(object): @@ -197,46 +198,35 @@ class AplicaRegras(object):
197 node_pai[nodes_positions[self.count]] = aux2 198 node_pai[nodes_positions[self.count]] = aux2
198 node_pai[nodes_positions[self.count+1]] = aux1 199 node_pai[nodes_positions[self.count+1]] = aux1
199 200
200 - '''  
201 - elif self.__acoes.has_key(action_text):  
202 - leaves = node_pai[nodes_positions[self.count]].leaves()  
203 - token = filter(None, leaves)[0]  
204 - result_action = self.__acoes[action_text](token)  
205 -  
206 - #self.lista_iteracao_regra.append([result_action, tupla[1]])  
207 - nodes_positions[self.count] = 'TODO'  
208 -  
209 - if action_text == "concate_intens":  
210 - leaves_prev = node_pai[nodes_positions[self.count-1]].leaves()  
211 - token_prev = filter(None, leaves_prev)[0]  
212 - title_text = classe.find('title').text  
213 - if title_text == "ADV-R":  
214 - node_prev = nodes_deleted.pop()  
215 - label_prev = node_prev[0][0].label()  
216 - token_prev = filter(None, node_pai[nodes_positions[count_temp-1]].leaves())[0]  
217 - token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0]  
218 - token_concate = token_prev + "_" + token  
219 - node_pai[nodes_positions[count_temp-1]][0][0][0] = token_concate  
220 - newprop = ""  
221 - if label_prev[:-2] == "VB":  
222 - newprop = "VBi"  
223 - elif label_prev[:-3] == "ADJ":  
224 - newprop = "ADJi"  
225 -  
226 - # TODO: Verifica qual newprop adicionada e remove o nó corrente  
227 - node_pai[nodes_positions[count_temp-1]][0][0].set_label(newprop)  
228 - pos_del = nodes_positions[self.count]  
229 - node_pai[pos_del] = None  
230 -  
231 - else:  
232 - token_prev = filter(None, nodes_deleted.pop().leaves())[0]  
233 - token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0]  
234 - token_concate = token + "_" + token_prev  
235 - node_pai[nodes_positions[count_temp]][0][0][0] = token_concate  
236 -  
237 - elif action_text == "concate_neg":  
238 - print "TODO"  
239 - ''' 201 +
  202 + elif action_text == "concate_intens":
  203 + if title_text == "ADV-R":
  204 + node_prev = nodes_deleted.pop()
  205 + label_prev = node_prev[0][0].label()
  206 + token_prev = filter(None, node_prev).leaves()[0]
  207 + token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0]
  208 + specific = classe.find('specific')
  209 + result_specific = self.get_adv_intensidade(token)
  210 + token_concate = result_specific + "_" + token_prev
  211 + node_pai[nodes_positions[count_temp]][0][0][0] = token_concate
  212 + newprop = ""
  213 + if label_prev[:-2] == "VB":
  214 + newprop = "VBi"
  215 + elif label_prev[:-3] == "ADJ":
  216 + newprop = "ADJi"
  217 + node_pai[nodes_positions[count_temp]][0][0].set_label(newprop)
  218 +
  219 + else:
  220 + token_prev = filter(None, nodes_deleted.pop()).leaves()[0]
  221 + token_prev_specific = self.get_adv_intensidade(token_prev)
  222 + token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0]
  223 + token_concate = token_prev_specific + "_" + token
  224 + node_pai[nodes_positions[count_temp]][0][0][0] = token_concate
  225 + node_pai[nodes_positions[count_temp]][0][0].set_label(newprop.text)
  226 +
  227 + elif action_text == "concate_neg":
  228 + print "TODO"
  229 +
240 230
241 if newprop is not None: 231 if newprop is not None:
242 node_pai[nodes_positions[self.count]].set_label(newprop.text) 232 node_pai[nodes_positions[self.count]].set_label(newprop.text)
@@ -387,8 +377,8 @@ class AplicaRegras(object): @@ -387,8 +377,8 @@ class AplicaRegras(object):
387 return self.dicionarios.get_verbo_infinitivo(token) 377 return self.dicionarios.get_verbo_infinitivo(token)
388 return token 378 return token
389 379
390 - def get_token_intensidade(self, token):  
391 - print 'TODO' 380 + def get_adv_intensidade(self, token):
  381 + return self.dicionarios.get_adverbio_intensidade(token)
392 382
393 def simplificar_sentenca(self, lista): 383 def simplificar_sentenca(self, lista):
394 '''Simplifica a sentença para que possa evitar a ditalogia. 384 '''Simplifica a sentença para que possa evitar a ditalogia.
@@ -410,11 +400,12 @@ class AplicaRegras(object): @@ -410,11 +400,12 @@ class AplicaRegras(object):
410 400
411 if num: 401 if num:
412 try: 402 try:
413 - return self.converter_extenso(lista_simplificada) 403 + lista_simplificada = self.converter_extenso(lista_simplificada)
414 except: 404 except:
415 pass 405 pass
416 406
417 - return lista_simplificada 407 + return " ".join([x[0] for x in lista_simplificada])
  408 +
418 409
419 def analisar_plural(self, token): 410 def analisar_plural(self, token):
420 '''Altera uma palavra do plural para o singular de acordo com o final da mesma. 411 '''Altera uma palavra do plural para o singular de acordo com o final da mesma.