diff --git a/src/LerDicionarios.py b/src/LerDicionarios.py index ca83a1f..1391ed1 100644 --- a/src/LerDicionarios.py +++ b/src/LerDicionarios.py @@ -29,7 +29,8 @@ class LerDicionarios(Singleton): self.set_art = [] self.set_prep = [] self.dic_sin = {} - self.set_sb_2_gen = [] + self.set_sb_2_gen = [] + self.set_pron_trat = [] self.dic_vb_infinitivo = {} self.set_vb_ligacao = [] self.dic_vb_muda_negacao = [] @@ -165,6 +166,17 @@ class LerDicionarios(Singleton): rows.append(row[0].decode("utf-8")) self.set_vb_ligacao = set(rows) + def carregar_pronomes_tratamento(self): + try: + self.file = csv.reader(open(self.path+"pronomesTratamento.csv")) + except IOError, (errno, strerror): + print "I/O error(%s): %s" % (errno, strerror) + print "carregar_pronomes_tratamento" + + rows = [] + for row in self.file: + rows.append(row[0].decode("utf-8")) + self.set_pron_trat = set(rows) def carregar_verbos_muda_negacao(self): try: @@ -195,6 +207,9 @@ class LerDicionarios(Singleton): def has_sinonimo(self, token): return self.dic_sin.has_key(token) + def has_pron_tratam(self, token): + return token in self.set_pron_trat + def has_subst_2_generos (self, token): return token in self.set_sb_2_gen diff --git a/src/PortGlosa.py b/src/PortGlosa.py index 0e62a96..ac8652f 100644 --- a/src/PortGlosa.py +++ b/src/PortGlosa.py @@ -8,9 +8,11 @@ from ThreadTradutor import * from TraduzSentencas import * +from LerDicionarios import * tradutor = TraduzSentencas() +dicionario = LerDicionarios() def traduzir(texto, threads=False): if texto.isspace() or texto == "": @@ -42,18 +44,45 @@ def iniciar_com_threads(texto): return None def iniciar_sem_threads(texto): - return tradutor.iniciar_traducao(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): quantidade_pontos = texto.count('. ') sentencas = [] + if quantidade_pontos == 0: + return [texto] 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 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(): -- libgit2 0.21.2