você está aqui: Home → Colunistas → Cantinho do Shell
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.