Commit 571e562c03d2394ffc8ce44bec76ad17805788f7
1 parent
9ba27f83
Exists in
master
and in
1 other branch
Renomeia as classes 'ConversorExtenso', 'LeitorDicionarios' e 'Tradutor'
Showing
8 changed files
with
346 additions
and
346 deletions
Show diff stats
src/new/AplicaRegras.py
@@ -10,10 +10,10 @@ from collections import deque | @@ -10,10 +10,10 @@ from collections import deque | ||
10 | import xml.etree.ElementTree as ET | 10 | import xml.etree.ElementTree as ET |
11 | from os.path import expanduser | 11 | from os.path import expanduser |
12 | import platform | 12 | import platform |
13 | -from LeitorDicionarios import * | 13 | +from LerDicionarios import * |
14 | from Iterator import * | 14 | from Iterator import * |
15 | from StringAux import * | 15 | from StringAux import * |
16 | -from ConversorExtenso import * | 16 | +from ConverteExtenso import * |
17 | 17 | ||
18 | class AplicaRegras(object): | 18 | class AplicaRegras(object): |
19 | 19 | ||
@@ -31,7 +31,7 @@ class AplicaRegras(object): | @@ -31,7 +31,7 @@ class AplicaRegras(object): | ||
31 | else: | 31 | else: |
32 | return ET.parse(expanduser("~")+'/vlibras-translate/data/regras.xml').getroot() | 32 | return ET.parse(expanduser("~")+'/vlibras-translate/data/regras.xml').getroot() |
33 | 33 | ||
34 | - def aplicarRegrasMorpho(self, lista): | 34 | + def aplicarRegrasMorfo(self, lista): |
35 | 35 | ||
36 | self.__especificos = {"advt" : self.verificarAdvTempo, "v" : self.verificarVbInfinitivo, "x" : self.verificarPrepos, "c" : self.verificarSubs2Generos, "a" : self.verificarArtigo, "l" : self.verificarVbLigacao, "i": self.verificarAdvIntensidade, "vbi":"zero", "n":"zero", "abmn":"zero", "adji":"zero", "adjn":"zero", "advi":"zero"} | 36 | self.__especificos = {"advt" : self.verificarAdvTempo, "v" : self.verificarVbInfinitivo, "x" : self.verificarPrepos, "c" : self.verificarSubs2Generos, "a" : self.verificarArtigo, "l" : self.verificarVbLigacao, "i": self.verificarAdvIntensidade, "vbi":"zero", "n":"zero", "abmn":"zero", "adji":"zero", "adjn":"zero", "advi":"zero"} |
37 | self.pularIteracoes = 0 | 37 | self.pularIteracoes = 0 |
src/new/AplicaSinonimos.py
src/new/ConversorExtenso.py
@@ -1,150 +0,0 @@ | @@ -1,150 +0,0 @@ | ||
1 | -#!/usr/bin/python | ||
2 | -# -*- coding: utf-8 -*- | ||
3 | - | ||
4 | -#Autor: Erickson Silva | ||
5 | -#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com> | ||
6 | - | ||
7 | -#LAViD - Laboratório de Aplicações de Vídeo Digital | ||
8 | - | ||
9 | -import sys | ||
10 | -from unicodedata import normalize | ||
11 | -from Iterator import * | ||
12 | - | ||
13 | -num = {"zero":0, "um":1, "dois":2, "tres":3, "quatro":4, "cinco":5, "seis":6, | ||
14 | -"sete":7, "oito":8, "nove":9} | ||
15 | - | ||
16 | -und = {"mil":1000, "milhao":1000000, "bilhao":1000000000, "trilhao":1000000000000} | ||
17 | - | ||
18 | -ext = [{"um":"1", "dois":"2", "tres":"3", "quatro":"4", "cinco":"5", "seis":"6", | ||
19 | -"sete":"7", "oito":"8", "nove":"9", "dez":"10", "onze":"11", "doze":"12", | ||
20 | -"treze":"13", "quatorze":"14", "quinze":"15", "dezesseis":"16", | ||
21 | -"dezessete":"17", "dezoito":"18", "dezenove":"19"}, {"vinte":"2", "trinta":"3", | ||
22 | -"quarenta":"4", "cinquenta":"5", "sessenta":"6", "setenta":"7", "oitenta":"8", | ||
23 | -"noventa":"9"}, {"cento":"1", "cem":"1", "duzentos":"2", "trezentos":"3", | ||
24 | -"quatrocentos":"4", "quinhentos":"5", "seissentos":"6", "setessentos":"7", | ||
25 | -"oitocentos":"8", "novecentos":"9"}] | ||
26 | - | ||
27 | -unds = {"mil":"000", "milhao":"000000","milhoes":"000000", "bilhao":"000000000","bilhoes":"000000000", "trilhao":"000000000000", "trilhoes":"000000000000"} | ||
28 | - | ||
29 | - | ||
30 | - | ||
31 | -def oneDigit(x): | ||
32 | - return ext[0][x] | ||
33 | - | ||
34 | -def twoDigit(x): | ||
35 | - try: | ||
36 | - return ext[1][x[0]]+ext[0][x[1]] | ||
37 | - except: | ||
38 | - return ext[1][x[0]]+"0" | ||
39 | - | ||
40 | -def threeDigit(x): | ||
41 | - return ext[2][x[0]]+ext[1][x[1]]+ext[0][x[2]] | ||
42 | - | ||
43 | -def extenso2(n): | ||
44 | - sn = n.split(",") | ||
45 | - size = len(sn) | ||
46 | - firstWord = sn[0] | ||
47 | - endWord = "" | ||
48 | - numExt = "" | ||
49 | - | ||
50 | - if(unds.has_key(sn[size-1])): | ||
51 | - size -= 1 | ||
52 | - endWord = sn[size] | ||
53 | - del sn[size] | ||
54 | - | ||
55 | - if(ext[0].has_key(firstWord)): | ||
56 | - numExt = oneDigit(firstWord) | ||
57 | - | ||
58 | - elif (ext[1].has_key(firstWord)): | ||
59 | - numExt = twoDigit(sn) | ||
60 | - | ||
61 | - elif (ext[2].has_key(firstWord)): | ||
62 | - if(size == 1): | ||
63 | - numExt = ext[2][firstWord]+"00" | ||
64 | - elif (size == 2): | ||
65 | - if(sn[1] == "dez"): | ||
66 | - numExt = ext[2][firstWord]+oneDigit(sn[1]) | ||
67 | - try: | ||
68 | - numExt = ext[2][firstWord]+"0"+oneDigit(sn[1]) | ||
69 | - except: | ||
70 | - numExt = ext[2][firstWord]+twoDigit([sn[1]]) | ||
71 | - else: | ||
72 | - numExt = threeDigit(sn) | ||
73 | - | ||
74 | - if(endWord != ""): | ||
75 | - numExt = numExt+unds[endWord] | ||
76 | - | ||
77 | - return numExt | ||
78 | - | ||
79 | -def extenso(extenso): | ||
80 | - global newToken, auxToken | ||
81 | - extensoQuebrado = extenso.lower().split(" ") | ||
82 | - nums = [] | ||
83 | - it = Iterator() | ||
84 | - it.load(extensoQuebrado) | ||
85 | - while(it.hasNext()): | ||
86 | - token = simplifica(it.getToken()) | ||
87 | - tokenAnterior = simplifica(it.getToken(-1)) | ||
88 | - if (und.has_key(token)): | ||
89 | - #print "cond1" | ||
90 | - if(it.getCount() == 0): | ||
91 | - #print "cond2" | ||
92 | - nums.append(und[token]) | ||
93 | - else: | ||
94 | - #print "cond3" | ||
95 | - newToken = und[token] * int(nums[-1]) | ||
96 | - nums[-1] = newToken | ||
97 | - else: | ||
98 | - #print "cond4" | ||
99 | - if (num.has_key(token)): | ||
100 | - #print "cond5" | ||
101 | - auxToken = num[token] | ||
102 | - elif (not und.has_key(token)): | ||
103 | - #print "cond6" | ||
104 | - auxToken = extenso2(token) | ||
105 | - | ||
106 | - if((not und.has_key(tokenAnterior)) and it.getCount() > 0): | ||
107 | - #print "cond7" | ||
108 | - newToken = int(auxToken) + int(nums[-1]) | ||
109 | - nums[-1] = newToken | ||
110 | - else: | ||
111 | - #print "cond8" | ||
112 | - nums.append(auxToken) | ||
113 | - | ||
114 | - return soma(nums) | ||
115 | - | ||
116 | -def soma(lista): | ||
117 | - soma = 0 | ||
118 | - for i in lista: | ||
119 | - soma += int(i) | ||
120 | - return soma | ||
121 | - | ||
122 | -def simplifica(txt): | ||
123 | - | ||
124 | - newToken = "" | ||
125 | - try: | ||
126 | - newToken = normalize('NFKD', txt.decode('utf-8')).encode('ASCII','ignore') | ||
127 | - except: | ||
128 | - newToken = normalize('NFKD', txt.decode('iso-8859-1')).encode('ASCII','ignore') | ||
129 | - | ||
130 | - if(newToken[-3:] == "oes"): return newToken[:-3] + "ao" | ||
131 | - return newToken | ||
132 | - | ||
133 | -''' | ||
134 | -if __name__ == '__main__': | ||
135 | - n = sys.argv[1] | ||
136 | - return extenso(n) | ||
137 | - arquivoExts = open('exts', 'r') | ||
138 | - listaExts = arquivoExts.readlines() | ||
139 | - arquivoNums = open('nums', 'r') | ||
140 | - listaNums = arquivoNums.readlines() | ||
141 | - for i in range(0,500): | ||
142 | - n = listaNums[i].replace("\n","") | ||
143 | - e = listaExts[i].replace("\n","") | ||
144 | - numNew = extenso(e) | ||
145 | - if (str(numNew) != n): | ||
146 | - print n + " != " + str(numNew) | ||
147 | - #else: | ||
148 | - # print "OK: " + n + " == " + str(numNew) | ||
149 | -''' | ||
150 | - |
@@ -0,0 +1,150 @@ | @@ -0,0 +1,150 @@ | ||
1 | +#!/usr/bin/python | ||
2 | +# -*- coding: utf-8 -*- | ||
3 | + | ||
4 | +#Autor: Erickson Silva | ||
5 | +#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com> | ||
6 | + | ||
7 | +#LAViD - Laboratório de Aplicações de Vídeo Digital | ||
8 | + | ||
9 | +import sys | ||
10 | +from unicodedata import normalize | ||
11 | +from Iterator import * | ||
12 | + | ||
13 | +num = {"zero":0, "um":1, "dois":2, "tres":3, "quatro":4, "cinco":5, "seis":6, | ||
14 | +"sete":7, "oito":8, "nove":9} | ||
15 | + | ||
16 | +und = {"mil":1000, "milhao":1000000, "bilhao":1000000000, "trilhao":1000000000000} | ||
17 | + | ||
18 | +ext = [{"um":"1", "dois":"2", "tres":"3", "quatro":"4", "cinco":"5", "seis":"6", | ||
19 | +"sete":"7", "oito":"8", "nove":"9", "dez":"10", "onze":"11", "doze":"12", | ||
20 | +"treze":"13", "quatorze":"14", "quinze":"15", "dezesseis":"16", | ||
21 | +"dezessete":"17", "dezoito":"18", "dezenove":"19"}, {"vinte":"2", "trinta":"3", | ||
22 | +"quarenta":"4", "cinquenta":"5", "sessenta":"6", "setenta":"7", "oitenta":"8", | ||
23 | +"noventa":"9"}, {"cento":"1", "cem":"1", "duzentos":"2", "trezentos":"3", | ||
24 | +"quatrocentos":"4", "quinhentos":"5", "seissentos":"6", "setessentos":"7", | ||
25 | +"oitocentos":"8", "novecentos":"9"}] | ||
26 | + | ||
27 | +unds = {"mil":"000", "milhao":"000000","milhoes":"000000", "bilhao":"000000000","bilhoes":"000000000", "trilhao":"000000000000", "trilhoes":"000000000000"} | ||
28 | + | ||
29 | + | ||
30 | + | ||
31 | +def oneDigit(x): | ||
32 | + return ext[0][x] | ||
33 | + | ||
34 | +def twoDigit(x): | ||
35 | + try: | ||
36 | + return ext[1][x[0]]+ext[0][x[1]] | ||
37 | + except: | ||
38 | + return ext[1][x[0]]+"0" | ||
39 | + | ||
40 | +def threeDigit(x): | ||
41 | + return ext[2][x[0]]+ext[1][x[1]]+ext[0][x[2]] | ||
42 | + | ||
43 | +def extenso2(n): | ||
44 | + sn = n.split(",") | ||
45 | + size = len(sn) | ||
46 | + firstWord = sn[0] | ||
47 | + endWord = "" | ||
48 | + numExt = "" | ||
49 | + | ||
50 | + if(unds.has_key(sn[size-1])): | ||
51 | + size -= 1 | ||
52 | + endWord = sn[size] | ||
53 | + del sn[size] | ||
54 | + | ||
55 | + if(ext[0].has_key(firstWord)): | ||
56 | + numExt = oneDigit(firstWord) | ||
57 | + | ||
58 | + elif (ext[1].has_key(firstWord)): | ||
59 | + numExt = twoDigit(sn) | ||
60 | + | ||
61 | + elif (ext[2].has_key(firstWord)): | ||
62 | + if(size == 1): | ||
63 | + numExt = ext[2][firstWord]+"00" | ||
64 | + elif (size == 2): | ||
65 | + if(sn[1] == "dez"): | ||
66 | + numExt = ext[2][firstWord]+oneDigit(sn[1]) | ||
67 | + try: | ||
68 | + numExt = ext[2][firstWord]+"0"+oneDigit(sn[1]) | ||
69 | + except: | ||
70 | + numExt = ext[2][firstWord]+twoDigit([sn[1]]) | ||
71 | + else: | ||
72 | + numExt = threeDigit(sn) | ||
73 | + | ||
74 | + if(endWord != ""): | ||
75 | + numExt = numExt+unds[endWord] | ||
76 | + | ||
77 | + return numExt | ||
78 | + | ||
79 | +def extenso(extenso): | ||
80 | + global newToken, auxToken | ||
81 | + extensoQuebrado = extenso.lower().split(" ") | ||
82 | + nums = [] | ||
83 | + it = Iterator() | ||
84 | + it.load(extensoQuebrado) | ||
85 | + while(it.hasNext()): | ||
86 | + token = simplifica(it.getToken()) | ||
87 | + tokenAnterior = simplifica(it.getToken(-1)) | ||
88 | + if (und.has_key(token)): | ||
89 | + #print "cond1" | ||
90 | + if(it.getCount() == 0): | ||
91 | + #print "cond2" | ||
92 | + nums.append(und[token]) | ||
93 | + else: | ||
94 | + #print "cond3" | ||
95 | + newToken = und[token] * int(nums[-1]) | ||
96 | + nums[-1] = newToken | ||
97 | + else: | ||
98 | + #print "cond4" | ||
99 | + if (num.has_key(token)): | ||
100 | + #print "cond5" | ||
101 | + auxToken = num[token] | ||
102 | + elif (not und.has_key(token)): | ||
103 | + #print "cond6" | ||
104 | + auxToken = extenso2(token) | ||
105 | + | ||
106 | + if((not und.has_key(tokenAnterior)) and it.getCount() > 0): | ||
107 | + #print "cond7" | ||
108 | + newToken = int(auxToken) + int(nums[-1]) | ||
109 | + nums[-1] = newToken | ||
110 | + else: | ||
111 | + #print "cond8" | ||
112 | + nums.append(auxToken) | ||
113 | + | ||
114 | + return soma(nums) | ||
115 | + | ||
116 | +def soma(lista): | ||
117 | + soma = 0 | ||
118 | + for i in lista: | ||
119 | + soma += int(i) | ||
120 | + return soma | ||
121 | + | ||
122 | +def simplifica(txt): | ||
123 | + | ||
124 | + newToken = "" | ||
125 | + try: | ||
126 | + newToken = normalize('NFKD', txt.decode('utf-8')).encode('ASCII','ignore') | ||
127 | + except: | ||
128 | + newToken = normalize('NFKD', txt.decode('iso-8859-1')).encode('ASCII','ignore') | ||
129 | + | ||
130 | + if(newToken[-3:] == "oes"): return newToken[:-3] + "ao" | ||
131 | + return newToken | ||
132 | + | ||
133 | +''' | ||
134 | +if __name__ == '__main__': | ||
135 | + n = sys.argv[1] | ||
136 | + return extenso(n) | ||
137 | + arquivoExts = open('exts', 'r') | ||
138 | + listaExts = arquivoExts.readlines() | ||
139 | + arquivoNums = open('nums', 'r') | ||
140 | + listaNums = arquivoNums.readlines() | ||
141 | + for i in range(0,500): | ||
142 | + n = listaNums[i].replace("\n","") | ||
143 | + e = listaExts[i].replace("\n","") | ||
144 | + numNew = extenso(e) | ||
145 | + if (str(numNew) != n): | ||
146 | + print n + " != " + str(numNew) | ||
147 | + #else: | ||
148 | + # print "OK: " + n + " == " + str(numNew) | ||
149 | +''' | ||
150 | + |
src/new/LeitorDicionarios.py
@@ -1,146 +0,0 @@ | @@ -1,146 +0,0 @@ | ||
1 | -#!/usr/bin/python | ||
2 | -# -*- coding: utf-8 -*- | ||
3 | - | ||
4 | -#Autor: Erickson Silva | ||
5 | -#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com> | ||
6 | - | ||
7 | -#LAViD - Laboratório de Aplicações de Vídeo Digital | ||
8 | - | ||
9 | -from os.path import expanduser | ||
10 | -import csv, platform | ||
11 | - | ||
12 | -class LeitorDicionarios(object): | ||
13 | - #_iInstance = None | ||
14 | - | ||
15 | - #class Singleton: | ||
16 | - # def __init__(self): | ||
17 | - # self.LeitorDicionarios = None | ||
18 | - | ||
19 | - #def __init__( self ): | ||
20 | - # if LeitorDicionarios._iInstance is None: | ||
21 | - # LeitorDicionarios._iInstance = LeitorDicionarios.Singleton() | ||
22 | - | ||
23 | - # self._EventHandler_instance = LeitorDicionarios._iInstance | ||
24 | - | ||
25 | - #def __getattr__(self, aAttr): | ||
26 | - # return getattr(self._iInstance, aAttr) | ||
27 | - | ||
28 | - #def __setattr__(self, aAttr, aValue): | ||
29 | - # return setattr(self._iInstance, aAttr, aValue) | ||
30 | - | ||
31 | - # Define e inicializa os atributos | ||
32 | - def __init__(self): | ||
33 | - | ||
34 | - so = platform.system() | ||
35 | - if so == 'Windows': | ||
36 | - self.__path = expanduser("~") + "\\vlibras-translate\data\\" | ||
37 | - else: | ||
38 | - self.__path = expanduser("~") + "/vlibras-translate/data/" | ||
39 | - | ||
40 | - self.__dicInf = {} | ||
41 | - self.__dicSin = {} | ||
42 | - self.__dicWords = {} | ||
43 | - self.__dic2Gen = {} | ||
44 | - self.__dicTemVerbs = {} | ||
45 | - self.__fileDic = '' | ||
46 | - self.carregarVerbosInfinitivos() | ||
47 | - self.carregarSinonimos() | ||
48 | - self.carregarPalavrasIgnoradas() | ||
49 | - self.carregarSubst2Generos() | ||
50 | - self.carregarTemposVerbais() | ||
51 | - | ||
52 | - # Abre o self.__fileDic que contem os verbos no infinitivo e preenche o dicionario com os mesmos | ||
53 | - def carregarVerbosInfinitivos(self): | ||
54 | - try: | ||
55 | - self.__fileDic = csv.reader(open(self.__path+"dicPortGlosa.csv"), delimiter=";") | ||
56 | - except IOError, (errno, strerror): | ||
57 | - print "I/O error(%s): %s" % (errno, strerror) | ||
58 | - print "carregarVerbosInfinitivos" | ||
59 | - | ||
60 | - for row in self.__fileDic: | ||
61 | - if row[1] != "": | ||
62 | - try: | ||
63 | - self.__dicInf[row[0].decode("utf-8")] = row[1].decode("utf-8") | ||
64 | - except UnicodeDecodeError: | ||
65 | - self.__dicInf[row[0].decode('iso8859-1').encode('utf-8')] = row[1].decode('iso8859-1').encode('utf-8') | ||
66 | - | ||
67 | - # Abre o self.__fileDic que contem os sinonimos e preenche o dicionario com os mesmos | ||
68 | - def carregarSinonimos(self): | ||
69 | - try: | ||
70 | - self.__fileDic = csv.reader(open(self.__path+"portuguesGlosa.csv"), delimiter=";") | ||
71 | - except IOError, (errno, strerror): | ||
72 | - print "I/O error(%s): %s" % (errno, strerror) | ||
73 | - print "carregarSinonimos" | ||
74 | - | ||
75 | - for row in self.__fileDic: | ||
76 | - if row[1] != "": | ||
77 | - self.__dicSin[row[0].decode("utf-8")] = row[1].decode("utf-8") | ||
78 | - | ||
79 | - | ||
80 | - # Abre o self.__fileDic que contem os tempos verbais | ||
81 | - def carregarTemposVerbais(self): | ||
82 | - try: | ||
83 | - self.__fileDic = csv.reader(open(self.__path+"temposVerbais.csv"), delimiter=";") | ||
84 | - except IOError, (errno, strerror): | ||
85 | - print "I/O error(%s): %s" % (errno, strerror) | ||
86 | - print "carregarTemposVerbais" | ||
87 | - | ||
88 | - for row in self.__fileDic: | ||
89 | - self.__dicTemVerbs[row[0].decode("utf-8")] = row[0].decode("utf-8") | ||
90 | - | ||
91 | - # 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 | ||
92 | - def carregarPalavrasIgnoradas(self): | ||
93 | - try: | ||
94 | - self.__fileDic = csv.reader(open(self.__path+"hWordsRemove.csv"), delimiter=";") | ||
95 | - except IOError, (errno, strerror): | ||
96 | - print "I/O error(%s): %s" % (errno, strerror) | ||
97 | - print "carregarPalavrasIgnoradas" | ||
98 | - | ||
99 | - for row in self.__fileDic: | ||
100 | - self.__dicWords[row[0].decode("utf-8")] = row[0].decode("utf-8") | ||
101 | - | ||
102 | - # Abre o self.__fileDic que contem os substantivos que sao comuns dos 2 generos e preenche o dicionario com os mesmos | ||
103 | - def carregarSubst2Generos(self): | ||
104 | - try: | ||
105 | - self.__fileDic = csv.reader(open(self.__path+"subs2Generos.csv"), delimiter=";") | ||
106 | - except IOError, (errno, strerror): | ||
107 | - print "I/O error(%s): %s" % (errno, strerror) | ||
108 | - print "carregarSubst2Generos" | ||
109 | - | ||
110 | - for row in self.__fileDic: | ||
111 | - self.__dic2Gen[row[0].decode("utf-8")] = row[0].decode("utf-8") | ||
112 | - | ||
113 | - # Retorna o dicionario dos verbos no infinitivo | ||
114 | - def getVerboInfinitivo(self, token): | ||
115 | - return self.__dicInf[token] | ||
116 | - | ||
117 | - # Retorna o dicionario dos sinonimos | ||
118 | - def getSinonimo(self, token): | ||
119 | - return self.__dicSin[token] | ||
120 | - | ||
121 | - # Retorna o dicionario dos artigos e preposicoes a serem removidos pelo simplificador | ||
122 | - def getPalavraIgnorada(self, token): | ||
123 | - return self.__dicWords[token] | ||
124 | - | ||
125 | - # Retorna o dicionario dos substantivos a serem analisados pelo simplificador | ||
126 | - def getSubst2Generos(self, token): | ||
127 | - return self.__dic2Gen[token] | ||
128 | - | ||
129 | - # Retorna o dicionario dos tempos verbais | ||
130 | - def getTempoVerbal(self, token): | ||
131 | - return self.__dicTemVerbs[token] | ||
132 | - | ||
133 | - def hasVerboInfinitivo(self, token): | ||
134 | - return self.__dicInf.has_key(token) | ||
135 | - | ||
136 | - def hasSinonimo(self, token): | ||
137 | - return self.__dicSin.has_key(token) | ||
138 | - | ||
139 | - def hasPalavraIgnorada(self, token): | ||
140 | - return self.__dicWords.has_key(token) | ||
141 | - | ||
142 | - def hasSubst2Genero(self, token): | ||
143 | - return self.__dic2Gen.has_key(token) | ||
144 | - | ||
145 | - def hasTempoVerbal(self, token): | ||
146 | - return self.__dicTemVerbs.has_key(token) |
@@ -0,0 +1,146 @@ | @@ -0,0 +1,146 @@ | ||
1 | +#!/usr/bin/python | ||
2 | +# -*- coding: utf-8 -*- | ||
3 | + | ||
4 | +#Autor: Erickson Silva | ||
5 | +#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com> | ||
6 | + | ||
7 | +#LAViD - Laboratório de Aplicações de Vídeo Digital | ||
8 | + | ||
9 | +from os.path import expanduser | ||
10 | +import csv, platform | ||
11 | + | ||
12 | +class LeitorDicionarios(object): | ||
13 | + #_iInstance = None | ||
14 | + | ||
15 | + #class Singleton: | ||
16 | + # def __init__(self): | ||
17 | + # self.LeitorDicionarios = None | ||
18 | + | ||
19 | + #def __init__( self ): | ||
20 | + # if LeitorDicionarios._iInstance is None: | ||
21 | + # LeitorDicionarios._iInstance = LeitorDicionarios.Singleton() | ||
22 | + | ||
23 | + # self._EventHandler_instance = LeitorDicionarios._iInstance | ||
24 | + | ||
25 | + #def __getattr__(self, aAttr): | ||
26 | + # return getattr(self._iInstance, aAttr) | ||
27 | + | ||
28 | + #def __setattr__(self, aAttr, aValue): | ||
29 | + # return setattr(self._iInstance, aAttr, aValue) | ||
30 | + | ||
31 | + # Define e inicializa os atributos | ||
32 | + def __init__(self): | ||
33 | + | ||
34 | + so = platform.system() | ||
35 | + if so == 'Windows': | ||
36 | + self.__path = expanduser("~") + "\\vlibras-translate\data\\" | ||
37 | + else: | ||
38 | + self.__path = expanduser("~") + "/vlibras-translate/data/" | ||
39 | + | ||
40 | + self.__dicInf = {} | ||
41 | + self.__dicSin = {} | ||
42 | + self.__dicWords = {} | ||
43 | + self.__dic2Gen = {} | ||
44 | + self.__dicTemVerbs = {} | ||
45 | + self.__fileDic = '' | ||
46 | + self.carregarVerbosInfinitivos() | ||
47 | + self.carregarSinonimos() | ||
48 | + self.carregarPalavrasIgnoradas() | ||
49 | + self.carregarSubst2Generos() | ||
50 | + self.carregarTemposVerbais() | ||
51 | + | ||
52 | + # Abre o self.__fileDic que contem os verbos no infinitivo e preenche o dicionario com os mesmos | ||
53 | + def carregarVerbosInfinitivos(self): | ||
54 | + try: | ||
55 | + self.__fileDic = csv.reader(open(self.__path+"dicPortGlosa.csv"), delimiter=";") | ||
56 | + except IOError, (errno, strerror): | ||
57 | + print "I/O error(%s): %s" % (errno, strerror) | ||
58 | + print "carregarVerbosInfinitivos" | ||
59 | + | ||
60 | + for row in self.__fileDic: | ||
61 | + if row[1] != "": | ||
62 | + try: | ||
63 | + self.__dicInf[row[0].decode("utf-8")] = row[1].decode("utf-8") | ||
64 | + except UnicodeDecodeError: | ||
65 | + self.__dicInf[row[0].decode('iso8859-1').encode('utf-8')] = row[1].decode('iso8859-1').encode('utf-8') | ||
66 | + | ||
67 | + # Abre o self.__fileDic que contem os sinonimos e preenche o dicionario com os mesmos | ||
68 | + def carregarSinonimos(self): | ||
69 | + try: | ||
70 | + self.__fileDic = csv.reader(open(self.__path+"portuguesGlosa.csv"), delimiter=";") | ||
71 | + except IOError, (errno, strerror): | ||
72 | + print "I/O error(%s): %s" % (errno, strerror) | ||
73 | + print "carregarSinonimos" | ||
74 | + | ||
75 | + for row in self.__fileDic: | ||
76 | + if row[1] != "": | ||
77 | + self.__dicSin[row[0].decode("utf-8")] = row[1].decode("utf-8") | ||
78 | + | ||
79 | + | ||
80 | + # Abre o self.__fileDic que contem os tempos verbais | ||
81 | + def carregarTemposVerbais(self): | ||
82 | + try: | ||
83 | + self.__fileDic = csv.reader(open(self.__path+"temposVerbais.csv"), delimiter=";") | ||
84 | + except IOError, (errno, strerror): | ||
85 | + print "I/O error(%s): %s" % (errno, strerror) | ||
86 | + print "carregarTemposVerbais" | ||
87 | + | ||
88 | + for row in self.__fileDic: | ||
89 | + self.__dicTemVerbs[row[0].decode("utf-8")] = row[0].decode("utf-8") | ||
90 | + | ||
91 | + # 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 | ||
92 | + def carregarPalavrasIgnoradas(self): | ||
93 | + try: | ||
94 | + self.__fileDic = csv.reader(open(self.__path+"hWordsRemove.csv"), delimiter=";") | ||
95 | + except IOError, (errno, strerror): | ||
96 | + print "I/O error(%s): %s" % (errno, strerror) | ||
97 | + print "carregarPalavrasIgnoradas" | ||
98 | + | ||
99 | + for row in self.__fileDic: | ||
100 | + self.__dicWords[row[0].decode("utf-8")] = row[0].decode("utf-8") | ||
101 | + | ||
102 | + # Abre o self.__fileDic que contem os substantivos que sao comuns dos 2 generos e preenche o dicionario com os mesmos | ||
103 | + def carregarSubst2Generos(self): | ||
104 | + try: | ||
105 | + self.__fileDic = csv.reader(open(self.__path+"subs2Generos.csv"), delimiter=";") | ||
106 | + except IOError, (errno, strerror): | ||
107 | + print "I/O error(%s): %s" % (errno, strerror) | ||
108 | + print "carregarSubst2Generos" | ||
109 | + | ||
110 | + for row in self.__fileDic: | ||
111 | + self.__dic2Gen[row[0].decode("utf-8")] = row[0].decode("utf-8") | ||
112 | + | ||
113 | + # Retorna o dicionario dos verbos no infinitivo | ||
114 | + def getVerboInfinitivo(self, token): | ||
115 | + return self.__dicInf[token] | ||
116 | + | ||
117 | + # Retorna o dicionario dos sinonimos | ||
118 | + def getSinonimo(self, token): | ||
119 | + return self.__dicSin[token] | ||
120 | + | ||
121 | + # Retorna o dicionario dos artigos e preposicoes a serem removidos pelo simplificador | ||
122 | + def getPalavraIgnorada(self, token): | ||
123 | + return self.__dicWords[token] | ||
124 | + | ||
125 | + # Retorna o dicionario dos substantivos a serem analisados pelo simplificador | ||
126 | + def getSubst2Generos(self, token): | ||
127 | + return self.__dic2Gen[token] | ||
128 | + | ||
129 | + # Retorna o dicionario dos tempos verbais | ||
130 | + def getTempoVerbal(self, token): | ||
131 | + return self.__dicTemVerbs[token] | ||
132 | + | ||
133 | + def hasVerboInfinitivo(self, token): | ||
134 | + return self.__dicInf.has_key(token) | ||
135 | + | ||
136 | + def hasSinonimo(self, token): | ||
137 | + return self.__dicSin.has_key(token) | ||
138 | + | ||
139 | + def hasPalavraIgnorada(self, token): | ||
140 | + return self.__dicWords.has_key(token) | ||
141 | + | ||
142 | + def hasSubst2Genero(self, token): | ||
143 | + return self.__dic2Gen.has_key(token) | ||
144 | + | ||
145 | + def hasTempoVerbal(self, token): | ||
146 | + return self.__dicTemVerbs.has_key(token) |
src/new/Tradutor.py
@@ -1,46 +0,0 @@ | @@ -1,46 +0,0 @@ | ||
1 | -#!/usr/bin/python | ||
2 | -# -*- coding: utf-8 -*- | ||
3 | - | ||
4 | -#Autor: Erickson Silva | ||
5 | -#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com> | ||
6 | - | ||
7 | -#LAViD - Laboratório de Aplicações de Vídeo Digital | ||
8 | - | ||
9 | -import alexp | ||
10 | -from AplicaSinonimos import * | ||
11 | -from AplicaRegras import * | ||
12 | - | ||
13 | -aplicaSinonimos = AplicaSinonimos() | ||
14 | -aplicaRegras = AplicaRegras() | ||
15 | - | ||
16 | - | ||
17 | -def iniciarTraducao(texto): | ||
18 | - textoDividido = texto.split(".") | ||
19 | - for w in textoDividido: | ||
20 | - if len(w) > 0 and w != " ": | ||
21 | - return gerarAnalise(w) | ||
22 | - | ||
23 | - | ||
24 | -def gerarAnalise(sentenca): | ||
25 | - '''tokens = alexp.toqueniza(sentenca) | ||
26 | - etiquetadas = alexp.etiquetaSentenca(tokens) | ||
27 | - analiseMorf = analiseMorfologica(etiquetadas) | ||
28 | - print analiseMorf''' | ||
29 | - | ||
30 | - sintatica = alexp.run(sentenca) | ||
31 | - morfologica = alexp.getAnaliseMorfologica() | ||
32 | - | ||
33 | - if (isinstance(sintatica,type(None))): | ||
34 | - return analiseMorfologica(morfologica) | ||
35 | - else: | ||
36 | - print analiseSintatica(sintatica, morfologica) | ||
37 | - | ||
38 | - | ||
39 | -def analiseMorfologica(listaMorfologica): | ||
40 | - proc = aplicaRegras.aplicarRegrasMorfo(listaMorfologica) | ||
41 | - return aplicaSinonimos.sinonimosMorfologico(proc) | ||
42 | - | ||
43 | - | ||
44 | -def analiseSintatica(arvoreSintatica, listaMorfologica): | ||
45 | - proc = aplicaRegras.aplicarRegrasSint(arvoreSintatica, listaMorfologica) | ||
46 | - return aplicaSinonimos.sinonimosSintatico(proc) | ||
47 | \ No newline at end of file | 0 | \ No newline at end of file |
@@ -0,0 +1,46 @@ | @@ -0,0 +1,46 @@ | ||
1 | +#!/usr/bin/python | ||
2 | +# -*- coding: utf-8 -*- | ||
3 | + | ||
4 | +#Autor: Erickson Silva | ||
5 | +#Email: <erickson.silva@lavid.ufpb.br> <ericksonsilva@live.com> | ||
6 | + | ||
7 | +#LAViD - Laboratório de Aplicações de Vídeo Digital | ||
8 | + | ||
9 | +import alexp | ||
10 | +from AplicaSinonimos import * | ||
11 | +from AplicaRegras import * | ||
12 | + | ||
13 | +aplicaSinonimos = AplicaSinonimos() | ||
14 | +aplicaRegras = AplicaRegras() | ||
15 | + | ||
16 | + | ||
17 | +def iniciarTraducao(texto): | ||
18 | + textoDividido = texto.split(".") | ||
19 | + for w in textoDividido: | ||
20 | + if len(w) > 0 and w != " ": | ||
21 | + return gerarAnalise(w) | ||
22 | + | ||
23 | + | ||
24 | +def gerarAnalise(sentenca): | ||
25 | + '''tokens = alexp.toqueniza(sentenca) | ||
26 | + etiquetadas = alexp.etiquetaSentenca(tokens) | ||
27 | + analiseMorf = analiseMorfologica(etiquetadas) | ||
28 | + print analiseMorf''' | ||
29 | + | ||
30 | + sintatica = alexp.run(sentenca) | ||
31 | + morfologica = alexp.getAnaliseMorfologica() | ||
32 | + | ||
33 | + if (isinstance(sintatica,type(None))): | ||
34 | + return analiseMorfologica(morfologica) | ||
35 | + else: | ||
36 | + print analiseSintatica(sintatica, morfologica) | ||
37 | + | ||
38 | + | ||
39 | +def analiseMorfologica(listaMorfologica): | ||
40 | + proc = aplicaRegras.aplicarRegrasMorfo(listaMorfologica) | ||
41 | + return aplicaSinonimos.sinonimosMorfologico(proc) | ||
42 | + | ||
43 | + | ||
44 | +def analiseSintatica(arvoreSintatica, listaMorfologica): | ||
45 | + proc = aplicaRegras.aplicarRegrasSint(arvoreSintatica, listaMorfologica) | ||
46 | + return aplicaSinonimos.sinonimosSintatico(proc) | ||
0 | \ No newline at end of file | 47 | \ No newline at end of file |