def __init__ (self, model): # portuguese tagger is Maximum Entropy Markov Model self._mxpost = carrega("AeliusMaxEntMM") self.parser = Parser(model) # self._mxpost = mxpost_home try: classpath = os.environ["CLASSPATH"] if not mxpost_home in classpath: classpath += ":" + mxpost_home + mxpost_jar os.environ["CLASSPATH"] = classpath except Exception: os.environ["CLASSPATH"] = mxpost_home + mxpost_jar try: path = os.environ["PATH"] if not mxpost_home in path: path += ":" + mxpost_home os.environ["PATH"] = path except Exception: os.environ["PATH"] = mxpost_home print("classpath is " + os.environ["CLASSPATH"]) print("path is " + os.environ["PATH"])
def etiqueta_sentenca(self, s): """Aplica um dos etiquetadores do Aelius na etiquetagem da sentença dada como lista de tokens. """ etiquetador = carrega("AeliusHunPos") anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0] while (anotada[0][1] is None): time.sleep(random.choice(self.sleep_times)) anotada = AnotaCorpus.anota_sentencas([s],etiquetador,"hunpos")[0] regex = re.compile('[%s]' % re.escape('\u2022''!"#&\'()*+,./:;<=>?@[\\]^_`{|}~')) tag_punctuation = [".",",","QT","("] anotada_corrigida = [] for x in anotada: if x[1] not in tag_punctuation: if x[1] == "NUM": try: float(x[0].replace(',', '.')) anotada_corrigida.append(x) continue except: pass tupla = [regex.sub('',x[0]).lower(),x[1]] if tupla[0] != "": anotada_corrigida.append(tupla) else: if x[0] == ".": anotada_corrigida.append(["[ponto]".decode("utf-8"),"SPT"]) elif x[0] == "?": anotada_corrigida.append(["[interrogação]".decode("utf-8"),"SPT"]) elif x[0] == "!": anotada_corrigida.append(["[exclamação]".decode("utf-8"),"SPT"]) return anotada_corrigida
# -*- coding: utf-8 -*- # Aelius Brazilian Portuguese POS-Tagger and Corpus Annotation Tool # # Copyright (C) 2010-2013 Leonel F. de Alencar # Author: Leonel F. de Alencar <*****@*****.**> # # URL: <http://sourceforge.net/projects/aelius/> # For license information, see LICENSE.TXT # # $Id: SimplificaEtiquetas.py $ """Este módulo contém funções para simplificar as etiquetas de um corpus anotado ou transformar um conjunto de etiquetas em outro.""" from Aelius.Extras import carrega ARQUIVO = carrega("tag_mapping.txt") def constroiDicionarioDeArquivo(arquivo=ARQUIVO): """Esta função transforma arquivo cujas linhas são pares do tipo etiqueta1 etiqueta em um dicionário em que o valor de dic[etiqueta1] é etiqueta2. """ dic = {} f = open(arquivo, "rU") for linha in f: chave, valor = linha.strip().split() dic[chave] = valor return dic
EXEMPLO = "Os candidatos classificáveis dos cursos de Sistemas de Informação poderão ocupar as vagas remanescentes do Curso de Engenharia de Software.".decode( "utf-8" ) # Extraído da seguinte fonte: # UFC convoca os classificáveis do Vestibular 2010. Disponível em: # <http://noticias.universia.com.br/destaque/noticia/2010/02/17/411825/ # fc-convoca-os-classificaveis-do-vestibular-2010.html> # Acesso em: 17/05/2011. # A seguinte variável permite expandir contrações para obter maior # acurácia com o LXTagger: EXPANDE_CONTRACOES = True TAGGER = carrega("AeliusBRUBT.pkl") # A seguinte variável global permite definir um # infixo para arquivos anotados; caso essa variável # permaneça com cadeia vazia como valor, o infixo é dado # pela arquitetura do etiquetador: INFIXO = "" USUARIO = os.path.expanduser("~") HUNPOS = carrega("AeliusHunPos") DESTINO = "." # O AeliusRUBT, usado como parte do procedimento
from Toqueniza import PUNKT,TOK_PORT from MXPOST import MXPOSTTagger EXEMPLO="Os candidatos classificáveis dos cursos de Sistemas de Informação poderão ocupar as vagas remanescentes do Curso de Engenharia de Software.".decode("utf-8") # Extraído da seguinte fonte: # UFC convoca os classificáveis do Vestibular 2010. Disponível em: # <http://noticias.universia.com.br/destaque/noticia/2010/02/17/411825/ # fc-convoca-os-classificaveis-do-vestibular-2010.html> # Acesso em: 17/05/2011. # A seguinte variável permite expandir contrações para obter maior # acurácia com o LXTagger: EXPANDE_CONTRACOES=True TAGGER=carrega("AeliusBRUBT.pkl") # A seguinte variável global permite definir um # infixo para arquivos anotados; caso essa variável # permaneça com cadeia vazia como valor, o infixo é dado # pela arquitetura do etiquetador: INFIXO="" USUARIO= os.path.expanduser("~") HUNPOS=carrega("AeliusHunPos") DESTINO="." # O AeliusRUBT, usado como parte do procedimento
# Aelius Brazilian Portuguese POS-Tagger and Corpus Annotation Tool # # Copyright (C) 2010-2013 Leonel F. de Alencar # Author: Leonel F. de Alencar <*****@*****.**> # # URL: <http://sourceforge.net/projects/aelius/> # For license information, see LICENSE.TXT # # $Id: SimplificaEtiquetas.py $ """Este módulo contém funções para simplificar as etiquetas de um corpus anotado ou transformar um conjunto de etiquetas em outro.""" from Aelius.Extras import carrega ARQUIVO=carrega("tag_mapping.txt") def constroiDicionarioDeArquivo(arquivo=ARQUIVO): """Esta função transforma arquivo cujas linhas são pares do tipo etiqueta1 etiqueta em um dicionário em que o valor de dic[etiqueta1] é etiqueta2. """ dic={} f=open(arquivo,"rU") for linha in f: chave,valor=linha.strip().split() dic[chave]=valor return dic