LeitorDicionarios.py 4.96 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

from os.path import expanduser
import csv

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):
      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)