The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Lingua::PT::PLNbase - Perl extension for NLP of the Portuguese

SYNOPSIS

  use Lingua::PT::PLNbase;

  my @atomos = atomiza($texto);   # tb chamada 'tokenize'

  my $atomos_um_por_linha = tokeniza($texto);
  my $atomos_separados_por_virgula = tokeniza({fs => ','}, $texto);


  my @frases = frases($texto);

DESCRIPTION

Este módulo inclui funções básicas úteis ao processamento computacional da língua, e em particular, da língua portuguesa.

Atomizadores

Este módulo inclui um método configurável para a atomização de corpus na língua portuguesa. No entanto, é possível que possa ser usado para outras línguas (especialmente inglês e francês.

A forma simples de uso do atomizador é usando directamente a função atomiza que retorna um texto em que cada linha contém um átomo (ou o uso da função tokeniza que contém outra versão de atomizador).

As funções disponíveis:

atomos
atomiza
tokenize

Usa um algorítmo desenvolvido no Projecto Natura.

Para que as aspas não sejam convertidas em abrir aspa e fechar aspa, usar a opção de configuração keep_quotes.

Retorna texto tokenizado, um por linha (a nao ser que o 'record separator' (rs) seja redefenido). Em ambiente lista, retorna a lista dos átomos.

  my @atomos = atomiza($texto);   # tb chamada 'tokenize'

  my $atomos_um_por_linha = tokeniza($texto);
  my $atomos_separados_por_virgula = tokeniza({fs => ','}, $texto);
tokeniza

Usa um algoritmo desenvolvido no Pólo de Oslo da Linguateca. Retorna um átomo por linha em contexto escalar, e uma lista de átomos em contexto de lista.

cqptokens

Um átomo por linha de acordo com notação CWB. Pode ser alterado o separador de frases (ou de registo) usando a opção 'irs':

   cqptokens( { irs => "\n\n" }, "file" );

outras opções:

   cqptokens( { enc => ":utf8"}, "file" ); # enc => charset
                                           # outenc => charset

Segmentadores

Este módulo é uma extensão Perl para a segmentação de textos em linguagem natural. O objectivo principal será a possibilidade de segmentação a vários níveis, no entanto esta primeira versão permite apenas a separação em frases (fraseação) usando uma de duas variantes:

frases
sentences
  @frases = frases($texto);

Esta é a implementação do Projecto Natura, que retorna uma lista de frases.

separa_frases
  $frases = separa_frases($texto);

Esta é a implementação da Linguateca, que retorna um texto com uma frase por linha.

xmlsentences

Utiliza o método frases e aplica uma etiqueta XML a cada frase. Por omissão, as frases são ladeadas por '<s>' e '</s>'. O nome da etiqueta pode ser substituído usando o parametro opcional st.

  xmlsentences({st=> "tag"}, text)

Segmentação a vários níveis

fsentences

A função fsentences permite segmentar um conjunto de ficheiros a vários níveis: por ficheiro, por parágrafo ou por frase. O output pode ser realizado em vários formatos e obtendo, ou não, numeração de segmentos.

Esta função é invocada com uma referência para um hash de configuração e uma lista de ficheiros a processar (no caso de a lista ser vazia, irá usar o STDIN).

O resultado do processamento é enviado para o STDOUT a não ser que a chave output do hash de configuração esteja definida. Nesse caso, o seu valor será usado como ficheiro de resultado.

A chave input_p_sep permite definir o separador de parágrafos. Por omissão, é usada uma linha em branco.

A chave o_format define as políticas de etiquetação do resultado. De momento, a única política disponível é a XML.

As chaves s_tag, p_tag e t_tag definem as etiquetas a usar, na política XML, para etiquetar frases, parágrafos e textos (ficheiros), respectivamente. Por omissão, as etiquetas usadas são s, p e text.

É possível numerar as etiquetas, definindo as chaves s_num, p_num ou t_num da seguinte forma:

'0'

Nenhuma numeração.

'f'

Só pode ser usado com o t_tag, e define que as etiquetas que delimitam ficheiros usará o nome do ficheiro como identificador.

'1'

Numeração a um nível. Cada etiqueta terá um contador diferente.

'2'

Só pode ser usado com o p_tag ou o s_tag e obriga à numeração a dois níveis (N.N).

'3'

Só pode ser usado com o s_tag e obriga à numeração a três níveis (N.N.N)

 nomes das etiquetas (s => 's', p=>'p', t=>'text')

 t: 0 - nenhuma
    1 - numeracao
    f - ficheiro [DEFAULT]

 p: 0 - nenhuma
    1 - numeracao 1 nivel [DEFAULT]
    2 - numercao 2 niveis (N.N)

 s: 0 - nenhuma
    1 - numeração 1 nível [DEFAULT]
    2 - numeração 2 níveis (N.N)
    3 - numeração 3 níveis (N.N.N)

Acentuação

remove_accents

Esta função remove a acentuação do texto passado como parâmetro

has_accents

Esta função verifica se o texto passado como parâmetro tem caracteres acentuados

Funções auxiliares

recupera_ortografia_certa
tratar_pontuacao_interna

SEE ALSO

perl(1)

AUTHOR

Alberto Simoes (ambs@di.uminho.pt)

Diana Santos (diana.santos@sintef.no)

José João Almeida (jj@di.uminho.pt)

Paulo Rocha (paulo.rocha@di.uminho.pt)

COPYRIGHT AND LICENSE

Copyright (C) 2003-2006 by its authors

(EN) This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.1 or, at your option, any later version of Perl 5 you may have available.

(PT) Esta biblioteca é software de domínio público; pode redistribuir e/ou modificar este módulo nos mesmos termos do próprio Perl, quer seja a versão 5.8.1 ou, na sua liberdade, qualquer outra versão do Perl 5 que tenha disponível.