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 | 33 | "i":self.verificar_adv_intensidade, "vbi":"zero", "n":self.verificar_vb_muda_negacao, "abmn":"zero", |
| 34 | 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 | 38 | # Gera arvore a partir do arquivos regras.xml |
| 39 | 39 | def get_root(self): |
| ... | ... | @@ -177,6 +177,7 @@ class AplicaRegras(object): |
| 177 | 177 | for classe in rule.iter('class'): |
| 178 | 178 | action = classe.find('action') |
| 179 | 179 | newprop = classe.find('newprop') |
| 180 | + title_text = classe.find('title').text | |
| 180 | 181 | |
| 181 | 182 | self.count += 1 |
| 182 | 183 | |
| ... | ... | @@ -197,46 +198,35 @@ class AplicaRegras(object): |
| 197 | 198 | node_pai[nodes_positions[self.count]] = aux2 |
| 198 | 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 | 231 | if newprop is not None: |
| 242 | 232 | node_pai[nodes_positions[self.count]].set_label(newprop.text) |
| ... | ... | @@ -387,8 +377,8 @@ class AplicaRegras(object): |
| 387 | 377 | return self.dicionarios.get_verbo_infinitivo(token) |
| 388 | 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 | 383 | def simplificar_sentenca(self, lista): |
| 394 | 384 | '''Simplifica a sentença para que possa evitar a ditalogia. |
| ... | ... | @@ -410,11 +400,12 @@ class AplicaRegras(object): |
| 410 | 400 | |
| 411 | 401 | if num: |
| 412 | 402 | try: |
| 413 | - return self.converter_extenso(lista_simplificada) | |
| 403 | + lista_simplificada = self.converter_extenso(lista_simplificada) | |
| 414 | 404 | except: |
| 415 | 405 | pass |
| 416 | 406 | |
| 417 | - return lista_simplificada | |
| 407 | + return " ".join([x[0] for x in lista_simplificada]) | |
| 408 | + | |
| 418 | 409 | |
| 419 | 410 | def analisar_plural(self, token): |
| 420 | 411 | '''Altera uma palavra do plural para o singular de acordo com o final da mesma. | ... | ... |