From 7131db790b96008978183dceb0d3004c282035c5 Mon Sep 17 00:00:00 2001 From: Erickson Silva Date: Tue, 24 Mar 2015 14:38:41 -0300 Subject: [PATCH] Adiciona logging na análise sintática para obter feedback para futuras correções --- data/regras.xml | 13 +++++++++++-- src/new/TraduzSentencas.py | 26 ++++++++++++++++++++------ src/new/alexp.py | 8 ++++---- 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/data/regras.xml b/data/regras.xml index 49cc401..fcb9e70 100644 --- a/data/regras.xml +++ b/data/regras.xml @@ -267,6 +267,15 @@ remove + + true + 1 + + SR-P + change_vb + SR + + true 1 @@ -391,14 +400,14 @@ - + true 2 invert - + true 2 diff --git a/src/new/TraduzSentencas.py b/src/new/TraduzSentencas.py index 6ffe51c..fc74f4c 100644 --- a/src/new/TraduzSentencas.py +++ b/src/new/TraduzSentencas.py @@ -10,6 +10,7 @@ from threading import Thread import alexp from AplicaSinonimos import * from AplicaRegras import * +import logging class TraduzSentencas(Thread): @@ -19,20 +20,33 @@ class TraduzSentencas(Thread): self.glosa = "" self.aplic_sinonimos = AplicaSinonimos() self.aplic_regras = AplicaRegras() + logging.basicConfig(filename='translate.log', + format='%(asctime)s - %(levelname)s:\n%(message)s\n\n\n##############################################\n\n', + level=logging.ERROR) + def run(self): - analise_sintatica = alexp.run(self.sentenca) + try: + analise_sintatica = alexp.run(self.sentenca) + except Exception as ex: + self.salvar_log(str(ex)) + analise_sintatica = None + analise_morfologica = alexp.getAnaliseMorfologica() - + if (isinstance(analise_sintatica,type(None))): + print "# ANÁLISE MORFÓLIGCA" regras_aplicadas = self.aplic_regras.aplicar_regras_morfo(analise_morfologica) else: + print "# ANÁLISE SINTÁTICA" regras_aplicadas = self.aplic_regras.aplicar_regras_sint(analise_morfologica, analise_sintatica) - # separar tokens quando tem um newtoken - self.aplic_regras.separar_new_tokens(regras_aplicadas) - sinonimos_aplicados = self.aplic_sinonimos.aplicar_sinonimos(regras_aplicadas) + sentenca_corrigida = self.aplic_regras.simplificar_sentenca(regras_aplicadas) + sinonimos_aplicados = self.aplic_sinonimos.aplicar_sinonimos(sentenca_corrigida) self.glosa = sinonimos_aplicados.encode('utf-8') def obter_glosa(self): - return self.glosa \ No newline at end of file + return self.glosa + + def salvar_log(self, erro): + logging.error(erro) \ No newline at end of file diff --git a/src/new/alexp.py b/src/new/alexp.py index 0cc7885..2d8d4a3 100644 --- a/src/new/alexp.py +++ b/src/new/alexp.py @@ -29,6 +29,7 @@ """ import re,nltk,platform, time, random from os.path import expanduser +from os import environ from Aelius.Extras import carrega from Aelius import AnotaCorpus from unicodedata import normalize @@ -51,11 +52,10 @@ def etiquetaSentenca(s): """ etiquetador = carrega("AeliusHunPos") anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0] - while (len(anotada) is 0): + while (anotada[0][1] is None): time.sleep(random.choice(sleep_times)) anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0] - anotada[0] = (anotada[0][0].lower(), anotada[0][1]) - return anotada + return [[x[0].upper(), x[1]] for x in anotada] def geraEntradasLexicais(lista): """Gera entradas lexicais no formato CFG do NLTK a partir de lista de pares constituídos de tokens e suas etiquetas. @@ -83,7 +83,7 @@ def encontraArquivo(): """ so = platform.system() if so == 'Windows': - return expanduser("~") + "\\vlibras-translate\data\cfg.syn.nltk" + return os.environ.get("HOMEDRIVE") + "\\vlibras-libs\\vlibras-translate\data\cfg.syn.nltk" else: return expanduser("~") + "/vlibras-translate/data/cfg.syn.nltk" -- libgit2 0.21.2