.
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:
-
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.
-
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.
-
def
contar_frecuencia_palabras(texto):
:
- Define una función llamada
contar_frecuencia_palabras
que toma una cadena de texto (texto
)
como argumento.
-
"""Docstring..."""
:
- Una cadena de documentación que explica
la función, sus argumentos y lo que devuelve.
-
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.
-
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.
-
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.
-
return dict(frecuencia)
:
- Convierte el objeto
Counter
frecuencia
a un diccionario estándar de Python utilizando
dict()
. La función devuelve este diccionario.
-
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.
.