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 | import xml.etree.ElementTree as ET |
11 | 11 | from os.path import expanduser |
12 | 12 | import platform |
13 | -from LeitorDicionarios import * | |
13 | +from LerDicionarios import * | |
14 | 14 | from Iterator import * |
15 | 15 | from StringAux import * |
16 | -from ConversorExtenso import * | |
16 | +from ConverteExtenso import * | |
17 | 17 | |
18 | 18 | class AplicaRegras(object): |
19 | 19 | |
... | ... | @@ -31,7 +31,7 @@ class AplicaRegras(object): |
31 | 31 | else: |
32 | 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 | 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 | 37 | self.pularIteracoes = 0 | ... | ... |
src/new/AplicaSinonimos.py
src/new/ConversorExtenso.py
... | ... | @@ -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 @@ |
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 | -#!/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 @@ |
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 | -#!/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 | 0 | \ No newline at end of file |
... | ... | @@ -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 | 47 | \ No newline at end of file | ... | ... |