Atomização e separação de frases

Projecto AC/DC, Linguateca


Neste documento descrevemos o processamento inicial aplicado a todos os corpora do projecto AC/DC. De forma a produzir uma plataforma comum, todos os corpora são pré-processados de forma a ter uma definição comum das unidades básicas (atomização dos textos) assim como uma codificação comum de alguma informação estrutural:
  1. a identificação das palavras básicas e dos sinais de pontuação
  2. a identificação da estrutura dos textos,
  3. a marcação de alguma informação extratextual
Detalharemos aqui a atomização ("tokenization", em inglês) e a identificação das frases gráficas, visto que o outro processamento depende, evidentemente; do tipo de texto envolvido, e já se encontram documentado, individualmente para cada corpus, na página da contabilização dos corpos.

Atomização

Consideramos como átomos Evidentemente, o processo indicado acima está longe de ser perfeito e, de facto, em muitos casos não passa de uma heurística destinada a funcionar na maior parte dos casos -- mas não em todos! Os casos mais óbvios de inadequação encontram-se descritos na secção Problemas da atomização, abaixo.

A atomização inclui também um processo de normalização (mínima) dos textos, a saber:

Separação de frases

Feita a atomização, segue-se a separação de frases. Esta começa por mascarar os pontos e outros sinais de pontuação identificados como partes de átomos, de forma a não os confundir com sinais de pontuação, e depois aplica um conjunto de regras para cada sinal de pontuação e sua combinação. A notação original é, evidentemente, reposta após o processo de separação de frases ter sido concluído.

A única informação é gráfica: presença ou ausência de maiúscula, e disposição gráfica (mudança de linha, fim do texto, princípio do texto). As regras têm necessariamente de ser simples, e em muitos casos sabemos que não são absolutas. Tentámos contudo ajustá-las de forma a darem o resultado desejado na maioria dos casos.

Em muitos casos, existe interacção entre atomização e separação de frases (e um erro numa implica um problema na outra). Exemplos típicos são a identificação errada de uma inicial no fim de uma frase, o que evita a identificação do ponto como ponto final:

e a identificação de um numeral como cardinal, na mesma posição

As regras utilizadas especificam três tipos de separadores, a que chamaremos

absolutos: ponto
Acabam sempre uma frase.
quase-absolutos: ponto de exclamação, de interrogação e reticências
Só não acabam uma frase se entre parênteses ou entre aspas ou se seguidos de travessão e minúscula.
contextuais: dois pontos e travessão.
Só acabam uma frase se seguidos de maiúscula ou de mudança de linha.
Vírgulas e pontos e vírgulas não acabam nunca uma frase.

Todo o texto, chegado a fim de parágrafo, acaba uma frase. Mas se não tiver um separador legal, é considerada frase do tipo fragmento (que mais tarde e dependendo do tipo de texto pode ser re-interpretada como título, autor, assinatura, legenda, etc.).

Estas regras, muito simples, complicam-se devido à existência de aspas e parênteses, visto que uma frase, terminada por exemplo por um ponto, pode ser seguida por estes sinais de pontuação, e o programa tem de tomar em conta estes caracteres dentro da frase depois de ter decidido que a frase acabou.

Exemplos não triviais do resultado do programa:

Nota: de forma a permitir uma maior controlo ao utilizador, e no caso de se saber à partida que deve haver uma separação de frases num dado ponto, pode especificar-se tal posição através do caracter £.

Problemas da atomização

O maior problema da atomização é o facto de em muitos casos o - ou o / reunirem, não uma palavra de cada lado, mas várias: Estrela da Amadora - Sporting de Braga, ou Estados Unidos/Coreia do Norte... Para resolver correctamente este problema teríamos de identificar que unidades é que são unidas ou constrastadas pelos sinais de pontuação.

Outro problema é o facto de um número seguido de ) ou mesmo rodeado de () não ter sempre o mesmo significado:

Espaços para aumentar a legibilidade dos números, por agora são identificados como separando átomos

Também os hífenes em fim de palavra, provindos de translineação, podem causar problema.

Problemas da separação de frases

Em alguns casos abreviaturas são idênticas a palavras normais (na mesma ou noutra língua), e é preciso ter em conta o contexto. Noutros casos uma abreviatura pode levar ou não ponto -- e é, em geral, o caso que uma abreviatura no fim da frase não leva ponto. Em ambos os casos isso pode levar à não detecção de uma mudança de frase, ou ao caso contrário.

Exemplos:

Outras limitações

As pelicas, ao contrário das aspas, ainda não foram sistematicamente tratadas.

Não se deu ainda um tratamento cabal a caracteres estranhos usados como separadores, nem a "smiles", cada vez mais frequentes :-)

Tipos de textos formatados, tipo anúncio, missa, recensão de filme, receita, programação de televisão, dedicatória, referência bibliográfica, problemas de xadrez, poderiam -- deveriam mesmo, em alguns casos -- ter um tratamento diferente (a nível de definição de frase e átomo).

Excertos de texto noutras línguas dentro de um texto em português não foram (ainda) considerados, embora seja óbvio que por vezes constituem problemas complicados.

Transcrição e poesia são tipos de texto escrito aos quais não se podem aplicar estes programas, que têm em conta as normas da escrita em prosa.

Reuso destes programas

Em projectos subsequentes, estes programas foram usados e a sua saída revista e alterada manualmente. O seu uso permitiu melhorá-los, mas estamos plenamente conscientes de que muito ainda está por fazer.

Obtenção do atomizador/separador de frases da Linguateca

Estes programas, desenvolvidos em Perl, são públicos e encontram-se acessíveis através do CPAN: https://metacpan.org/pod/Lingua::PT::PLNbase

[ Acesso | Anotação | Corpora | Exemplos | Agradecimentos ]


Diana Santos.
Última actualização: 19 de março de 2016.
Perguntas, comentários e sugestões