Saltar al contenido principal

💰 Modelo Bag of Words

Es un método que se utiliza para representar documentos como un conjunto de palabras, ignorando el orden y la estructura, centrándose solo en la presencia de palabras.

⭐ Importancia del modelado de texto

Es fundamental en el análisis de texto, ya que simplifica la complejidad al tratar el texto como una colección de palabras únicas, permitiendo la comparación y clasificación de documentos.

📝 Detalles del proceso

El modelado de texto con Bag of Words implica:

  • Tokenizar el texto.
  • Construir un vocabulario.
  • Representar el texto como un vector de frecuencias de palabras.
  • Aplicar técnicas de NLP y aprendizaje automático.

🔧 Ejemplo práctico

Resultados esperados: se obtiene un vector numérico que representa la presencia de términos en el documento, permitiendo analizar la similitud entre distintos textos.

Aplicación en la industria: un ejemplo real sería la clasificación de correos electrónicos como spam o no spam mediante el conteo de palabras clave utilizando el modelo Bag of Words.

✅ Ventajas del modelo Bag of Words

  • Permite una fácil implementación y comprensión.
  • Es eficiente para grandes conjuntos de datos textuales.
  • Es útil en tareas como clasificación de textos y análisis de sentimientos.
  • Facilita la comparación de documentos.
  • Es eficaz para documentos cortos.
  • Permite identificar términos clave en un texto de manera sencilla.

❌ Limitaciones

  • Este modelo no considera el significado contextual de las palabras.
  • Puede haber problemas con palabras homónimas.
  • La dimensionalidad de los vectores puede afectar la eficacia en textos largos.

➡️ Pasos para construir el modelo BoW

Paso 1: Recopilar y preparar los datos

  • Reúne el texto que deseas analizar.
  • Limpia el texto eliminando caracteres especiales, convirtiendo a minúsculas, etc.
texto = '''El perro marron corre por el parque todos los dias. El perro juega con otros perros y siempre encuentra algo interesante en el parque. A veces, el perro se sienta bajo un árbol y observa a las personas que pasan por el parque.'''

# Convertir el texto a minúsculas
texto = texto.lower()

import re # Expresiones regulares para limpiar el texto

# Obtener los documentos antes de la normalización completa
documentos = nltk.sent_tokenize(texto)

# Sustituir caracteres no alfabéticos por espacios
texto = re.sub(r"\W", " ", oracion)

# Eliminar espacios múltiples
texto = re.sub(r"\s+", " ", oracion)

Paso 2: Tokenización

  • Divide el texto en palabras individuales (tokens).
  • Elimina palabras vacías (stopwords).
# Librería necesaria
import nltk
# Tokenizar la oración
palabras = nltk.word_tokenize(texto)

Paso 3: Eliminar palabras vacías (stopwords)

# Librería necesaria
from nltk.corpus import stopwords

# Obtener lista de palabras vacías en el idioma indicado
stop_words = stopwords.words("spanish")

# Filtrar palabras vacías del texto
palabras = [w for w in palabras if w not in stop_words]

Paso 4: Construir el vocabulario

  • Crea una lista de todas las palabras únicas en el corpus.
# Construir el vocabulario guardando una vez cada palabra restante
vocabulario = set(palabras)

Paso 5: Contar las frecuencias

  • Cuenta cuántas veces aparece cada palabra en cada documento.
from collections import Counter

# Obtener las frecuencias de las palabras
frecuencias = dict(Counter(palabras))

Paso 6: Crear el vector BoW

  • Representa cada documento como un vector de frecuencias de palabras.
# Crear un diccionario para la matriz
diccionario = {}

# Iterar sobre cada oración
for oracion in oraciones:
# Agregar la oración al diccionario
if "Oración" not in diccionario:
diccionario["Oración"] = []
diccionario["Oración"].append(oracion)

# Iterar sobre cada palabra
for palabra in frecuencias.keys():
if palabra not in diccionario:
diccionario[palabra] = []

# Añadir 1 si la palabra está en la oración, 0 si no está
diccionario[palabra].append(1 if palabra in oracion else 0)

Extra: Visualizar en tabla

# Convertir el diccionario a un DataFrame
matriz = pd.DataFrame(diccionario)
print(matriz)
Oraciónperroparquemarroncorredíasjuegaencuentrainteresantevecesárbol
el perro marron corre por el parque todos los dias.1111100000
el perro juega con otros perros y siempre encuentra algo interesante en el parque.1100011100
a veces el perro se sienta bajo un árbol y observa a las personas que pasan por el parque.1100000011