Python – Contar frecuencia de palabras

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

Contar palabras con Python – Frecuencia con que se repiten

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.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

2 comentarios en “Python – Contar frecuencia de palabras”

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *