Commit 7131db790b96008978183dceb0d3004c282035c5
1 parent
622366b7
Exists in
master
and in
1 other branch
Adiciona logging na análise sintática para obter feedback para futuras correções
Showing
3 changed files
with
35 additions
and
12 deletions
Show diff stats
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 |