Commit c9f97b9d80f55f683ca5260de3dc7a0fd73c7077
1 parent
cc2ae7a3
Exists in
master
and in
1 other branch
Elimina funções e variaveis desnecessárias
Showing
1 changed file
with
14 additions
and
48 deletions
Show diff stats
alexp.py
1 | 1 | #! /usr/bin/env python2.6 |
2 | 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 | 13 | # Donatus Brazilian Portuguese Parser |
4 | 14 | # |
5 | 15 | # Copyright (C) 2010-2013 Leonel F. de Alencar |
... | ... | @@ -26,47 +36,23 @@ from Aelius import AnotaCorpus |
26 | 36 | DIR="cfg.syn.nltk" |
27 | 37 | |
28 | 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 | 41 | # eventualmente será preciso incluir aqui outros sinais |
33 | 42 | # de pontuação, como o travessão |
34 | 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 | 46 | def toqueniza(s): |
61 | 47 | """Decodifica string utilizando utf-8, retornando uma lista de tokens em unicode. |
62 | -""" | |
48 | + """ | |
63 | 49 | decodificada=s.decode("utf-8") |
64 | 50 | return AnotaCorpus.TOK_PORT.tokenize(decodificada) |
65 | 51 | |
66 | -def etiquetaSentenca(s,etiquetador=ETIQUETADOR[0]): | |
52 | +def etiquetaSentenca(s): | |
67 | 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 | 56 | return anotada |
71 | 57 | |
72 | 58 | def geraEntradasLexicais(lista): |
... | ... | @@ -118,7 +104,6 @@ def analisaSentenca(sentenca): |
118 | 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 | 106 | parser=constroiAnalisador(sentenca) |
121 | - #armazenaAnalisador((caminho,parser)) | |
122 | 107 | codificada=[w.encode("utf-8") for w in sentenca] |
123 | 108 | trees=parser.nbest_parse(codificada) |
124 | 109 | return trees |
... | ... | @@ -132,31 +117,12 @@ def constroiAnalisador(s): |
132 | 117 | lexico="\n".join(entradas) |
133 | 118 | gramatica="%s\n%s" % (extraiSintaxe(DIR).strip(),lexico) |
134 | 119 | cfg=nltk.parse_cfg(gramatica) |
135 | - print cfg | |
136 | 120 | return nltk.ChartParser(cfg) |
137 | 121 | |
138 | 122 | def exibeArvores(arvores): |
139 | 123 | """Função 'wrapper' para a função de exibição de árvores do NLTK""" |
140 | 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 | 126 | def run(sentenca): |
161 | 127 | tokens=toqueniza(sentenca) |
162 | 128 | trees=analisaSentenca(tokens) | ... | ... |