Commit 7131db790b96008978183dceb0d3004c282035c5

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

Adiciona logging na análise sintática para obter feedback para futuras correções

data/regras.xml
@@ -267,6 +267,15 @@ @@ -267,6 +267,15 @@
267 <action>remove</action> 267 <action>remove</action>
268 </class> 268 </class>
269 </rule> 269 </rule>
  270 + <rule name = "SR-P"><!-- tempo verbal - presente com AdvP(t) -->
  271 + <active>true</active>
  272 + <count>1</count>
  273 + <class>
  274 + <title>SR-P</title>
  275 + <action>change_vb</action>
  276 + <newprop>SR</newprop>
  277 + </class>
  278 + </rule>
270 <rule name = "VB-P"><!-- tempo verbal - presente com AdvP(t) --> 279 <rule name = "VB-P"><!-- tempo verbal - presente com AdvP(t) -->
271 <active>true</active> 280 <active>true</active>
272 <count>1</count> 281 <count>1</count>
@@ -391,14 +400,14 @@ @@ -391,14 +400,14 @@
391 </rule> 400 </rule>
392 </morphological> 401 </morphological>
393 <syntactic> 402 <syntactic>
394 - <rule name = "S(NP_VP)"><!-- Ordem direta da sentença --> 403 + <rule name = "S(VP_NP)"><!-- Ordem direta da sentença -->
395 <active>true</active> 404 <active>true</active>
396 <count>2</count> 405 <count>2</count>
397 <class> 406 <class>
398 <action>invert</action> 407 <action>invert</action>
399 </class> 408 </class>
400 </rule> 409 </rule>
401 - <rule name = "SV(Vbar_AP)"><!-- Eliminar vebo de ligação --> 410 + <rule name = "VP(Vbar_AP)"><!-- Eliminar vebo de ligação -->
402 <active>true</active> 411 <active>true</active>
403 <count>2</count> 412 <count>2</count>
404 <class> 413 <class>
src/new/TraduzSentencas.py
@@ -10,6 +10,7 @@ from threading import Thread @@ -10,6 +10,7 @@ from threading import Thread
10 import alexp 10 import alexp
11 from AplicaSinonimos import * 11 from AplicaSinonimos import *
12 from AplicaRegras import * 12 from AplicaRegras import *
  13 +import logging
13 14
14 class TraduzSentencas(Thread): 15 class TraduzSentencas(Thread):
15 16
@@ -19,20 +20,33 @@ class TraduzSentencas(Thread): @@ -19,20 +20,33 @@ class TraduzSentencas(Thread):
19 self.glosa = "" 20 self.glosa = ""
20 self.aplic_sinonimos = AplicaSinonimos() 21 self.aplic_sinonimos = AplicaSinonimos()
21 self.aplic_regras = AplicaRegras() 22 self.aplic_regras = AplicaRegras()
  23 + logging.basicConfig(filename='translate.log',
  24 + format='%(asctime)s - %(levelname)s:\n%(message)s\n\n\n##############################################\n\n',
  25 + level=logging.ERROR)
  26 +
22 27
23 def run(self): 28 def run(self):
24 - analise_sintatica = alexp.run(self.sentenca) 29 + try:
  30 + analise_sintatica = alexp.run(self.sentenca)
  31 + except Exception as ex:
  32 + self.salvar_log(str(ex))
  33 + analise_sintatica = None
  34 +
25 analise_morfologica = alexp.getAnaliseMorfologica() 35 analise_morfologica = alexp.getAnaliseMorfologica()
26 - 36 +
27 if (isinstance(analise_sintatica,type(None))): 37 if (isinstance(analise_sintatica,type(None))):
  38 + print "# ANÁLISE MORFÓLIGCA"
28 regras_aplicadas = self.aplic_regras.aplicar_regras_morfo(analise_morfologica) 39 regras_aplicadas = self.aplic_regras.aplicar_regras_morfo(analise_morfologica)
29 else: 40 else:
  41 + print "# ANÁLISE SINTÁTICA"
30 regras_aplicadas = self.aplic_regras.aplicar_regras_sint(analise_morfologica, analise_sintatica) 42 regras_aplicadas = self.aplic_regras.aplicar_regras_sint(analise_morfologica, analise_sintatica)
31 43
32 - # separar tokens quando tem um newtoken  
33 - self.aplic_regras.separar_new_tokens(regras_aplicadas)  
34 - sinonimos_aplicados = self.aplic_sinonimos.aplicar_sinonimos(regras_aplicadas) 44 + sentenca_corrigida = self.aplic_regras.simplificar_sentenca(regras_aplicadas)
  45 + sinonimos_aplicados = self.aplic_sinonimos.aplicar_sinonimos(sentenca_corrigida)
35 self.glosa = sinonimos_aplicados.encode('utf-8') 46 self.glosa = sinonimos_aplicados.encode('utf-8')
36 47
37 def obter_glosa(self): 48 def obter_glosa(self):
38 - return self.glosa  
39 \ No newline at end of file 49 \ No newline at end of file
  50 + return self.glosa
  51 +
  52 + def salvar_log(self, erro):
  53 + logging.error(erro)
40 \ No newline at end of file 54 \ No newline at end of file
src/new/alexp.py
@@ -29,6 +29,7 @@ @@ -29,6 +29,7 @@
29 """ 29 """
30 import re,nltk,platform, time, random 30 import re,nltk,platform, time, random
31 from os.path import expanduser 31 from os.path import expanduser
  32 +from os import environ
32 from Aelius.Extras import carrega 33 from Aelius.Extras import carrega
33 from Aelius import AnotaCorpus 34 from Aelius import AnotaCorpus
34 from unicodedata import normalize 35 from unicodedata import normalize
@@ -51,11 +52,10 @@ def etiquetaSentenca(s): @@ -51,11 +52,10 @@ def etiquetaSentenca(s):
51 """ 52 """
52 etiquetador = carrega("AeliusHunPos") 53 etiquetador = carrega("AeliusHunPos")
53 anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0] 54 anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0]
54 - while (len(anotada) is 0): 55 + while (anotada[0][1] is None):
55 time.sleep(random.choice(sleep_times)) 56 time.sleep(random.choice(sleep_times))
56 anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0] 57 anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0]
57 - anotada[0] = (anotada[0][0].lower(), anotada[0][1])  
58 - return anotada 58 + return [[x[0].upper(), x[1]] for x in anotada]
59 59
60 def geraEntradasLexicais(lista): 60 def geraEntradasLexicais(lista):
61 """Gera entradas lexicais no formato CFG do NLTK a partir de lista de pares constituídos de tokens e suas etiquetas. 61 """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(): @@ -83,7 +83,7 @@ def encontraArquivo():
83 """ 83 """
84 so = platform.system() 84 so = platform.system()
85 if so == 'Windows': 85 if so == 'Windows':
86 - return expanduser("~") + "\vlibras-translate\data\cfg.syn.nltk" 86 + return os.environ.get("HOMEDRIVE") + "\\vlibras-libs\vlibras-translate\data\cfg.syn.nltk"
87 else: 87 else:
88 return expanduser("~") + "/vlibras-translate/data/cfg.syn.nltk" 88 return expanduser("~") + "/vlibras-translate/data/cfg.syn.nltk"
89 89