#!/usr/bin/python # -*- coding: utf-8 -*- #Autor: Erickson Silva #Email: #LAViD - Laboratório de Aplicações de Vídeo Digital from os.path import expanduser import csv, platform class LeitorDicionarios(object): #_iInstance = None #class Singleton: # def __init__(self): # self.LeitorDicionarios = None #def __init__( self ): # if LeitorDicionarios._iInstance is None: # LeitorDicionarios._iInstance = LeitorDicionarios.Singleton() # self._EventHandler_instance = LeitorDicionarios._iInstance #def __getattr__(self, aAttr): # return getattr(self._iInstance, aAttr) #def __setattr__(self, aAttr, aValue): # return setattr(self._iInstance, aAttr, aValue) # Define e inicializa os atributos def __init__(self): so = platform.system() if so == 'Windows': self.__path = expanduser("~") + "\\vlibras-translate\data\\" else: self.__path = expanduser("~") + "/vlibras-translate/data/" self.__dicInf = {} self.__dicSin = {} self.__dicWords = {} self.__dic2Gen = {} self.__dicTemVerbs = {} self.__fileDic = '' self.carregarVerbosInfinitivos() self.carregarSinonimos() self.carregarPalavrasIgnoradas() self.carregarSubst2Generos() self.carregarTemposVerbais() # Abre o self.__fileDic que contem os verbos no infinitivo e preenche o dicionario com os mesmos def carregarVerbosInfinitivos(self): try: self.__fileDic = csv.reader(open(self.__path+"dicPortGlosa.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregarVerbosInfinitivos" for row in self.__fileDic: if row[1] != "": try: self.__dicInf[row[0].decode("utf-8")] = row[1].decode("utf-8") except UnicodeDecodeError: self.__dicInf[row[0].decode('iso8859-1').encode('utf-8')] = row[1].decode('iso8859-1').encode('utf-8') # Abre o self.__fileDic que contem os sinonimos e preenche o dicionario com os mesmos def carregarSinonimos(self): try: self.__fileDic = csv.reader(open(self.__path+"portuguesGlosa.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregarSinonimos" for row in self.__fileDic: if row[1] != "": self.__dicSin[row[0].decode("utf-8")] = row[1].decode("utf-8") # Abre o self.__fileDic que contem os tempos verbais def carregarTemposVerbais(self): try: self.__fileDic = csv.reader(open(self.__path+"temposVerbais.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregarTemposVerbais" for row in self.__fileDic: self.__dicTemVerbs[row[0].decode("utf-8")] = row[0].decode("utf-8") # Abre o self.__fileDic que contem os artigos e preposicoes de acordo com o modelo de idioma passado na chamada e preenche o dicionario com os mesmos def carregarPalavrasIgnoradas(self): try: self.__fileDic = csv.reader(open(self.__path+"hWordsRemove.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregarPalavrasIgnoradas" for row in self.__fileDic: self.__dicWords[row[0].decode("utf-8")] = row[0].decode("utf-8") # Abre o self.__fileDic que contem os substantivos que sao comuns dos 2 generos e preenche o dicionario com os mesmos def carregarSubst2Generos(self): try: self.__fileDic = csv.reader(open(self.__path+"subs2Generos.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregarSubst2Generos" for row in self.__fileDic: self.__dic2Gen[row[0].decode("utf-8")] = row[0].decode("utf-8") # Retorna o dicionario dos verbos no infinitivo def getVerboInfinitivo(self, token): return self.__dicInf[token] # Retorna o dicionario dos sinonimos def getSinonimo(self, token): return self.__dicSin[token] # Retorna o dicionario dos artigos e preposicoes a serem removidos pelo simplificador def getPalavraIgnorada(self, token): return self.__dicWords[token] # Retorna o dicionario dos substantivos a serem analisados pelo simplificador def getSubst2Generos(self, token): return self.__dic2Gen[token] # Retorna o dicionario dos tempos verbais def getTempoVerbal(self, token): return self.__dicTemVerbs[token] def hasVerboInfinitivo(self, token): return self.__dicInf.has_key(token) def hasSinonimo(self, token): return self.__dicSin.has_key(token) def hasPalavraIgnorada(self, token): return self.__dicWords.has_key(token) def hasSubst2Genero(self, token): return self.__dic2Gen.has_key(token) def hasTempoVerbal(self, token): return self.__dicTemVerbs.has_key(token)