#!/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 from os import environ import csv import platform class Singleton(object): def __new__(cls, *args, **kwargs): if '_inst' not in vars(cls): cls._inst = object.__new__(cls, *args, **kwargs) return cls._inst class LerDicionarios(Singleton): def __init__(self): self.path = self.get_path() self.set_exc_plural = [] self.dic_adv_intensidade = {} self.set_adv_tempo = [] self.set_art = [] self.set_prep = [] self.dic_sin = {} self.set_sb_2_gen = [] self.dic_vb_infinitivo = {} self.set_vb_ligacao = [] self.dic_vb_muda_negacao = [] self.file = '' self.carregar_dicionarios() def get_path(self): if platform.system() == 'Windows': return environ.get("HOMEDRIVE") + "\\vlibras-libs\\vlibras-translate\data\\" return expanduser("~") + "/vlibras-translate/data/" def carregar_dicionarios(self): self.carregar_excecoes_plural() self.carregar_adverbios_intensidade() self.carregar_adverbios_tempo() self.carregar_artigos() self.carregar_preposicoes() self.carregar_sinonimos() self.carregar_subs_2_generos() self.carregar_verbos_infinitivo() self.carregar_verbos_ligacao() self.carregar_verbos_muda_negacao def carregar_excecoes_plural(self): try: self.file = csv.reader(open(self.path+"excecoesPlural.csv")) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_excecoes_plural" rows = [] for row in self.file: rows.append(row[0].decode("utf-8")) self.set_exc_plural = set(rows) def carregar_adverbios_intensidade(self): try: self.file = csv.reader(open(self.path+"adverbiosIntensidade.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_adverbios_intensidade" for row in self.file: if row[1] != "": self.dic_adv_intensidade[row[0].decode("utf-8")] = row[1].decode("utf-8") def carregar_adverbios_tempo(self): try: self.file = csv.reader(open(self.path+"adverbiosTempo.csv")) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_adverbios_tempo" rows = [] for row in self.file: rows.append(row[0].decode("utf-8")) self.set_adv_tempo = set(rows) def carregar_artigos(self): try: self.file = csv.reader(open(self.path+"artigos.csv")) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_artigos" rows = [] for row in self.file: rows.append(row[0].decode("utf-8")) self.set_art = set(rows) def carregar_preposicoes(self): try: self.file = csv.reader(open(self.path+"preposicoes.csv")) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_preposicoes" rows = [] for row in self.file: rows.append(row[0].decode("utf-8")) self.set_prep = set(rows) def carregar_sinonimos(self): try: self.file = csv.reader(open(self.path+"sinonimos.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_sinonimos" for row in self.file: if row[1] != "": try: self.dic_sin[row[0].decode("utf-8")] = row[1].decode("utf-8") except UnicodeDecodeError: self.dic_sin[row[0].decode('iso8859-1').encode('utf-8').decode('utf-8')] = row[1].decode('iso8859-1').encode('utf-8').decode('utf-8') def carregar_subs_2_generos(self): try: self.file = csv.reader(open(self.path+"subs2Generos.csv")) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_subs_2_generos" rows = [] for row in self.file: rows.append(row[0].decode('iso8859-1').encode('utf-8').decode('utf-8')) self.set_sb_2_gen = set(rows) def carregar_verbos_infinitivo(self): try: self.file = csv.reader(open(self.path+"verbosInfinitivo.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_verbos_infinitivo" for row in self.file: if row[1] != "": try: self.dic_vb_infinitivo[row[0].decode("utf-8")] = row[1].decode("utf-8") except UnicodeDecodeError: self.dic_vb_infinitivo[row[0].decode('iso8859-1').encode('utf-8').decode('utf-8')] = row[1].decode('iso8859-1').encode('utf-8').decode('utf-8') def carregar_verbos_ligacao(self): try: self.file = csv.reader(open(self.path+"verbosLigacao.csv")) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_verbos_ligacao" rows = [] for row in self.file: rows.append(row[0].decode("utf-8")) self.set_vb_ligacao = set(rows) def carregar_verbos_muda_negacao(self): try: self.file = csv.reader(open(self.path+"verbosMudaNegacao.csv"), delimiter=";") except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) print "carregar_verbos_muda_negacao" for row in self.file: if row[1] != "": self.dic_vb_muda_negacao[row[0].decode("utf-8")] = row[1].decode("utf-8") def has_excecao_plural(self, token): return token not in self.set_exc_plural def has_adverbio_intensidade(self, token): return self.dic_adv_intensidade.has_key(token) def has_adverbio_tempo(self, token): return token in self.set_adv_tempo def has_artigo(self, token): return token in self.set_art def has_preposicao(self, token): return token in self.set_prep def has_sinonimo(self, token): return self.dic_sin.has_key(token) def has_subst_2_generos (self, token): return token in self.set_sb_2_gen def has_verbo_infinitivo(self, token): return self.dic_vb_infinitivo.has_key(token) def has_verbo_ligacao(self, token): return token in self.set_vb_ligacao def has_verbo_muda_negacao(self, token): return self.dic_vb_muda_negacao.has_key(token) def get_adverbio_intensidade(self, token): return self.dic_adv_intensidade[token] def get_sinonimo(self, token): return self.dic_sin[token] def get_verbo_infinitivo(self, token): return self.dic_vb_infinitivo[token] def get_verbo_muda_negacao(self, token): return self.dic_vb_muda_negacao[token]