Commit 10a5a33cd5abe188aeff0f3ed021771ca3b36b7d
1 parent
d9027031
Exists in
master
and in
1 other branch
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. |