diff --git a/ModuleTranslate.py b/ModuleTranslate.py index b559a6b..3cb98e9 100644 --- a/ModuleTranslate.py +++ b/ModuleTranslate.py @@ -3,7 +3,6 @@ import sys, os sys.path.append(os.getcwd()+"/tradutor/src/py") -#sys.path.append(os.path.expanduser("~/gtaaas/tradutor/src/py")) from Tradutor import * tradutor = Tradutor() diff --git a/data/dicPortGlosa.csv b/data/dicPortGlosa.csv index 5996050..265bf23 100644 --- a/data/dicPortGlosa.csv +++ b/data/dicPortGlosa.csv @@ -98462,7 +98462,7 @@ DEMOCRATIZASTE;DEMOCRATIZAR;all;;;;;;;;;ver SUAVAS;SUAR;all;;;;;;;;;ver AMANTE;AMANTE;all;;;;;;;;;adj, sub ESTUDO;ESTUDAR;all;;;;;;;;;ver, sub -FUI;SER;all;IR;ver;;;;;;;ver +FUI;IR;all;;ver;;;;;;;ver CONTRADIGAIS;CONTRADIZER;all;;;;;;;;;ver APERTAS;APERTAR;all;;;;;;;;;ver AUXILIARIAMOS;AUXILIAR;all;;;;;;;;;ver diff --git a/data/temposVerbais.csv b/data/temposVerbais.csv new file mode 100644 index 0000000..77bfe4d --- /dev/null +++ b/data/temposVerbais.csv @@ -0,0 +1,15 @@ +ONTEM +ANTIGAMENTE +PASSADO +ANTEONTEM +ANTES +ATRAS +HOJE +AGORA +IMEDIATAMENTE +JA +DIARAMENTE +AMANHA +DEPOIS +FUTURO +FUTURAMENTE \ No newline at end of file diff --git a/servico/src/serviceWindowGeneration.cpp b/servico/src/serviceWindowGeneration.cpp index b54291a..2378116 100644 --- a/servico/src/serviceWindowGeneration.cpp +++ b/servico/src/serviceWindowGeneration.cpp @@ -43,8 +43,7 @@ bool ServiceWindowGeneration::isRunning() { /* Quando o sincronizador termina, ele invoca esse método para avisar! */ void ServiceWindowGeneration::finalizouSincronizacao() { - char op = this->getRunningOption(); - if (op != '2' && serviceType != SERVICE_TYPE_TEXT && serviceType != SERVICE_TYPE_SRT_ONLY) { + if (getRunningOption() != '2' && serviceType != SERVICE_TYPE_TEXT && serviceType != SERVICE_TYPE_SRT_ONLY) { mixer = new Mixer(); mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency); } diff --git a/tradutor/src/py/Simplificador.py b/tradutor/src/py/Simplificador.py index 1e836af..b19b576 100644 --- a/tradutor/src/py/Simplificador.py +++ b/tradutor/src/py/Simplificador.py @@ -17,6 +17,7 @@ class Simplificador(object): self.__dicSin = {} self.__dicWords = {} self.__dic2Gen = {} + self.__dicTemVerbs = {} self.executeWorkCSV() # retira artigos e preposicoes; passa verbos para infinitivo e verificar se há sinonimos @@ -24,11 +25,21 @@ class Simplificador(object): self.__ts = [] self.it.load(texto) self.__b = False + self.__verb = False + self.__adv = False; + self.__countVerb = 0 + self.__countAdv = 0 while(self.it.hasNext()): w = self.auxConvert(self.it.getAtualW()) t = self.it.getAtualT() if self.__dicWords.has_key(t) == False: # verifica se nao eh artigo/preposicao wu = w.upper() # deixa o token maiusculo + if t[:2] == "VB": + self.__verb = True + self.__countVerb += 1 + if t[:3] == "ADV": + self.__adv = True + self.__countAdv += 1 if self.__dicInf.has_key(wu): # verifica se ha um verbo infinitivo desse token sAux = self.__dicInf[wu] # se sim, adiciona numa string aux if self.__dicSin.has_key(sAux): # verifica se ha um sinonimo para esse verbo infinitivo @@ -42,6 +53,7 @@ class Simplificador(object): self.__bSin = True if self.__dic2Gen.has_key(wu): + del self.__ts[-1] lenTicket = len(self.it.getAntT()) if ((self.__dicWords.has_key(self.it.getAntT())) and (self.it.getAntT()[lenTicket-1:] == "F") or (self.it.getAntT()[lenTicket-3:] == "F-P")): self.__ts.append(["MULHER " + wu,t]) @@ -50,21 +62,18 @@ class Simplificador(object): self.__b = True if self.__b == False: # verifica se nao encontrou nem verbo infinito ou sinonimo self.__ts.append([wu,t]) - self.__b = False - self.it.reset() + if self.__verb == True: + return self.verbalAnalysis(self.__ts) return self.__ts # cria e recupera todos os dicionarios (verbos inf., sinonimos e artigos/preposicoes) def executeWorkCSV(self): - self.__csv.createDicInf() - self.__csv.createDicSin() - self.__csv.createDicWords() - self.__csv.createDic2Gen() self.__dicInf = self.__csv.getDicInf() self.__dicSin = self.__csv.getDicSin() self.__dicWords = self.__csv.getDicWords() self.__dic2Gen = self.__csv.getDic2Gen() + self.__dicTemVerbs = self.__csv.getDicTemVerbs() # converte romano para numero/numero para palavra def auxConvert(self, t): @@ -74,4 +83,55 @@ class Simplificador(object): except: if t.isdigit(): return extenso(t).decode("utf-8") - return t \ No newline at end of file + return t + + + def verbalAnalysis(self, lista): + lv = [] + self.it.load(lista) + hasFut = False + hasPas = False + count = 0 + while(self.it.hasNext()): + w = self.it.getAtualW().upper() + t = self.it.getAtualT() + + if(t[:3] == "ADV"): + if (self.__dicTemVerbs.has_key(w)): + self.it.reset() + #print "ADV: retornou lista original" + return lista + + if(t == "VB-P"): + if (self.__countVerb > 1): + count += 1 + #print "VB-P: Incrementou" + if(count == self.__countVerb): + #print "VB-P Adicionou " + w + lv.append([w,t]) + else: + #print "VB-P: retornou lista original" + self.it.reset() + return lista + elif(t == "VB-D"): + count += 1 + hasPas = True + #print "VB-D: Incrementou" + if(count == self.__countVerb): + #print "VB-D Adicionou " + w + lv.append([w,t]) + elif(t == "VB-R"): + count += 1 + hasFut = True + #print "VB-R: Incrementou" + if(count == self.__countVerb): + #print "VB-R Adicionou " + w + lv.append([w,t]) + else: + lv.append([w,t]) + if (hasFut): + lv.append(["FUTURO", "TVB"]) + elif (hasPas): + lv.append(["PASSADO", "TVB"]) + self.it.reset() + return lv \ No newline at end of file diff --git a/tradutor/src/py/Tradutor.py b/tradutor/src/py/Tradutor.py index f443c48..9cc249d 100644 --- a/tradutor/src/py/Tradutor.py +++ b/tradutor/src/py/Tradutor.py @@ -29,7 +29,7 @@ class Tradutor(object): #retira artigos e preposicoes self.__ts = self.__simplificador.simplificar(self.__t) self.__t = None - + #aplica as regras #self.__tr = self.__regras.aplicarRegras(self.__ts) #self.__ts = None diff --git a/tradutor/src/py/WorkCSV.py b/tradutor/src/py/WorkCSV.py index f730a6b..3df29ec 100644 --- a/tradutor/src/py/WorkCSV.py +++ b/tradutor/src/py/WorkCSV.py @@ -19,6 +19,13 @@ class WorkCSV(object): self.__dicWords = {} self.__file2Gen = '' self.__dic2Gen = {} + self.__fileTemVerbs = '' + self.__dicTemVerbs = {} + self.createDicInf() + self.createDicSin() + self.createDicWords() + self.createDic2Gen() + self.createDicTemVerbs() # Abre o arquivo que contem os verbos no infinitivo e preenche o dicionario com os mesmos def createDicInf(self): @@ -46,9 +53,18 @@ class WorkCSV(object): for row in self.__fileSin: if row[1] != "": self.__dicSin[row[0].decode("utf-8")] = row[1].decode("utf-8") - - #except: - # print "Unexpected error:", sys.exc_info()[0] + + + # Abre o arquivo que contem os tempos verbais + def createDicTemVerbs(self): + try: + self.__fileTemVerbs = csv.reader(open(self.__path+"temposVerbais.csv"), delimiter=";") + except IOError, (errno, strerror): + print "I/O error(%s): %s" % (errno, strerror) + print "createDicTemVerbs" + + for row in self.__fileTemVerbs: + self.__dicTemVerbs[row[0].decode("utf-8")] = row[0].decode("utf-8") # Abre o arquivo que contem os artigos e preposicoes de acordo com o modelo de idioma passado na chamada e preenche o dicionario com os mesmos def createDicWords(self): @@ -86,4 +102,8 @@ class WorkCSV(object): # Retorna o dicionario dos substantivos a serem analisados pelo simplificador def getDic2Gen(self): - return self.__dic2Gen \ No newline at end of file + return self.__dic2Gen + + # Retorna o dicionario dos tempos verbais + def getDicTemVerbs(self): + return self.__dicTemVerbs \ No newline at end of file -- libgit2 0.21.2