Commit c9f97b9d80f55f683ca5260de3dc7a0fd73c7077

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

Elimina funções e variaveis desnecessárias

Showing 1 changed file with 14 additions and 48 deletions   Show diff stats
1 #! /usr/bin/env python2.6 1 #! /usr/bin/env python2.6
2 # -*- coding: utf-8 -*- 2 # -*- coding: utf-8 -*-
  3 +
  4 +#---------------------------------
  5 +
  6 +# EDIT:
  7 +# Erickson Silva(erickson.silva@lavid.ufpb.br)
  8 +# LAViD - Laboratório de Aplicações de Video Digital
  9 +
  10 +#---------------------------------
  11 +
  12 +
3 # Donatus Brazilian Portuguese Parser 13 # Donatus Brazilian Portuguese Parser
4 # 14 #
5 # Copyright (C) 2010-2013 Leonel F. de Alencar 15 # Copyright (C) 2010-2013 Leonel F. de Alencar
@@ -26,47 +36,23 @@ from Aelius import AnotaCorpus @@ -26,47 +36,23 @@ from Aelius import AnotaCorpus
26 DIR="cfg.syn.nltk" 36 DIR="cfg.syn.nltk"
27 37
28 # definição de etiquetador e arquitetura default 38 # definição de etiquetador e arquitetura default
29 -ETIQUETADOR=[]  
30 -ETIQUETADOR.extend(list((carrega("AeliusHunPos"),"nltk"))) 39 +ETIQUETADOR = list((carrega("AeliusHunPos"),"nltk"))
31 40
32 # eventualmente será preciso incluir aqui outros sinais 41 # eventualmente será preciso incluir aqui outros sinais
33 # de pontuação, como o travessão 42 # de pontuação, como o travessão
34 PUNCT=string.punctuation 43 PUNCT=string.punctuation
35 44
36 -# nesta lista são armazenados etiquetadores criados  
37 -# ao longo de uma sessão junto com os caminhos das  
38 -# gramáticas a partir das quais foram compilados  
39 -ANALISADORES=[]  
40 -  
41 -# nesta lista são armazenadas sentenças dadas  
42 -# para análise; a cada execução da função analisaBlocoDeSentencas()  
43 -# a lista é esvaziada e reinicializada  
44 -SENTENCAS=[]  
45 -  
46 -def configuraEtiquetador(modelo,arquitetura):  
47 - """Esta função permite mudar os valores por defeito da lista armazenada na variável global ETIQUETADOR.  
48 - """  
49 -  
50 - ETIQUETADOR[0],ETIQUETADOR[1]=carrega(modelo),arquitetura  
51 -  
52 -def armazenaAnalisador(tupla):  
53 - """Esta função armazena até cinco analisadores, incluindo os caminhos da gramática a partir das quais foram construídos. O argumento da função é uma tupla constituída de (gramatica,parser), onde 'gramatica' é o caminho do arquivo com as regras da parte sintática da gramática.  
54 - """  
55 - if len(ANALISADORES) > 4:  
56 - ANALISADORES.pop(0)  
57 - ANALISADORES.append(tupla)  
58 -  
59 45
60 def toqueniza(s): 46 def toqueniza(s):
61 """Decodifica string utilizando utf-8, retornando uma lista de tokens em unicode. 47 """Decodifica string utilizando utf-8, retornando uma lista de tokens em unicode.
62 -""" 48 + """
63 decodificada=s.decode("utf-8") 49 decodificada=s.decode("utf-8")
64 return AnotaCorpus.TOK_PORT.tokenize(decodificada) 50 return AnotaCorpus.TOK_PORT.tokenize(decodificada)
65 51
66 -def etiquetaSentenca(s,etiquetador=ETIQUETADOR[0]): 52 +def etiquetaSentenca(s):
67 """Aplica um dos etiquetadores do Aelius na etiquetagem da sentença dada como lista de tokens. 53 """Aplica um dos etiquetadores do Aelius na etiquetagem da sentença dada como lista de tokens.
68 """ 54 """
69 - anotada=AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0] 55 + anotada=AnotaCorpus.anota_sentencas([s],ETIQUETADOR,"hunpos")[0]
70 return anotada 56 return anotada
71 57
72 def geraEntradasLexicais(lista): 58 def geraEntradasLexicais(lista):
@@ -118,7 +104,6 @@ def analisaSentenca(sentenca): @@ -118,7 +104,6 @@ def analisaSentenca(sentenca):
118 """Retorna lista de árvores de estrutura sintagmática para a sentença dada sob a forma de uma lista de tokens, com base na gramática CFG cujo caminho é especificado como segundo argumento da função. Esse caminho é relativo à pasta nltk_data da instalação local do NLTK. A partir da etiquetagem morfossintática da sentença são geradas entradas lexicais que passam a integrar a gramática CFG. O caminho da gramática e o parser gerado são armazenados como tupla na variável ANALISADORES. 104 """Retorna lista de árvores de estrutura sintagmática para a sentença dada sob a forma de uma lista de tokens, com base na gramática CFG cujo caminho é especificado como segundo argumento da função. Esse caminho é relativo à pasta nltk_data da instalação local do NLTK. A partir da etiquetagem morfossintática da sentença são geradas entradas lexicais que passam a integrar a gramática CFG. O caminho da gramática e o parser gerado são armazenados como tupla na variável ANALISADORES.
119 """ 105 """
120 parser=constroiAnalisador(sentenca) 106 parser=constroiAnalisador(sentenca)
121 - #armazenaAnalisador((caminho,parser))  
122 codificada=[w.encode("utf-8") for w in sentenca] 107 codificada=[w.encode("utf-8") for w in sentenca]
123 trees=parser.nbest_parse(codificada) 108 trees=parser.nbest_parse(codificada)
124 return trees 109 return trees
@@ -132,31 +117,12 @@ def constroiAnalisador(s): @@ -132,31 +117,12 @@ def constroiAnalisador(s):
132 lexico="\n".join(entradas) 117 lexico="\n".join(entradas)
133 gramatica="%s\n%s" % (extraiSintaxe(DIR).strip(),lexico) 118 gramatica="%s\n%s" % (extraiSintaxe(DIR).strip(),lexico)
134 cfg=nltk.parse_cfg(gramatica) 119 cfg=nltk.parse_cfg(gramatica)
135 - print cfg  
136 return nltk.ChartParser(cfg) 120 return nltk.ChartParser(cfg)
137 121
138 def exibeArvores(arvores): 122 def exibeArvores(arvores):
139 """Função 'wrapper' para a função de exibição de árvores do NLTK""" 123 """Função 'wrapper' para a função de exibição de árvores do NLTK"""
140 nltk.draw.draw_trees(*arvores) 124 nltk.draw.draw_trees(*arvores)
141 125
142 -def constroiArvores(sent=None,num=None,analisador=-1):  
143 - """Constrói, com base no analisador na posição especificada na pilha ANALISADORES, árvores para uma sentença toquenizada ou a sentença de número dado .  
144 - """  
145 - s=None  
146 - if sent:  
147 - s=sent  
148 - if num:  
149 - s=SENTENCAS[num-1]  
150 - if s:  
151 - return ANALISADORES[analisador][1].nbest_parse(s)  
152 - else:  
153 - print "Nenhuma sentença foi especificada."  
154 -  
155 -def mostraArvores(numero):  
156 - """Constrói e exibe arvores para a sentença de número dado geradas pelo analisador no topo da pilha ANALISADORES.  
157 - """  
158 - exibeArvores(constroiArvores(num=numero))  
159 -  
160 def run(sentenca): 126 def run(sentenca):
161 tokens=toqueniza(sentenca) 127 tokens=toqueniza(sentenca)
162 trees=analisaSentenca(tokens) 128 trees=analisaSentenca(tokens)