diff --git a/src/AplicaSinonimos b/src/AplicaSinonimos deleted file mode 100644 index ef3f9a8..0000000 --- a/src/AplicaSinonimos +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- - -#Autor: Erickson Silva -#Email 1: -#Email 2: - -#LAViD - Laboratório de Aplicações de Vídeo Digital - -import os, csv, sys, LeitorDicionarios -from nltk.tree import * - - -class AplicaSinonimos(object): - - # Define e inicializa os atributos - def __init__(self): - self.__dicionarios = LeitorDicionarios() - - def sinonimosMorfologico(self, texto): - lista = texto - for i, elem in enumerate(lista): - token = self.verificaPalavra(elem[0]) - texto[i][0] = token - return lista - - def sinonimosSintatico(self, texto): - folhas = nltk.tree.Tree.leaves(*texto) - dic = dicionarioSinonimoFolhas(folhas) - stringTree = str(texto) - for t in folhas: - stringTree.replace(t, dic[t]) - - return Tree.fromstring(stringTree, brackets='[]') - - def dicionarioSinonimoFolhas(folhas): - dic = {} - for f in folhas: - token = verificaPalavra(f) - dic[f] = token - return dic - - def verificaPalavra(self, token): - if self.__dicionarios.hasSinonimo(token): - return self.__dicionarios.getSinonimo(token) - return token - diff --git a/src/AplicaSinonimos.py b/src/AplicaSinonimos.py new file mode 100644 index 0000000..fa86d68 --- /dev/null +++ b/src/AplicaSinonimos.py @@ -0,0 +1,49 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +#Autor: Erickson Silva +#Email 1: +#Email 2: + +#LAViD - Laboratório de Aplicações de Vídeo Digital + +import os, csv, sys +from nltk.tree import * +from LeitorDicionarios import * + +class AplicaSinonimos(object): + + # Define e inicializa os atributos + def __init__(self): + self.__dicionarios = LeitorDicionarios() + + def sinonimosMorfologico(self, texto): + lista = texto + for i, elem in enumerate(lista): + token = self.verificaPalavra(elem[0]) + listmp = list(elem) + listmp[0] = token + lista[i] = listmp + return lista + + + def dicionarioSinonimoFolhas(self, folhas): + dic = {} + for f in folhas: + token = self.verificaPalavra(f) + dic[f] = token + return dic + + def sinonimosSintatico(self, texto): + folhas = Tree.leaves(texto) + dic = self.dicionarioSinonimoFolhas(folhas) + stringTree = str(texto) + for t in folhas: + stringTree.replace(t, dic[t]) + tree = Tree.fromstring(stringTree, brackets='()') + return tree + + def verificaPalavra(self, token): + if self.__dicionarios.hasSinonimo(token): + return self.__dicionarios.getSinonimo(token) + return token \ No newline at end of file diff --git a/src/LeitorDicionarios.py b/src/LeitorDicionarios.py index 8fb3a10..c3848fc 100644 --- a/src/LeitorDicionarios.py +++ b/src/LeitorDicionarios.py @@ -26,77 +26,78 @@ class LeitorDicionarios(object): # Define e inicializa os atributos def __init__(self): - self.__path = "vlibras_user/vlibras-core/data/" + self.__path = "/home/erickson/vlibras-translate/data/" self.__dicInf = {} self.__dicSin = {} self.__dicWords = {} self.__dic2Gen = {} - self.__dicTemVerbs = {} + self.__dicTemVerbs = {} + self.__fileDic = '' self.carregarVerbosInfinitivos() self.carregarSinonimos() self.carregarPalavrasIgnoradas() self.carregarSubst2Generos() self.carregarTemposVerbais() - # Abre o arquivo que contem os verbos no infinitivo e preenche o dicionario com os mesmos + # Abre o self.__fileDic que contem os verbos no infinitivo e preenche o dicionario com os mesmos def carregarVerbosInfinitivos(self): try: - arquivo = csv.reader(open(self.__path+"dicPortGlosa.csv"), delimiter=";") + 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 arquivo: + 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 arquivo que contem os sinonimos e preenche o dicionario com os mesmos + # Abre o self.__fileDic que contem os sinonimos e preenche o dicionario com os mesmos def carregarSinonimos(self): try: - arquivo = csv.reader(open(self.__path+"portuguesGlosa.csv"), delimiter=";") + 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 arquivo: + for row in self.__fileDic: if row[1] != "": self.__dicSin[row[0].decode("utf-8")] = row[1].decode("utf-8") - # Abre o arquivo que contem os tempos verbais + # Abre o self.__fileDic que contem os tempos verbais def carregarTemposVerbais(self): try: - arquivo = csv.reader(open(self.__path+"temposVerbais.csv"), delimiter=";") + 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 arquivo: + for row in self.__fileDic: self.__dicTemVerbs[row[0].decode("utf-8")] = row[0].decode("utf-8") - # 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 + # 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: - arquivo = csv.reader(open(self.__path+"hWordsRemove.csv"), delimiter=";") + 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 arquivo: + for row in self.__fileDic: self.__dicWords[row[0].decode("utf-8")] = row[0].decode("utf-8") - # Abre o arquivo que contem os substantivos que sao comuns dos 2 generos e preenche o dicionario com os mesmos + # 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: - arquivo = csv.reader(open(self.__path+"subs2Generos.csv"), delimiter=";") + 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 arquivo: + for row in self.__fileDic: self.__dic2Gen[row[0].decode("utf-8")] = row[0].decode("utf-8") # Retorna o dicionario dos verbos no infinitivo diff --git a/src/Tradutor.py b/src/Tradutor.py index 64d23ed..59f5eba 100644 --- a/src/Tradutor.py +++ b/src/Tradutor.py @@ -7,8 +7,10 @@ #LAViD - Laboratório de Aplicações de Vídeo Digital -from alexp import run -from AplicaSinonimos import sinonimosMorfologico, sinonimosSintatico +from alexp import run,getAnaliseMorfologica +from AplicaSinonimos import * + +sin = AplicaSinonimos() def iniciarTraducao(texto): @@ -17,17 +19,18 @@ def iniciarTraducao(texto): def gerarAnalise(sentenca): analise = run(sentenca) - if (len(analise) > 0): - analiseSintatica(analise) - else: - analise = getAnaliseMorfologica() + if (isinstance(analise,type(None))): + analise = getAnaliseMorfologica() analiseMorfologica(analise) + else: + analiseSintatica(analise) + def analiseMorfologica(sentenca): - analise = sinonimosMorfologico(sentenca) + analise = sin.sinonimosMorfologico(sentenca) print analise def analiseSintatica(sentenca): - analise = sinonimosSintatico(sentenca) + analise = sin.sinonimosSintatico(sentenca) print analise \ No newline at end of file diff --git a/src/alexp.py b/src/alexp.py index ae936eb..3708807 100644 --- a/src/alexp.py +++ b/src/alexp.py @@ -108,7 +108,7 @@ def analisaSentenca(sentenca): """ parser=constroiAnalisador(sentenca) codificada=[w.encode("utf-8") for w in sentenca] - trees=parser.nbest_parse(codificada) + trees=parser.parse_one(codificada) return trees def constroiAnalisador(s): @@ -120,7 +120,7 @@ def constroiAnalisador(s): entradas=geraEntradasLexicais(SENTENCA_ANOTADA) lexico="\n".join(entradas) gramatica="%s\n%s" % (extraiSintaxe(DIR).strip(),lexico) - cfg=nltk.parse_cfg(gramatica) + cfg=nltk.CFG.fromstring(gramatica) return nltk.ChartParser(cfg) def exibeArvores(arvores): @@ -128,7 +128,6 @@ def exibeArvores(arvores): nltk.draw.draw_trees(*arvores) def run(sentenca): - #SENTENCA_ANOTADA = [] tokens=toqueniza(sentenca) trees=analisaSentenca(tokens) return trees \ No newline at end of file -- libgit2 0.21.2