3 usuarios conectados

Encontrar palabra más frecuente. Ejercicio en Python

Comparte esto

 

Escribe una función en Python llamada encontrar_palabra_mas_frecuente que tome una cadena de texto como entrada y devuelva la palabra que aparece con mayor frecuencia en el texto. Se deben ignorar las mayúsculas y minúsculas, y la puntuación al final de las palabras no debe afectar el conteo. Si hay varias palabras con la misma frecuencia máxima, la función puede devolver cualquiera de ellas.



Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: Encontrar palabra más frecuente

📋 Copiar código



import re
from collections import Counter

def encontrar_palabra_mas_frecuente(texto):
  """
  Encuentra la palabra más frecuente en una cadena de texto.

  Args:
    texto: La cadena de texto de entrada.

  Returns:
    La palabra que aparece con mayor frecuencia en el texto (en minúsculas
    y sin puntuación final).
  """
  palabras = re.findall(r'\b\w+\b', texto.lower())
  palabras_limpias = [re.sub(r'[.,!?;:"\'()\[\]{}]*$', '', palabra) for palabra in palabras]
  contador_palabras = Counter(palabras_limpias)
  if contador_palabras:
    return contador_palabras.most_common(1)[0][0]
  else:
    return None

# Ejemplos de uso
texto1 = "Este es un texto de ejemplo. Este texto tiene varias palabras. Ejemplo texto."
palabra_frecuente1 = encontrar_palabra_mas_frecuente(texto1)
print(f"La palabra más frecuente en '{texto1}' es: '{palabra_frecuente1}'")

texto2 = "La casa azul y la casa roja."
palabra_frecuente2 = encontrar_palabra_mas_frecuente(texto2)
print(f"La palabra más frecuente en '{texto2}' es: '{palabra_frecuente2}'")

texto3 = "Palabra palabra, otra palabra!"
palabra_frecuente3 = encontrar_palabra_mas_frecuente(texto3)
print(f"La palabra más frecuente en '{texto3}' es: '{palabra_frecuente3}'")

texto4 = ""
palabra_frecuente4 = encontrar_palabra_mas_frecuente(texto4)
print(f"La palabra más frecuente en '{texto4}' es: '{palabra_frecuente4}'")

 

Explicación del Código:

  1. Importación de módulos:

    • import re: Importa el módulo de expresiones regulares para encontrar palabras en el texto.
    • from collections import Counter: Importa la clase Counter del módulo collections, que es especialmente útil para contar la frecuencia de elementos en una lista.
  2. Definición de la función encontrar_palabra_mas_frecuente(texto):

    • Se define una función llamada encontrar_palabra_mas_frecuente que toma una cadena de texto texto como argumento.
  3. Extracción y limpieza de palabras:

    • palabras = re.findall(r'\b\w+\b', texto.lower()): Se encuentran todas las palabras en el texto (convertido a minúsculas) utilizando una expresión regular que busca secuencias de caracteres alfanuméricos delimitadas por límites de palabra.
    • palabras_limpias = [re.sub(r'[.,!?;:"\'()\[\]{}]*$', '', palabra) for palabra in palabras]: Se crea una nueva lista llamada palabras_limpias iterando sobre la lista palabras. Para cada palabra, se elimina cualquier signo de puntuación que aparezca al final de la palabra utilizando re.sub().
  4. Conteo de la frecuencia de las palabras:

    • contador_palabras = Counter(palabras_limpias): Se crea un objeto Counter a partir de la lista palabras_limpias. Counter automáticamente cuenta la frecuencia de cada elemento único en la lista y lo almacena en un diccionario.
  5. Obtención de la palabra más frecuente:

    • if contador_palabras:: Se verifica si el contador_palabras no está vacío (es decir, si el texto contenía al menos una palabra).
    • return contador_palabras.most_common(1)[0][0]:
      • contador_palabras.most_common(1) devuelve una lista con los n elementos más comunes y sus conteos, en este caso, solo el elemento más común (una lista de un solo tuple). El tuple contiene la palabra y su frecuencia.
      • [0] accede al primer (y único) tuple en la lista.
      • [0] accede al primer elemento del tuple, que es la palabra más frecuente.
    • else: return None: Si el texto estaba vacío y contador_palabras está vacío, la función devuelve None.
  6. Ejemplos de uso:

    • Se proporcionan varios ejemplos de cadenas de texto para probar la función, incluyendo casos con repeticiones y puntuación.
    • Para cada ejemplo, se llama a la función y se imprime la palabra más frecuente encontrada. Se incluye un caso con una cadena vacía para mostrar el manejo de esa situación.