você está aqui: Home  → Colunistas  →  Cantinho do Shell

 

Contagem de Palavras

Por Rubens Queiroz de Almeida

Data de Publicação: 27 de Outubro de 2006

Várias vezes eu mencionei na Dicas-L um material que criei para autoestudo da língua inglesa chamado As Palavras Mais Comuns da Língua Inglesa.

Para fazer esta contagem eu usei o bom e velho Unix. Originalmente eu utilizava vários comandos do próprio Unix, o que descrevo em uma outra dica

Lendo o manual de Awk do pacote gawk-doc-3.0.6-4cl (Conectiva Linux), chamado Effective AWK Programming, eu descobri uma outra maneira de se fazer isto. Eu fiz algumas modificações no script, que incluo no final desta mensagem (o script original se encontra na página 225 do livro).

Para gerar os relatórios, eu uso a shell abaixo:


#!/bin/bash
 
for file in *.txt
do
   echo "======================================" >> $file-report
   echo $file > $file-report
   echo "======================================" >> $file-report
   awk -f /home/queiroz/bin/wordcount.awk $file > $file-report
done

A seguir, o arquivo wordcount.awk:

{
 $0 = tolower($0)
 gsub(/``/, " ", $0)
 gsub(/''/, " ", $0)
 gsub(/[^a-z' \t]/, " ", $0)
 for (i = 1; i <= NF; i++)
  freq[$i]++
 total += NF
}
 
END {
  sort = "sort +1 -nr"
  for (word in freq)
   printf "%-10s\t%-10d\t%-2.3f\n",word,freq[word],(freq[word] * 100)/total | sort
   print "----------------------------"
   print "Total de Palavras = " total
   print "----------------------------"
}

A seguir, um exemplo de relatório. Na primeira coluna temos a palavra, na segunda o número de ocorrências da mesma no texto, e na terceira e última coluna, o percentual de ocorrência da palavra no texto analisado.

—------------------
you             12              6.218
it              11              5.699
jude            9               4.663
hey             9               4.663
to              8               4.145
make            8               4.145
let             7               3.627
her             7               3.627
and             7               3.627
your            6               3.109
don't           6               3.109
better          6               3.109
then            4               2.073
the             4               2.073
a               4               2.073
remember        3               1.554
begin           3               1.554
you'll          2               1.036
world           2               1.036
under           2               1.036
that            2               1.036
take            2               1.036
start           2               1.036
song            2               1.036
skin            2               1.036
out             2               1.036
know            2               1.036
it's            2               1.036
into            2               1.036
heart           2               1.036
go              2               1.036
get             2               1.036
``` . um monte de linhas omitidas
anytime         1               0.518
afraid          1               0.518
ad              1               0.518
 ----------------------------
 Total de Palavras = 193
 ----------------------------

Este script foi utilizado pelo Deivison Alves, que criou a listagem das palavras mais comuns da língua italiana.

A técnica de contagem de palavras eu já usei em diversos contextos, mas o principal deles foi para criar o livro As Palavras Mais Comuns da Língua Inglesa. Este livro foi desenvolvido para auxiliar pessoas que precisam aprender a ler em inglês.

O script de contagem de palavras foi publicado originalmente na Dicas-L, no dia 2 de novembro de 2001.

Para quem precisa melhorar o inglês, eu criei um site chamado Aprendendo Inglês que contém inúmeras dicas úteis para o aprendizado.

Error: No site found with the domain 'moodle.idph.com.br' (Learn more)