From c5584b10fabe8fde724ff929714566943092158e Mon Sep 17 00:00:00 2001 From: Erickson Date: Wed, 7 Jan 2015 10:59:35 -0300 Subject: [PATCH] Adiciona novo dicionario de sinonimos --- data/portuguesGlosa.csv | 8 ++++---- src/new/AplicaRegras.py | 52 ++++++++++++++++++++++++++++++---------------------- src/new/LeitorDicionarios.py | 5 +++-- src/new/Tradutor.py | 10 +++++----- 4 files changed, 42 insertions(+), 33 deletions(-) diff --git a/data/portuguesGlosa.csv b/data/portuguesGlosa.csv index a2c3198..14dc31f 100644 --- a/data/portuguesGlosa.csv +++ b/data/portuguesGlosa.csv @@ -922,7 +922,7 @@ CONCLUDENTE;ORIGINAL;;X GENUÍNO;ORIGINAL;;X LEGÍTIMO;ORIGINAL;;X OFICIAL;ORIGINAL;;X -1;ORIGINAL;;X +VERDADEIRO;ORIGINAL;;X ESCUTAR;OUVIR;;X AUDIÇÃO;OUVIR;;X OUVINTE;OUVIR;;X @@ -1243,8 +1243,8 @@ ARREDORES;VIZINHO;;X VILA;VIZINHO;;X VOLTA;VOLTAR;;X REGRESSAR;VOLTAR;;X -FALSIDADE;0;;X -VERDADE;1;;X +FALSIDADE;FALSO;;X +VERDADE;VERDADEIRO;;X DUZIA;1 2;; ANANÁS;ABACAXI;; ABSTER;ABANDONAR;; @@ -3960,5 +3960,5 @@ PRAGUEJAR;XINGAR;; CAÇOAR;ZOMBAR;; ZOMBETEAR;ZOMBAR;; ZOO;ZOOLÓGICO;; -HIPÓCRITA;0;; +HIPÓCRITA;FALSO;; TRANSPORTAR;;; diff --git a/src/new/AplicaRegras.py b/src/new/AplicaRegras.py index 4897c99..0f6787d 100644 --- a/src/new/AplicaRegras.py +++ b/src/new/AplicaRegras.py @@ -17,7 +17,7 @@ class AplicaRegras(object): self.__dicionarios = LeitorDicionarios() # retira artigos e preposicoes; passa verbos para infinitivo e verificar se há sinonimos - def simplificar(self, texto): + def inicializar(self, texto): it = Iterator() it.load(texto) self.__ts = [] @@ -29,8 +29,21 @@ class AplicaRegras(object): token = it.getAtualW() tag = it.getAtualT() self.__b = False + if self.__dicionarios.hasPalavraIgnorada(tag) == False: # verifica se nao eh artigo/preposicao + #VERIFICA SE É SUBTANTIVO COMUM DOS 2 GENEROS + if self.__dicionarios.hasSubst2Genero(token): + #del self.__ts[-1] + lenTicket = len(it.getAntT()) + if ((self.__dicionarios.hasPalavraIgnorada(it.getAntT())) and (it.getAntT()[lenTicket-1:] == "F") or (it.getAntT()[lenTicket-3:] == "F-P")): + self.__ts.append(["MULHER ", "2GEN"]) + self.__ts.append([token,tag]) + else: + self.__ts.append(["HOMEM ", "2GEN"]) + self.__ts.append([token,tag]) + self.__b = True + #VERIFICA SE É ADVERBIO E CONTA A QUANTIDADE if tag[:3] == "ADV": self.__adv = True @@ -47,24 +60,8 @@ class AplicaRegras(object): #VERIFICA SE É VERBO DE TEMPO E CONTA A QUANTIDADE if tag == "VB-P" or tag == "VB-D" or tag == "VB-R": self.__verb = True - self.__countVerb += 1 - - - #VERIFICA SE É SUBTANTIVO COMUM DOS 2 GENEROS - if self.__dicionarios.hasSubst2Genero(token): - #del self.__ts[-1] - lenTicket = len(it.getAntT()) - if ((self.__dicionarios.hasPalavraIgnorada(it.getAntT())) and (it.getAntT()[lenTicket-1:] == "F") or (it.getAntT()[lenTicket-3:] == "F-P")): - self.__ts.append(["MULHER ", "2GEN"]) - self.__ts.append([token,tag]) - else: - self.__ts.append(["HOMEM ", "2GEN"]) - self.__ts.append([token,tag]) - self.__b = True - - #VERIFICA SE É PLURAL - #if tag[-2:] == "-P": - # token = self.pluralAnalysis(token) + self.__countVerb += 1 + #SE NÃO HOUVE NENHUM ALTERAÇÃO, OU SEJA, NÃO APLICOU NENHUMA REGRA, ADICIONA O TOKEN ORIGINAL if self.__b == False: # verifica se nao encontrou nem verbo infinito ou sinonimo @@ -72,9 +69,10 @@ class AplicaRegras(object): #SE ENCONTROU VERBO, ENTÃO ANALISA a SENTENCA NOVAMENTE (again?) if self.__verb == True: - return self.verbalAnalysis(self.__ts) + self.__ts = self.verbalAnalysis(self.__ts) - return self.__ts + #VERIFICA SE É PLURAL + return self.hasPlural(self.__ts) # converte romano para numero @@ -136,7 +134,17 @@ class AplicaRegras(object): return lv - def pluralAnalysis(self, word): + def hasPlural(self, lista): + + tmp = lista + for e in tmp: + if e[1][-2:] == "-P": + e[0] = analisarPlural(e[0]) + + return tmp + + + def analisarPlural(self, word): if(word[-3:] == "OES" or word[-2:] == "AES" or word[-2:] == "AOS"): return word[0:-3]+"AO" diff --git a/src/new/LeitorDicionarios.py b/src/new/LeitorDicionarios.py index cc8375f..3d56334 100644 --- a/src/new/LeitorDicionarios.py +++ b/src/new/LeitorDicionarios.py @@ -6,7 +6,8 @@ #LAViD - Laboratório de Aplicações de Vídeo Digital -import os, csv, sys +from os.path import expanduser +import csv class LeitorDicionarios(object): #_iInstance = None @@ -29,7 +30,7 @@ class LeitorDicionarios(object): # Define e inicializa os atributos def __init__(self): - self.__path = "/home/erickson/vlibras-translate/data/" + self.__path = expanduser("~") + "/vlibras-translate/data/" self.__dicInf = {} self.__dicSin = {} self.__dicWords = {} diff --git a/src/new/Tradutor.py b/src/new/Tradutor.py index 80c9bf5..e0c2bbc 100644 --- a/src/new/Tradutor.py +++ b/src/new/Tradutor.py @@ -10,8 +10,8 @@ import alexp from AplicaSinonimos import * from AplicaRegras import * -sin = AplicaSinonimos() -reg = AplicaRegras() +aplicSinonimos = AplicaSinonimos() +aplicRegras = AplicaRegras() def iniciarTraducao(texto): @@ -36,10 +36,10 @@ def gerarAnalise(sentenca): def analiseMorfologica(sentenca): - proc = reg.simplificar(sentenca) - return sin.sinonimosMorfologico(proc) + proc = aplicRegras.inicializar(sentenca) + return aplicSinonimos.sinonimosMorfologico(proc) def analiseSintatica(sentenca): - analise = sin.sinonimosSintatico(sentenca) + analise = aplicSinonimos.sinonimosSintatico(sentenca) return analise \ No newline at end of file -- libgit2 0.21.2