jueves, 29 de enero de 2015

Contar frecuencia de palabras en un texto (versión 2) sin distinguir mayúsculas de minúsculas

Como complemento a la publicación de hace unos días, en la que contaba cómo contar cuántas veces aparece cada palabra en un fichero de texto, aquí podemos ver otra versión en la que se utilizan las "clases" (categorías de caracteres) definidas en el comando "tr", cuyos nombres son bastante intuitivos.  

Fig. 1. A ver quién tiene redaños a contar las palabras en este texto,
un evangelio alemán del s. XV

No es una mejora espectacular respecto a la opción de especificar los caracteres por rangos o individualmente (aquí sí es significativa la mejora), pero al menos así uno está seguro de que no se deja fuera un signo de puntuación si establece la categoría :punct:, por poner un ejemplo.

El código:

cat palabras.txt | tr [:punct:][:blank:][:digit:] "\n" | tr [:upper:] [:lower:] | sort | uniq -c | sort -nr > resul.txt

Una mejora añadida a esta versión es que no distingue entre mayúsculas y minúsculas, lo que he conseguido con la segunda invocación al comando "tr" que, como se puede ver, transforma todas las mayúsculas ([:upper:]) en minúsculas ([:lower:]).

Las categorías admisibles en el comando "tr" son (al menos en la versión de tr que tengo en mi máquina Windows actual):

 Fig. 2. Clases (categorías) de caracteres en el comando tr


Aquí está el enlace a la versión anterior, donde está explicado un poco más detallado el código
http://cosicasdeinformatica.blogspot.com.es/2015/01/contar-frecuencia-de-palabras-en-un.html

No hay comentarios:

Publicar un comentario