2 usuarios conectados

Frecuencia de palabras. Ejercicio en Python

Comparte esto

 
Escribe una función en Python llamada frecuencia_palabras que tome una cadena de texto como entrada y devuelva un diccionario donde las claves son las palabras encontradas en el texto (en minúsculas y sin puntuación) y los valores son sus frecuencias de aparición.

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Frecuencia de palabras

📋 Copiar código


import re
from collections import Counter

def frecuencia_palabras(texto):
  """
  Calcula la frecuencia de cada palabra en un texto.

  Args:
    texto: La cadena de texto de entrada.

  Returns:
    Un diccionario donde las claves son las palabras y los valores son sus frecuencias.
  """
  texto = texto.lower()
  texto = re.sub(r'[^\w\s]', '', texto)  # Eliminar puntuación
  palabras = texto.split()
  return Counter(palabras)

# Ejemplos de uso
texto1 = "Esta es una frase. Esta frase es un ejemplo."
resultado1 = frecuencia_palabras(texto1)
print(f"Frecuencia de palabras en '{texto1}':\n{resultado1}")

texto2 = "El perro ladra y el gato maulla. El perro es feliz."
resultado2 = frecuencia_palabras(texto2)
print(f"\nFrecuencia de palabras en '{texto2}':\n{resultado2}")

texto3 = "Una palabra sola."
resultado3 = frecuencia_palabras(texto3)
print(f"\nFrecuencia de palabras en '{texto3}':\n{resultado3}")

texto4 = ""
resultado4 = frecuencia_palabras(texto4)
print(f"\nFrecuencia de palabras en '':\n{resultado4}")

texto5 = "Texto con varias varias palabras repetidas."
resultado5 = frecuencia_palabras(texto5)
print(f"\nFrecuencia de palabras en '{texto5}':\n{resultado5}")


Explicación del Código:

  1. import re:

    • Importa el módulo re para trabajar con expresiones regulares (para eliminar la puntuación).
  2. from collections import Counter:

    • Importa la clase Counter del módulo collections. Counter es una subclase de diccionario especialmente diseñada para contar objetos hashables.
  3. def frecuencia_palabras(texto)::

    • Define una función llamada frecuencia_palabras que toma una cadena de texto (texto) como entrada.
  4. texto = texto.lower():

    • Convierte el texto a minúsculas para que las palabras se cuenten sin distinción de capitalización.
  5. texto = re.sub(r'[^\w\s]', '', texto):

    • Utiliza una expresión regular para eliminar cualquier carácter que no sea una letra (\w), un número o un espacio en blanco (\s). Esto elimina la puntuación del texto.
  6. palabras = texto.split():

    • Divide el texto limpio en una lista de palabras, utilizando los espacios en blanco como delimitadores.
  7. return Counter(palabras):

    • Crea un objeto Counter a partir de la lista de palabras. El Counter automáticamente cuenta la frecuencia de cada palabra única en la lista y devuelve un diccionario donde las claves son las palabras y los valores son sus recuentos.

Ejemplos de Uso:

Los ejemplos muestran cómo la función calcula la frecuencia de las palabras en diferentes textos. El resultado es un diccionario que indica cuántas veces aparece cada palabra (en minúsculas y sin puntuación) en el texto.