From 10a5a33cd5abe188aeff0f3ed021771ca3b36b7d Mon Sep 17 00:00:00 2001 From: Erickson Silva Date: Mon, 27 Apr 2015 14:16:26 -0300 Subject: [PATCH] Implementa aplicacao do action 'concate_intens' --- src/AplicaRegras.py | 81 ++++++++++++++++++++++++++++++++++++--------------------------------------------- 1 file changed, 36 insertions(+), 45 deletions(-) diff --git a/src/AplicaRegras.py b/src/AplicaRegras.py index eb87570..a30ba7c 100644 --- a/src/AplicaRegras.py +++ b/src/AplicaRegras.py @@ -33,7 +33,7 @@ class AplicaRegras(object): "i":self.verificar_adv_intensidade, "vbi":"zero", "n":self.verificar_vb_muda_negacao, "abmn":"zero", "adji":"zero","adjn":"zero", "advi":"zero"} - self.__acoes = {"change_vb":self.get_vb_infinitivo, "concate_intens":self.get_token_intensidade} + self.__acoes = {"change_vb":self.get_vb_infinitivo} # Gera arvore a partir do arquivos regras.xml def get_root(self): @@ -177,6 +177,7 @@ class AplicaRegras(object): for classe in rule.iter('class'): action = classe.find('action') newprop = classe.find('newprop') + title_text = classe.find('title').text self.count += 1 @@ -197,46 +198,35 @@ class AplicaRegras(object): node_pai[nodes_positions[self.count]] = aux2 node_pai[nodes_positions[self.count+1]] = aux1 - ''' - elif self.__acoes.has_key(action_text): - leaves = node_pai[nodes_positions[self.count]].leaves() - token = filter(None, leaves)[0] - result_action = self.__acoes[action_text](token) - - #self.lista_iteracao_regra.append([result_action, tupla[1]]) - nodes_positions[self.count] = 'TODO' - - if action_text == "concate_intens": - leaves_prev = node_pai[nodes_positions[self.count-1]].leaves() - token_prev = filter(None, leaves_prev)[0] - title_text = classe.find('title').text - if title_text == "ADV-R": - node_prev = nodes_deleted.pop() - label_prev = node_prev[0][0].label() - token_prev = filter(None, node_pai[nodes_positions[count_temp-1]].leaves())[0] - token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0] - token_concate = token_prev + "_" + token - node_pai[nodes_positions[count_temp-1]][0][0][0] = token_concate - newprop = "" - if label_prev[:-2] == "VB": - newprop = "VBi" - elif label_prev[:-3] == "ADJ": - newprop = "ADJi" - - # TODO: Verifica qual newprop adicionada e remove o nó corrente - node_pai[nodes_positions[count_temp-1]][0][0].set_label(newprop) - pos_del = nodes_positions[self.count] - node_pai[pos_del] = None - - else: - token_prev = filter(None, nodes_deleted.pop().leaves())[0] - token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0] - token_concate = token + "_" + token_prev - node_pai[nodes_positions[count_temp]][0][0][0] = token_concate - - elif action_text == "concate_neg": - print "TODO" - ''' + + elif action_text == "concate_intens": + if title_text == "ADV-R": + node_prev = nodes_deleted.pop() + label_prev = node_prev[0][0].label() + token_prev = filter(None, node_prev).leaves()[0] + token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0] + specific = classe.find('specific') + result_specific = self.get_adv_intensidade(token) + token_concate = result_specific + "_" + token_prev + node_pai[nodes_positions[count_temp]][0][0][0] = token_concate + newprop = "" + if label_prev[:-2] == "VB": + newprop = "VBi" + elif label_prev[:-3] == "ADJ": + newprop = "ADJi" + node_pai[nodes_positions[count_temp]][0][0].set_label(newprop) + + else: + token_prev = filter(None, nodes_deleted.pop()).leaves()[0] + token_prev_specific = self.get_adv_intensidade(token_prev) + token = filter(None, node_pai[nodes_positions[count_temp]].leaves())[0] + token_concate = token_prev_specific + "_" + token + node_pai[nodes_positions[count_temp]][0][0][0] = token_concate + node_pai[nodes_positions[count_temp]][0][0].set_label(newprop.text) + + elif action_text == "concate_neg": + print "TODO" + if newprop is not None: node_pai[nodes_positions[self.count]].set_label(newprop.text) @@ -387,8 +377,8 @@ class AplicaRegras(object): return self.dicionarios.get_verbo_infinitivo(token) return token - def get_token_intensidade(self, token): - print 'TODO' + def get_adv_intensidade(self, token): + return self.dicionarios.get_adverbio_intensidade(token) def simplificar_sentenca(self, lista): '''Simplifica a sentença para que possa evitar a ditalogia. @@ -410,11 +400,12 @@ class AplicaRegras(object): if num: try: - return self.converter_extenso(lista_simplificada) + lista_simplificada = self.converter_extenso(lista_simplificada) except: pass - return lista_simplificada + return " ".join([x[0] for x in lista_simplificada]) + def analisar_plural(self, token): '''Altera uma palavra do plural para o singular de acordo com o final da mesma. -- libgit2 0.21.2