Commit 85d80585eeeebfcbcc98dbb7dee0a40d93d0859d
1 parent
61ffafeb
Exists in
master
and in
1 other branch
Atualiza TraduzSentencas como Thread e PortGlosa como classe principal
Showing
3 changed files
with
76 additions
and
44 deletions
Show diff stats
src/new/ConverteExtenso.py
@@ -87,7 +87,7 @@ o resultado. | @@ -87,7 +87,7 @@ o resultado. | ||
87 | ''' | 87 | ''' |
88 | 88 | ||
89 | # TODO: Refatorar para nao usar mais o extensoUnit | 89 | # TODO: Refatorar para nao usar mais o extensoUnit |
90 | -def extenso(extenso): | 90 | +def convert_extenso(extenso): |
91 | global newToken, auxToken | 91 | global newToken, auxToken |
92 | extensoQuebrado = extenso.lower().split(" ") | 92 | extensoQuebrado = extenso.lower().split(" ") |
93 | nums = [] | 93 | nums = [] |
@@ -0,0 +1,50 @@ | @@ -0,0 +1,50 @@ | ||
1 | +#!/usr/bin/python | ||
2 | +# -*- coding: utf-8 -*- | ||
3 | + | ||
4 | +#Autor: Erickson Silva | ||
5 | +#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com> | ||
6 | + | ||
7 | +#LAViD - Laboratório de Aplicações de Vídeo Digital | ||
8 | + | ||
9 | +from TraduzSentencas import * | ||
10 | + | ||
11 | +def traduz(texto): | ||
12 | + glosa = iniciar_traducao(texto) | ||
13 | + if glosa: | ||
14 | + return glosa | ||
15 | + return "selecione_texto" | ||
16 | + | ||
17 | +def iniciar_traducao(texto): | ||
18 | + texto_quebrado = quebrar_texto(texto.lower()) | ||
19 | + num_threads = len(texto_quebrado) | ||
20 | + texto_traduzido = [] | ||
21 | + threads = [] | ||
22 | + | ||
23 | + for i in range(num_threads): | ||
24 | + if texto_quebrado[i] > 0 and texto_quebrado[i] != " ": | ||
25 | + threads.insert(i, TraduzSentencas(texto_quebrado[i])) | ||
26 | + threads[i].start() | ||
27 | + for i in range(num_threads): | ||
28 | + threads[i].join() | ||
29 | + texto_traduzido.append(threads[i].obter_glosa()) | ||
30 | + | ||
31 | + try: | ||
32 | + return " ".join(texto_traduzido) | ||
33 | + except: | ||
34 | + return None | ||
35 | + | ||
36 | +def quebrar_texto(texto): | ||
37 | + quantidade_pontos = texto.count('. ') | ||
38 | + sentencas = [] | ||
39 | + for i in range(quantidade_pontos): | ||
40 | + posicao_ponto = texto.find('.') | ||
41 | + if texto[posicao_ponto+2].isupper(): | ||
42 | + sentencas.append(texto[:posicao_ponto]) | ||
43 | + texto = texto[posicao_ponto+2:] | ||
44 | + if len(texto) > 0: | ||
45 | + sentencas.append(texto) | ||
46 | + return sentencas | ||
47 | + | ||
48 | +def help(): | ||
49 | + #TODO: Adicionar um pequeno tuto aqui | ||
50 | + print "Help" | ||
0 | \ No newline at end of file | 51 | \ No newline at end of file |
src/new/TraduzSentencas.py
@@ -6,51 +6,33 @@ | @@ -6,51 +6,33 @@ | ||
6 | 6 | ||
7 | #LAViD - Laboratório de Aplicações de Vídeo Digital | 7 | #LAViD - Laboratório de Aplicações de Vídeo Digital |
8 | 8 | ||
9 | +from threading import Thread | ||
9 | import alexp | 10 | import alexp |
10 | from AplicaSinonimos import * | 11 | from AplicaSinonimos import * |
11 | from AplicaRegras import * | 12 | from AplicaRegras import * |
12 | 13 | ||
13 | -aplic_sinonimos = AplicaSinonimos() | ||
14 | -aplic_regras = AplicaRegras() | ||
15 | - | ||
16 | - | ||
17 | -def traduz(texto): | ||
18 | - try: | ||
19 | - texto_codificado = texto.decode("utf-8") | ||
20 | - except: | ||
21 | - texto_codificado = texto.decode("iso-8859-1") | ||
22 | - glosa = iniciar_traducao(texto_codificado) | ||
23 | - if glosa: return glosa | ||
24 | - return "selecione um texto" | ||
25 | - | ||
26 | -def iniciar_traducao(texto): | ||
27 | - texto_quebrado = texto.lower().split(".") | ||
28 | - texto_traduzido = [] | ||
29 | - for sentenca in texto_quebrado: | ||
30 | - if len(sentenca) > 0 and sentenca != " ": | ||
31 | - analise = gerar_analise(sentenca) | ||
32 | - texto_traduzido.append(analise) | ||
33 | - try: | ||
34 | - return " ".join(texto_traduzido) | ||
35 | - except: | ||
36 | - return "" | ||
37 | - | ||
38 | -def gerar_analise(sentenca): | ||
39 | - try: | ||
40 | - analise_sintatica = alexp.run(sentenca) | ||
41 | - except: | ||
42 | - analise_sintatica = None | ||
43 | - | ||
44 | - analise_morfologica = alexp.getAnaliseMorfologica() | ||
45 | - if (isinstance(analise_sintatica,type(None))): | ||
46 | - regras_aplicadas = aplic_regras.aplicar_regras_morfo(analise_morfologica) | ||
47 | - else: | ||
48 | - regras_aplicadas = aplic_regras.aplicar_regras_sint(analise_morfologica, analise_sintatica) | 14 | +class TraduzSentencas(Thread): |
49 | 15 | ||
50 | - aplic_regras.separar_new_tokens(regras_aplicadas) | ||
51 | - sinonimos_aplicados = aplic_sinonimos.aplicar_sinonimos(regras_aplicadas) | ||
52 | - return sinonimos_aplicados.encode('utf-8') | ||
53 | - | ||
54 | -def help(): | ||
55 | - #TODO: Adicionar um pequeno tuto aqui | ||
56 | - print "Help" | ||
57 | \ No newline at end of file | 16 | \ No newline at end of file |
17 | + def __init__(self, sentenca): | ||
18 | + Thread.__init__(self) | ||
19 | + self.sentenca = sentenca | ||
20 | + self.glosa = "" | ||
21 | + self.aplic_sinonimos = AplicaSinonimos() | ||
22 | + self.aplic_regras = AplicaRegras() | ||
23 | + | ||
24 | + def run(self): | ||
25 | + analise_sintatica = alexp.run(self.sentenca) | ||
26 | + analise_morfologica = alexp.getAnaliseMorfologica() | ||
27 | + | ||
28 | + if (isinstance(analise_sintatica,type(None))): | ||
29 | + regras_aplicadas = self.aplic_regras.aplicar_regras_morfo(analise_morfologica) | ||
30 | + else: | ||
31 | + regras_aplicadas = self.aplic_regras.aplicar_regras_sint(analise_morfologica, analise_sintatica) | ||
32 | + | ||
33 | + # separar tokens quando tem um newtoken | ||
34 | + self.aplic_regras.separar_new_tokens(regras_aplicadas) | ||
35 | + sinonimos_aplicados = self.aplic_sinonimos.aplicar_sinonimos(regras_aplicadas) | ||
36 | + self.glosa = sinonimos_aplicados.encode('utf-8') | ||
37 | + | ||
38 | + def obter_glosa(self): | ||
39 | + return self.glosa | ||
58 | \ No newline at end of file | 40 | \ No newline at end of file |