Análise Freqüencial da Língua Portuguesa

Autor


Descrição

O presente trabalho foi o terceiro trabalho prático indivual realizado como parte da disciplina de Segurança em Computação (INE5429), durante o primeiro semestre de 2010. O aluno deveria desenvolver um programa de computador, o qual fosse capaz de realizar a análise freqüencial de um texto em português. Isso significa que tal programa, tendo como entrada um arquivo em texto puro contendo um grande texto, deve colocar na saída uma "tabela" que contém, para cada elemento analisado, a quantidade presente no texto. Neste trabalho os elementos que deveriam ser analisados eram: Além disso, aplicam-se as seguintes restrições à análise:

Código-fonte e Instruções de execução

O código-fonte do trabalho pode ser acessado através dos links abaixo: O trabalho foi programado na linguagem Java, e portanto, pode ser compilado usando-se o compilador javac, para compilar todos os arquivos fonte presentes no diretório src/. Após a compilação, para executar o programa basta executar o seguinte comando:
bin> java analyser.Main ../training_portuguese_BR.txt
Tal comando irá colocar na saída padrão todas as análises realizadas: primeiramente a dos caracteres isolados, logo após a das duplas de caracteres e por fim a das triplas. Caso você deseje obter saída relativa somente a um tipo específico de análise, basta usar uma opção adicional na linha de comando, com a seguinte sintaxe:
bin> java analyser.Main ../training_portuguese_BR.txt [opcao]
Onde [opcao] é uma das seguintes:

Anexos - Planilhas e gráficos

Para facilitar a interpretação dos resultados obtidos com a análise, foram criadas (a partir da saída do programa), várias planilhas no formato ODS (OpenDocumentFormat Spreadsheet) que contém, respectivamente, os resultados para os caracteres isolados, para as duplas e para as triplas. Em cada uma dessas planilhas também foram incluídos gráficos em forma de colunas, os quais possibilitam uma rápida interpretação visual da análise. Não fez parte do escopo deste trabalho a geração automática de tais planilhas a partir da execução do programa. Abaixo estão os links para a versão HTML das planilhas de análise, incluindo os gráficos:

Possíveis limitações da análise

Este trabalho realiza uma análise que permite tirar boas estatísticas sobre a Língua Portuguesa, e tais estatísticas são de grande valia para fazer criptoanálise por análise freqüencial. Porém, ele está longe da perfeição. Alguns pontos que podem diminuir a validade das informações obtidas são:
  1. Os espaços em branco no texto original são filtrados como um pré-processamento anterior à análise. Assim, perde-se a informação da fronteira entre palavras, o que faz com que constem da análise pares e triplas de caracteres que não indicam a estrutura do Português
  2. Dígitos numéricos e letras são tratados da mesma forma. Em algumas situações, como por exemplo "13h30min", tal tratamento faz surgir artificialmente novas duplas e/ou trios (no caso "3h" e "0m")