Se muestran ejemplos de Counter para contar letras y palabras en una cadena y en un archivo. Se emplea el método most_common para obtener las más usadas. Se hace un ejemplo analizando el libro Cien Años de soledad de Gabriel García Márquez.
Éste artículo está explicado en video. Míralo aquí: https://youtu.be/5-zHYTYj9-U
¿Alguna vez te has preguntado cuáles son las palabras más usadas por un autor? Realizar un programa que realice éste trabajo es muy sencillo, y la biblioteca Counter de Python nos facilita mucho esa tarea.
Veamos a continuación algunos ejemplos de Counter, entre ellos obtener cuáles son las palabras más usadas en el libro Cien Años de Soledad.
Counter es una biblioteca de Python que nos permite obtener el conteo de una colección de elementos.
Código Python:
from collections import Counter estudios = [ "Universidad", "Universidad", "Primaria", "Secundaria", "Primaria" ] #genera un diccionario conteo_estudios = Counter(estudios) print (conteo_estudios) #es posible mostrar la cantidad de alguno print (conteo_estudios["Primaria"])
Importamos la librería con from collections import Counter. Enseguida creamos una lista con elementos cualquiera, algunos repetidos. Creamos un objeto Counter llamado conteo_estudios usando:
conteo_estudios = Counter(estudios)
Si en ese momento imprimimos ese objeto, nos mostrara un diccionario, dónde vemos los diferentes elementos de la lista y cuántas veces fue encontrado.
Es posible mostrar el valor del conteo de un solo elemento, indicándolo de la siguiente forma:
print (conteo_estudios[“Primaria”]).
Código en Python:
def contar_letras(frase): letras = [letra for letra in frase if letra not in " ,.\n"] contador = Counter(letras) return contador.most_common(5) texto = input("Escriba algo bonito: ") print ("Las 5 mas comunes son : ", contar_letras(texto))
Aquí creamos una función que cuente las diferentes letras de una frase. Para esto usamos una expresión generadora que recorra letra por letra la frase y si esa letra no es un espacio en blanco, coma, punto o salto de línea, la generamos como parte de una lista.
letras = [letra for letra in frase if letra not in ” ,.\n”]
(Para examinar el manejo de expresiones generadoras, puedes ir a éste enlace: Multilistas en Python: Listas de listas)
Enseguida creamos un objeto Counter con esa lista de letras.
contador = Counter(letras)
Y regresamos las 5 letras más comunes utilizando el método most_common(5)
Vamos a contar las diferentes palabras que se utilizan en el libro “Cien años de soledad” de Gabriel García Márquez. Debemos tener en cuenta que no deseamos considerar los pronombres, adverbios, etc.
Código en Python:
def palabras_mas_comunes(n, archivo): palabras = [] eliminar = ['pero', 'El','La' ,'él', 'En', 'sino' , 'donde', 'hasta', 'estaba' , 'fue' , 'porque', 'había','sin', 'cuando', 'sus', 'como' , 'más' , 'a','del', 'le', 'lo', 'al', 'de','no','Que','que','las', 'los','a','es','y','el','la','un','en','su','se','con','por','una', 'era', 'para'] with open(archivo) as fname: for linea in fname: palabras.extend(linea.split()) reducida = [item for item in palabras if item not in eliminar] return (Counter(reducida).most_common(n)) print (palabras_mas_comunes(15, "ciencompleto.txt"))
Creamos una función que recibirá cuántas palabras deseamos, y el nombre del archivo de texto donde está todo el contenido del libro.
def palabras_mas_comunes(n, archivo):
Creamos una lista vacía (palabras = [ ] ) y una lista de las palabras que no queremos considerar (eliminar = [ ‘pero’ ]).
Abrimos el archivo con with open(archivo) as fname y recorremos el archivo línea por línea. Cada línea será separada considerando el espacio en blanco, y las palabras sueltas obtenidas serán guardadas en la lista palabras.
Utilizando la expresión generadora
reducida = [item for item in palabras if item not in eliminar]
recorremos toda la lista de palabras, comparando si cada palabra está en la lista de “eliminar”. Las que no están, se agregan a la lista “reducida”.
Regresamos el valor de los n elementos (palabras) más comunes en nuestra lista reducida. (return (Counter(reducida).most_common(n)) )
Te dejamos un video donde también se explica todo esto: