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 | #! /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) |