As nuvens de palavras, ou tag clouds, nada mais são do que uma representação gráfica (colorida ou não) das palavras mais frequentes contidas em algum corpo de texto. O tamanho das palavras possui uma relação direta com a frequência a qual aparecem no texto.
Portanto, neste post, apresentaremos como calcular a frequência de palavras contidas em um texto. Para isso, utilizaremos a linguagem Python.
Por que a linguagem Python?
Python é uma linguagem de programação de alto nível, orientada a objetos, gratuita, multiplataforma e de fácil aprendizado. Dadas estas características, é muito comum encontrar pela internet uma infinidade de pacotes desenvolvidos para facilitar as análises que desejamos obter.
Caso você não conheça nada sobre Python ainda, recomendamos uma visita ao site http://www.learnpython.org. Este site apresenta um console interativo onde você pode testar os comandos do tutorial sem ter o Python instalado em seu computador.
Após se familiar com a ferramenta, você pode obter o instalador pelo site http://www.python.org e usar a linguagem em sua própria máquina (recomendamos a versão 2.7, pois nem todos os pacotes estão disponíveis ainda para a versão 3.x).
Após a instalação, basta você abrir o console no Linux ou prompt de comando no Windows, digitar ‘python’ e começar a programar. Uma alternativa é utilizar as IDEs que auxiliam no desenvolvimento ao colorir tags e indicar erros no código como o IDLE (que vem com o próprio python na versão para Windows), Geany, Eclipse, gedit com plugin, vi, emacs, etc.
Manipulando strings no Python
Na linha de comando do Python no modo interativo, podemos começar criando uma variável (texto) que recebe um valor do string e fazemos algumas manipulações com ela.
texto = 'Ola mundo'
len(texto) # Retorna a quantidade de caracteres = 9
# Concatenando strings
excl = '!'
texto2 = texto + excl
print texto2 # = Ola mundo!
len(texto2) # = 10
Textos longos podem ser inseridos no código da seguinte forma:
texto_longo = '''Esta e uma demonstracao de como podemos escrever textos
longos. Estes textos longos podem ser paragrafos inteiros
de livros, reportagens, noticias e ate mesmo posts de blogs.
Seja qual for a sua fonte, ela podera ter textos longos como
este, tenha certeza disto!
'''
print texto_longo
O comando split() apresentado a seguir quebra a string em múltiplas partes. O parâmetro que esta função pede é o caractere que fará a quebra. Como queremos separar as palavras pelo espaço em branco, podemos utilizar ’ ’ como parâmetro, veja:
print texto_longo.split(' ')
Como você pode ver, a saída de uma função split() é um array de strings. Mas vemos também alguns caracteres especiais que não estavam visíveis no texto anteriormente. Cada caractere tem uma função específica:
- \n - indica uma quebra de linha
- \t - indica uma tabulação (tecla tab)
print texto_longo.replace('\n',' ').replace('\t','').split(' ')
Agora que já temos um array de palavras, podemos calcular a frequência delas para ver quais aparecem mais neste texto. Para facilitar este processo utilizaremos uma biblioteca nativa do Python chamada collections e a classe Counter fará todo o trabalho “sujo” por nós.
from collections import Counter
palavras = texto_longo.replace('\n',' ').replace('\t','').split(' ')
contador = Counter(palavras)
for i in contador.items():
print i
Eis o resultado, com a quantidade de ocorrências das mais citadas:
- 'textos': 3
- 'de': 3
- 'e': 2
- 'longos': 2
As demais palavras possuíram apenas uma única ocorrência cada. Agora vejamos que interessante: se removemos as palavras ‘de’ e ‘e’ que não representam muita coisa sozinhas, temos apenas ‘textos’ e ‘longos’ que constituem, justamente, o tema do texto.
No próximo texto veremos como fazer pré-processamento de textos no Python para evitar que palavras muito frequentes sem significado entrem em nossa análise e alguns tópicos importantes adicionais. Até lá!
Nenhum comentário:
Postar um comentário