From 85d80585eeeebfcbcc98dbb7dee0a40d93d0859d Mon Sep 17 00:00:00 2001 From: Erickson Silva Date: Sat, 7 Mar 2015 18:35:05 -0300 Subject: [PATCH] Atualiza TraduzSentencas como Thread e PortGlosa como classe principal --- src/new/ConverteExtenso.py | 2 +- src/new/PortGlosa.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/new/TraduzSentencas.py | 68 +++++++++++++++++++++++++------------------------------------------- 3 files changed, 76 insertions(+), 44 deletions(-) create mode 100644 src/new/PortGlosa.py diff --git a/src/new/ConverteExtenso.py b/src/new/ConverteExtenso.py index 58a2bf1..bb729ed 100644 --- a/src/new/ConverteExtenso.py +++ b/src/new/ConverteExtenso.py @@ -87,7 +87,7 @@ o resultado. ''' # TODO: Refatorar para nao usar mais o extensoUnit -def extenso(extenso): +def convert_extenso(extenso): global newToken, auxToken extensoQuebrado = extenso.lower().split(" ") nums = [] diff --git a/src/new/PortGlosa.py b/src/new/PortGlosa.py new file mode 100644 index 0000000..881e0a4 --- /dev/null +++ b/src/new/PortGlosa.py @@ -0,0 +1,50 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +#Autor: Erickson Silva +#Email: + +#LAViD - Laboratório de Aplicações de Vídeo Digital + +from TraduzSentencas import * + +def traduz(texto): + glosa = iniciar_traducao(texto) + if glosa: + return glosa + return "selecione_texto" + +def iniciar_traducao(texto): + texto_quebrado = quebrar_texto(texto.lower()) + num_threads = len(texto_quebrado) + texto_traduzido = [] + threads = [] + + for i in range(num_threads): + if texto_quebrado[i] > 0 and texto_quebrado[i] != " ": + threads.insert(i, TraduzSentencas(texto_quebrado[i])) + threads[i].start() + for i in range(num_threads): + threads[i].join() + texto_traduzido.append(threads[i].obter_glosa()) + + try: + return " ".join(texto_traduzido) + except: + return None + +def quebrar_texto(texto): + quantidade_pontos = texto.count('. ') + sentencas = [] + for i in range(quantidade_pontos): + posicao_ponto = texto.find('.') + if texto[posicao_ponto+2].isupper(): + sentencas.append(texto[:posicao_ponto]) + texto = texto[posicao_ponto+2:] + if len(texto) > 0: + sentencas.append(texto) + return sentencas + +def help(): + #TODO: Adicionar um pequeno tuto aqui + print "Help" \ No newline at end of file diff --git a/src/new/TraduzSentencas.py b/src/new/TraduzSentencas.py index 49e714b..6ffe51c 100644 --- a/src/new/TraduzSentencas.py +++ b/src/new/TraduzSentencas.py @@ -6,51 +6,33 @@ #LAViD - Laboratório de Aplicações de Vídeo Digital +from threading import Thread import alexp from AplicaSinonimos import * from AplicaRegras import * -aplic_sinonimos = AplicaSinonimos() -aplic_regras = AplicaRegras() - - -def traduz(texto): - try: - texto_codificado = texto.decode("utf-8") - except: - texto_codificado = texto.decode("iso-8859-1") - glosa = iniciar_traducao(texto_codificado) - if glosa: return glosa - return "selecione um texto" - -def iniciar_traducao(texto): - texto_quebrado = texto.lower().split(".") - texto_traduzido = [] - for sentenca in texto_quebrado: - if len(sentenca) > 0 and sentenca != " ": - analise = gerar_analise(sentenca) - texto_traduzido.append(analise) - try: - return " ".join(texto_traduzido) - except: - return "" - -def gerar_analise(sentenca): - try: - analise_sintatica = alexp.run(sentenca) - except: - analise_sintatica = None - - analise_morfologica = alexp.getAnaliseMorfologica() - if (isinstance(analise_sintatica,type(None))): - regras_aplicadas = aplic_regras.aplicar_regras_morfo(analise_morfologica) - else: - regras_aplicadas = aplic_regras.aplicar_regras_sint(analise_morfologica, analise_sintatica) +class TraduzSentencas(Thread): - aplic_regras.separar_new_tokens(regras_aplicadas) - sinonimos_aplicados = aplic_sinonimos.aplicar_sinonimos(regras_aplicadas) - return sinonimos_aplicados.encode('utf-8') - -def help(): - #TODO: Adicionar um pequeno tuto aqui - print "Help" \ No newline at end of file + def __init__(self, sentenca): + Thread.__init__(self) + self.sentenca = sentenca + self.glosa = "" + self.aplic_sinonimos = AplicaSinonimos() + self.aplic_regras = AplicaRegras() + + def run(self): + analise_sintatica = alexp.run(self.sentenca) + analise_morfologica = alexp.getAnaliseMorfologica() + + if (isinstance(analise_sintatica,type(None))): + regras_aplicadas = self.aplic_regras.aplicar_regras_morfo(analise_morfologica) + else: + 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) + self.glosa = sinonimos_aplicados.encode('utf-8') + + def obter_glosa(self): + return self.glosa \ No newline at end of file -- libgit2 0.21.2