1 usuario conectado

De cadena de texto a diccionario en Python

Comparte esto

 
Escribe un código Python que tome una cadena de texto y devuelva un diccionario donde las claves sean las palabras únicas que aparecen en la cadena (ignorando mayúsculas y minúsculas) y los valores sean la frecuencia con la que aparece cada palabra.

.


Más ejercicios




Mostrar/Ocultar ejercicio resuelto


  Solución al Ejercicio: De cadena de texto a diccionario

📋 Copiar código


import re
from collections import Counter

def contar_frecuencia_palabras(texto):
  """
  Toma una cadena de texto y devuelve un diccionario con la frecuencia de cada palabra única (ignorando mayúsculas/minúsculas).

  Args:
    texto: La cadena de texto a analizar.

  Returns:
    Un diccionario donde las claves son las palabras únicas en minúsculas y los valores son su frecuencia.
  """
  texto = texto.lower()  # Convertir todo el texto a minúsculas para ignorar la capitalización
  palabras = re.findall(r'\b\w+\b', texto)  # Encontrar todas las palabras usando expresiones regulares
  frecuencia = Counter(palabras)  # Usar Counter para contar la frecuencia de cada palabra
  return dict(frecuencia)

# Ejemplo de uso
mi_texto = "Esta es una frase de ejemplo. Esta frase tiene algunas palabras repetidas como esta y frase."
frecuencias = contar_frecuencia_palabras(mi_texto)
print(f"Texto original: {mi_texto}")
print(f"Frecuencia de palabras: {frecuencias}")

otro_texto = "El perro ladra. El gato maulla."
otras_frecuencias = contar_frecuencia_palabras(otro_texto)
print(f"Texto original: {otro_texto}")
print(f"Frecuencia de palabras: {otras_frecuencias}")


Explicación del Código:

  1. import re:

    • Importa el módulo re (regular expression), que proporciona soporte para trabajar con expresiones regulares. Las expresiones regulares son patrones que se utilizan para buscar y manipular texto de manera eficiente.
  2. from collections import Counter:

    • Importa la clase Counter del módulo collections. Counter es una subclase de diccionario que está especialmente diseñada para contar la frecuencia de elementos en una lista o iterable.
  3. def contar_frecuencia_palabras(texto)::

    • Define una función llamada contar_frecuencia_palabras que toma una cadena de texto (texto) como argumento.
  4. """Docstring...""":

    • Una cadena de documentación que explica la función, sus argumentos y lo que devuelve.
  5. texto = texto.lower():

    • Convierte toda la cadena de texto a minúsculas utilizando el método lower(). Esto asegura que las palabras como "Esta" y "esta" se consideren la misma palabra al contar la frecuencia.
  6. palabras = re.findall(r'\b\w+\b', texto):

    • Utiliza la función re.findall() para encontrar todas las palabras en el texto.
    • r'\b\w+\b' es la expresión regular:
      • \b: Coincide con un límite de palabra (la posición entre un carácter de palabra y un carácter que no es de palabra). Esto ayuda a asegurar que solo se capturen palabras completas.
      • \w+: Coincide con uno o más caracteres de palabra (letras, números y guion bajo).
    • El resultado es una lista llamada palabras que contiene todas las palabras encontradas en el texto.
  7. frecuencia = Counter(palabras):

    • Crea un objeto Counter llamado frecuencia a partir de la lista palabras. Counter automáticamente cuenta la frecuencia de cada elemento único en la lista. El resultado es un objeto similar a un diccionario donde las claves son las palabras y los valores son sus recuentos.
  8. return dict(frecuencia):

    • Convierte el objeto Counter frecuencia a un diccionario estándar de Python utilizando dict(). La función devuelve este diccionario.

     

  9. Ejemplo de uso:

    • Se definen dos cadenas de texto de ejemplo (mi_texto y otro_texto).
    • Se llama a la función contar_frecuencia_palabras con cada texto y el resultado se almacena en las variables frecuencias y otras_frecuencias.
    • Finalmente, se imprimen el texto original y el diccionario de frecuencia de palabras para cada caso.

.