PortGlosa.py 1.98 KB
#!/usr/bin/python
# -*- coding: utf-8 -*-

#Autor: Erickson Silva 
#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com>

#LAViD - Laboratório de Aplicações de Vídeo Digital

import sys
from ThreadTradutor import *
from TraduzSentencas import *
from LerDicionarios import *


tradutor = TraduzSentencas()
dicionario = LerDicionarios()

def traduzir(texto, threads=False):
	if texto.isspace() or texto == "":
		return "ESCOLHER TEXTO CERTO"

	elif threads:
		return iniciar_com_threads(texto)

	else:
		return iniciar_sem_threads(texto)
	
def iniciar_com_threads(texto):
	texto_quebrado = quebrar_texto(texto)
	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, ThreadTradutor(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 iniciar_sem_threads(texto):
	texto_quebrado = quebrar_texto(texto)
	texto_traduzido = []
	for texto in texto_quebrado:
		glosa = tradutor.iniciar_traducao(texto)
		texto_traduzido.append(glosa)
	return " ".join(texto_traduzido)
	
def quebrar_texto(texto):
	if '.' not in texto:
		return [texto]

	texto_quebrado = texto.split()
	tamanho_texto_quebrado = len(texto_quebrado)
	sentencas = []
	lista_texto = []
	for i in range(tamanho_texto_quebrado):
		lista_texto.append(texto_quebrado[i])
		if '.' in texto_quebrado[i]:
			if not dicionario.has_pron_tratam(texto_quebrado[i].lower()) and i < tamanho_texto_quebrado-1 and texto_quebrado[i+1][0].isupper():
				sentenca = " ".join(lista_texto)[:-1]
				sentencas.append(sentenca)
				lista_texto = []
				continue
	if lista_texto:
		sentencas.append( " ".join(lista_texto))
	return sentencas

def ajuda():
	#TODO: Adicionar um pequeno tuto aqui
	print "Help"

if __name__ == '__main__':
	texto = sys.argv[1]
	glosa = traduzir(texto)
	sys.exit(glosa)