Commit c31c3e4c96afc684c80f7ad41d5ebb3ca2a59b42

Authored by Erickson Silva
1 parent ba6d0420
Exists in master and in 1 other branch devel

Atualiza compatibilidade para a versão 3 do NLTK

src/AplicaSinonimos
... ... @@ -1,47 +0,0 @@
1   -#!/usr/bin/python
2   -# -*- coding: utf-8 -*-
3   -
4   -#Autor: Erickson Silva
5   -#Email 1: <erickson.silva@lavid.ufpb.br>
6   -#Email 2: <ericksonsilva@live.com>
7   -
8   -#LAViD - Laboratório de Aplicações de Vídeo Digital
9   -
10   -import os, csv, sys, LeitorDicionarios
11   -from nltk.tree import *
12   -
13   -
14   -class AplicaSinonimos(object):
15   -
16   - # Define e inicializa os atributos
17   - def __init__(self):
18   - self.__dicionarios = LeitorDicionarios()
19   -
20   - def sinonimosMorfologico(self, texto):
21   - lista = texto
22   - for i, elem in enumerate(lista):
23   - token = self.verificaPalavra(elem[0])
24   - texto[i][0] = token
25   - return lista
26   -
27   - def sinonimosSintatico(self, texto):
28   - folhas = nltk.tree.Tree.leaves(*texto)
29   - dic = dicionarioSinonimoFolhas(folhas)
30   - stringTree = str(texto)
31   - for t in folhas:
32   - stringTree.replace(t, dic[t])
33   -
34   - return Tree.fromstring(stringTree, brackets='[]')
35   -
36   - def dicionarioSinonimoFolhas(folhas):
37   - dic = {}
38   - for f in folhas:
39   - token = verificaPalavra(f)
40   - dic[f] = token
41   - return dic
42   -
43   - def verificaPalavra(self, token):
44   - if self.__dicionarios.hasSinonimo(token):
45   - return self.__dicionarios.getSinonimo(token)
46   - return token
47   -
src/AplicaSinonimos.py 0 → 100644
... ... @@ -0,0 +1,49 @@
  1 +#!/usr/bin/python
  2 +# -*- coding: utf-8 -*-
  3 +
  4 +#Autor: Erickson Silva
  5 +#Email 1: <erickson.silva@lavid.ufpb.br>
  6 +#Email 2: <ericksonsilva@live.com>
  7 +
  8 +#LAViD - Laboratório de Aplicações de Vídeo Digital
  9 +
  10 +import os, csv, sys
  11 +from nltk.tree import *
  12 +from LeitorDicionarios import *
  13 +
  14 +class AplicaSinonimos(object):
  15 +
  16 + # Define e inicializa os atributos
  17 + def __init__(self):
  18 + self.__dicionarios = LeitorDicionarios()
  19 +
  20 + def sinonimosMorfologico(self, texto):
  21 + lista = texto
  22 + for i, elem in enumerate(lista):
  23 + token = self.verificaPalavra(elem[0])
  24 + listmp = list(elem)
  25 + listmp[0] = token
  26 + lista[i] = listmp
  27 + return lista
  28 +
  29 +
  30 + def dicionarioSinonimoFolhas(self, folhas):
  31 + dic = {}
  32 + for f in folhas:
  33 + token = self.verificaPalavra(f)
  34 + dic[f] = token
  35 + return dic
  36 +
  37 + def sinonimosSintatico(self, texto):
  38 + folhas = Tree.leaves(texto)
  39 + dic = self.dicionarioSinonimoFolhas(folhas)
  40 + stringTree = str(texto)
  41 + for t in folhas:
  42 + stringTree.replace(t, dic[t])
  43 + tree = Tree.fromstring(stringTree, brackets='()')
  44 + return tree
  45 +
  46 + def verificaPalavra(self, token):
  47 + if self.__dicionarios.hasSinonimo(token):
  48 + return self.__dicionarios.getSinonimo(token)
  49 + return token
0 50 \ No newline at end of file
... ...
src/LeitorDicionarios.py
... ... @@ -26,77 +26,78 @@ class LeitorDicionarios(object):
26 26  
27 27 # Define e inicializa os atributos
28 28 def __init__(self):
29   - self.__path = "vlibras_user/vlibras-core/data/"
  29 + self.__path = "/home/erickson/vlibras-translate/data/"
30 30 self.__dicInf = {}
31 31 self.__dicSin = {}
32 32 self.__dicWords = {}
33 33 self.__dic2Gen = {}
34   - self.__dicTemVerbs = {}
  34 + self.__dicTemVerbs = {}
  35 + self.__fileDic = ''
35 36 self.carregarVerbosInfinitivos()
36 37 self.carregarSinonimos()
37 38 self.carregarPalavrasIgnoradas()
38 39 self.carregarSubst2Generos()
39 40 self.carregarTemposVerbais()
40 41  
41   - # Abre o arquivo que contem os verbos no infinitivo e preenche o dicionario com os mesmos
  42 + # Abre o self.__fileDic que contem os verbos no infinitivo e preenche o dicionario com os mesmos
42 43 def carregarVerbosInfinitivos(self):
43 44 try:
44   - arquivo = csv.reader(open(self.__path+"dicPortGlosa.csv"), delimiter=";")
  45 + self.__fileDic = csv.reader(open(self.__path+"dicPortGlosa.csv"), delimiter=";")
45 46 except IOError, (errno, strerror):
46 47 print "I/O error(%s): %s" % (errno, strerror)
47 48 print "carregarVerbosInfinitivos"
48 49  
49   - for row in arquivo:
  50 + for row in self.__fileDic:
50 51 if row[1] != "":
51 52 try:
52 53 self.__dicInf[row[0].decode("utf-8")] = row[1].decode("utf-8")
53 54 except UnicodeDecodeError:
54 55 self.__dicInf[row[0].decode('iso8859-1').encode('utf-8')] = row[1].decode('iso8859-1').encode('utf-8')
55 56  
56   - # Abre o arquivo que contem os sinonimos e preenche o dicionario com os mesmos
  57 + # Abre o self.__fileDic que contem os sinonimos e preenche o dicionario com os mesmos
57 58 def carregarSinonimos(self):
58 59 try:
59   - arquivo = csv.reader(open(self.__path+"portuguesGlosa.csv"), delimiter=";")
  60 + self.__fileDic = csv.reader(open(self.__path+"portuguesGlosa.csv"), delimiter=";")
60 61 except IOError, (errno, strerror):
61 62 print "I/O error(%s): %s" % (errno, strerror)
62 63 print "carregarSinonimos"
63 64  
64   - for row in arquivo:
  65 + for row in self.__fileDic:
65 66 if row[1] != "":
66 67 self.__dicSin[row[0].decode("utf-8")] = row[1].decode("utf-8")
67 68  
68 69  
69   - # Abre o arquivo que contem os tempos verbais
  70 + # Abre o self.__fileDic que contem os tempos verbais
70 71 def carregarTemposVerbais(self):
71 72 try:
72   - arquivo = csv.reader(open(self.__path+"temposVerbais.csv"), delimiter=";")
  73 + self.__fileDic = csv.reader(open(self.__path+"temposVerbais.csv"), delimiter=";")
73 74 except IOError, (errno, strerror):
74 75 print "I/O error(%s): %s" % (errno, strerror)
75 76 print "carregarTemposVerbais"
76 77  
77   - for row in arquivo:
  78 + for row in self.__fileDic:
78 79 self.__dicTemVerbs[row[0].decode("utf-8")] = row[0].decode("utf-8")
79 80  
80   - # Abre o arquivo que contem os artigos e preposicoes de acordo com o modelo de idioma passado na chamada e preenche o dicionario com os mesmos
  81 + # 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
81 82 def carregarPalavrasIgnoradas(self):
82 83 try:
83   - arquivo = csv.reader(open(self.__path+"hWordsRemove.csv"), delimiter=";")
  84 + self.__fileDic = csv.reader(open(self.__path+"hWordsRemove.csv"), delimiter=";")
84 85 except IOError, (errno, strerror):
85 86 print "I/O error(%s): %s" % (errno, strerror)
86 87 print "carregarPalavrasIgnoradas"
87 88  
88   - for row in arquivo:
  89 + for row in self.__fileDic:
89 90 self.__dicWords[row[0].decode("utf-8")] = row[0].decode("utf-8")
90 91  
91   - # Abre o arquivo que contem os substantivos que sao comuns dos 2 generos e preenche o dicionario com os mesmos
  92 + # Abre o self.__fileDic que contem os substantivos que sao comuns dos 2 generos e preenche o dicionario com os mesmos
92 93 def carregarSubst2Generos(self):
93 94 try:
94   - arquivo = csv.reader(open(self.__path+"subs2Generos.csv"), delimiter=";")
  95 + self.__fileDic = csv.reader(open(self.__path+"subs2Generos.csv"), delimiter=";")
95 96 except IOError, (errno, strerror):
96 97 print "I/O error(%s): %s" % (errno, strerror)
97 98 print "carregarSubst2Generos"
98 99  
99   - for row in arquivo:
  100 + for row in self.__fileDic:
100 101 self.__dic2Gen[row[0].decode("utf-8")] = row[0].decode("utf-8")
101 102  
102 103 # Retorna o dicionario dos verbos no infinitivo
... ...
src/Tradutor.py
... ... @@ -7,8 +7,10 @@
7 7  
8 8 #LAViD - Laboratório de Aplicações de Vídeo Digital
9 9  
10   -from alexp import run
11   -from AplicaSinonimos import sinonimosMorfologico, sinonimosSintatico
  10 +from alexp import run,getAnaliseMorfologica
  11 +from AplicaSinonimos import *
  12 +
  13 +sin = AplicaSinonimos()
12 14  
13 15  
14 16 def iniciarTraducao(texto):
... ... @@ -17,17 +19,18 @@ def iniciarTraducao(texto):
17 19  
18 20 def gerarAnalise(sentenca):
19 21 analise = run(sentenca)
20   - if (len(analise) > 0):
21   - analiseSintatica(analise)
22   - else:
23   - analise = getAnaliseMorfologica()
  22 + if (isinstance(analise,type(None))):
  23 + analise = getAnaliseMorfologica()
24 24 analiseMorfologica(analise)
  25 + else:
  26 + analiseSintatica(analise)
  27 +
25 28  
26 29  
27 30 def analiseMorfologica(sentenca):
28   - analise = sinonimosMorfologico(sentenca)
  31 + analise = sin.sinonimosMorfologico(sentenca)
29 32 print analise
30 33  
31 34 def analiseSintatica(sentenca):
32   - analise = sinonimosSintatico(sentenca)
  35 + analise = sin.sinonimosSintatico(sentenca)
33 36 print analise
34 37 \ No newline at end of file
... ...
src/alexp.py
... ... @@ -108,7 +108,7 @@ def analisaSentenca(sentenca):
108 108 """
109 109 parser=constroiAnalisador(sentenca)
110 110 codificada=[w.encode("utf-8") for w in sentenca]
111   - trees=parser.nbest_parse(codificada)
  111 + trees=parser.parse_one(codificada)
112 112 return trees
113 113  
114 114 def constroiAnalisador(s):
... ... @@ -120,7 +120,7 @@ def constroiAnalisador(s):
120 120 entradas=geraEntradasLexicais(SENTENCA_ANOTADA)
121 121 lexico="\n".join(entradas)
122 122 gramatica="%s\n%s" % (extraiSintaxe(DIR).strip(),lexico)
123   - cfg=nltk.parse_cfg(gramatica)
  123 + cfg=nltk.CFG.fromstring(gramatica)
124 124 return nltk.ChartParser(cfg)
125 125  
126 126 def exibeArvores(arvores):
... ... @@ -128,7 +128,6 @@ def exibeArvores(arvores):
128 128 nltk.draw.draw_trees(*arvores)
129 129  
130 130 def run(sentenca):
131   - #SENTENCA_ANOTADA = []
132 131 tokens=toqueniza(sentenca)
133 132 trees=analisaSentenca(tokens)
134 133 return trees
135 134 \ No newline at end of file
... ...