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
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)
... ...