En este post de programación en Python vamos a ver un ejercicio para contar la frecuencia con la que aparecen las palabras en un texto; es decir, contar cuántas veces aparece cada palabra.
Todo esto lo haremos con Python usando diccionarios, ciclo for y funciones de manejo de cadenas.
El algoritmo general
Para sacar la frecuencia de palabras con Python necesitamos primero tener un texto y a ese texto quitarle todos los signos de puntuación, ya que queremos las palabras limpias.
Después, hacemos un split
para convertir la cadena en un arreglo, separándola por espacios. Ahora vamos a tener una lista con todas las palabras del texto; vamos a convertirlas a minúsculas para que cuenten como la misma palabra.
Finalmente declaramos un diccionario y recorremos la lista de palabras. Si la palabra no existe en el diccionario, la agregamos por primera vez con un valor de 1. En caso de que ya exista, aumentamos la frecuencia.
Recuerda que para este caso vamos a usar un diccionario en donde la clave será la palabra, y el valor será la frecuencia con la que aparece en el texto.
Aquí el código explicado en un vídeo en caso de que lo prefieras:
Contar frecuencia de palabras con Python
Comenzamos eliminando los caracteres que no vamos a tomar en cuenta:
texto = """Hola, mundo. Esto es una cadena, se supone que debe tener varias palabras pues
vamos a realizar un conteo de frecuencia de las mismas usando el lenguaje de programación Python.
Ya no sé qué escribir pero sigo escribiendo para que poco a poco la cadena sea más larga y el
ejercicio de programación sea demostrable. Creo que con todo esto que he escrito es suficiente"""
# Los caracteres que no contamos como palabras
quitar = ",;:.\n!\"'"
for caracter in quitar:
texto = texto.replace(caracter,
"") # Remplazarlo por "nada"; es decir, removerlo
Después convertimos a minúsculas con la función lower, y separamos por espacios para convertir la cadena a arreglo usando split:
# Lo convertimos a minúsculas pues una palabra mayúscula y minúscula cuenta como una sola
texto = texto.lower()
# Las palabras están separadas por un espacio así que convertimos la cadena a arreglo
palabras = texto.split(" ")
Finalmente declaramos el diccionario, almacenamos las frecuencias y las imprimimos.
# Ahora vamos a contar las palabras creando un diccionario. En este caso la clave del diccionario
# será la palabra, y el valor será el conteo
diccionario_frecuencias = {}
for palabra in palabras:
if palabra in diccionario_frecuencias:
diccionario_frecuencias[palabra] += 1
else:
diccionario_frecuencias[palabra] = 1
for palabra in diccionario_frecuencias:
frecuencia = diccionario_frecuencias[palabra]
print(f"La palabra '{palabra}' tiene una frecuencia de {frecuencia}")
Poniendo todo junto
El código completo se ve así:
"""
____ _____ _ _ _
| _ \ | __ \ (_) | | |
| |_) |_ _ | |__) |_ _ _ __ _____| |__ _ _| |_ ___
| _ <| | | | | ___/ _` | '__|_ / | '_ \| | | | __/ _ \
| |_) | |_| | | | | (_| | | / /| | |_) | |_| | || __/
|____/ \__, | |_| \__,_|_| /___|_|_.__/ \__, |\__\___|
__/ | __/ |
|___/ |___/
____________________________________
/ Si necesitas ayuda, contáctame en \
\ https://parzibyte.me /
------------------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
Creado por Parzibyte (https://parzibyte.me). Este encabezado debe mantenerse intacto,
excepto si este es un proyecto de un estudiante.
"""
texto = """Hola, mundo. Esto es una cadena, se supone que debe tener varias palabras pues
vamos a realizar un conteo de frecuencia de las mismas usando el lenguaje de programación Python.
Ya no sé qué escribir pero sigo escribiendo para que poco a poco la cadena sea más larga y el
ejercicio de programación sea demostrable. Creo que con todo esto que he escrito es suficiente"""
# Los caracteres que no contamos como palabras
quitar = ",;:.\n!\"'"
for caracter in quitar:
texto = texto.replace(caracter,
"") # Remplazarlo por "nada"; es decir, removerlo
# Lo convertimos a minúsculas pues una palabra mayúscula y minúscula cuenta como una sola
texto = texto.lower()
# Las palabras están separadas por un espacio así que convertimos la cadena a arreglo
palabras = texto.split(" ")
# Ahora vamos a contar las palabras creando un diccionario. En este caso la clave del diccionario
# será la palabra, y el valor será el conteo
diccionario_frecuencias = {}
for palabra in palabras:
if palabra in diccionario_frecuencias:
diccionario_frecuencias[palabra] += 1
else:
diccionario_frecuencias[palabra] = 1
for palabra in diccionario_frecuencias:
frecuencia = diccionario_frecuencias[palabra]
print(f"La palabra '{palabra}' tiene una frecuencia de {frecuencia}")
También te invito a que expandas tu conocimiento de Python en mi blog.
Gracias, muy útil la información !
Gracias por sus comentarios. Le invito a suscribirse al blog y compartirlo
Saludos 🙂