Logo de CursoIA
CursoIA Curso de Inteligencia Artificial

Procesamiento de texto con Python, Unidad 11 — Preparar texto para NLP y ML, 11.1 — Texto como input de modelos ·

Normalización controlada

Normalización controlada

Introducción

En el procesamiento de lenguaje natural (NLP), la preparación adecuada del texto es crucial para que los modelos de aprendizaje automático (ML) y las técnicas de NLP funcionen correctamente. La normalización se refiere a cualquier transformación sistemática aplicada al texto antes de su uso en un modelo. Normalizar el texto implica asegurarnos de que todos los documentos o fragmentos de texto estén en un formato consistente, lo cual es fundamental para obtener resultados precisos y predecibles.

El procesamiento controlado se refiere a una serie de pasos bien definidos e iterativos que garantizan la coherencia en el manejo del texto. Es importante distinguir entre normalización (transformación sistemática) y limpieza (eliminación o modificación). La normalización controlada no sólo limpiará el texto, sino que también lo ajustará a los estándares esperados para un uso efectivo en modelos de NLP.

Explicación principal con ejemplos

La normalización controlada implica varios pasos críticos. Vamos a ver algunos de ellos:

Transformación del formato

Por ejemplo, si tenemos un texto en formato Markdown y queremos convertirlo a un formato que sea compatible con la entrada de nuestros modelos, podríamos utilizar la siguiente función en Python para convertir los encabezados en mayúsculas y reemplazar caracteres especiales por su representación HTML:

import re

def markdown_to_html(text):
    # Convertir encabezados a mayúsculas
    text = re.sub(r'(?<=\n)\s*#', '<h1>', text, flags=re.MULTILINE)
    text = re.sub(r'(?<=\n)(?=\s*##)', '<h2>', text, flags=re.MULTILINE)
    
    # Reemplazar caracteres especiales
    replacements = {
        '\n': '<br>',
        '*': '&ast;',
        '_': '&lowbar;',
        ' ': '&nbsp;'
    }
    for old, new in replacements.items():
        text = text.replace(old, new)
        
    return text

print(markdown_to_html("## Título\n* Lista"))

Tokenización y eliminación de stopwords

Una vez que el texto está en un formato compatible con los modelos, debemos tokenizarlo para dividirlo en unidades más pequeñas como palabras o frases. Además, es común eliminar las stopwords (palabras comunes sin significado) antes de pasar el texto a la siguiente fase:

from nltk.corpus import stopwords
import re

def preprocess_text(text):
    # Tokenización y eliminación de stopwords
    tokens = word_tokenize(text.lower())
    filtered_tokens = [token for token in tokens if token not in set(stopwords.words('spanish'))]
    
    return ' '.join(filtered_tokens)

text = "Es un placer trabajar con comoprogramar.es"
print(preprocess_text(text))

Normalización de tildes

En idiomas que utilizan caracteres con acentos, es importante normalizar los acentos para asegurar consistencia. Esto se puede hacer utilizando la biblioteca unidecode:

from unidecode import unidecode

def normalize_tildes(text):
    return unidecode(text)

text = "¡Bienvenidos al mundo de comoprogramar.es!"
print(normalize_tildes(text))

Standardización de mayúsculas y minúsculas

Es importante que todos los documentos o fragmentos de texto estén en el mismo formato. Esto puede implicar convertir todo a mayúsculas, minúsculas, o camelCase, según sea necesario:

def standardize_case(text):
    return text.lower()

print(standardize_case("¡Bienvenidos al Mundo de Comoprogramar.es!"))

Errores típicos / trampas

  1. Suponer que todas las palabras son importantes: Eliminar stopwords es útil, pero eliminar demasiadas palabras puede resultar en información perdida.
  2. No convertir a un formato consistente: Si no conviertes todos los documentos al mismo formato (por ejemplo, todos en mayúsculas), podrías introducir sesgos en tus modelos.
  3. Ignorar la estructura de texto: En algunos casos, el contexto y la estructura del texto pueden ser importantes para las tareas de NLP.

Checklist accionable

  1. Convertir todos los documentos al mismo formato (por ejemplo, mayúsculas).
  2. Tokenizar el texto en unidades más pequeñas.
  3. Eliminar stopwords irrelevantes.
  4. Normalizar acentos y caracteres especiales.
  5. Estandarizar el caso de las palabras.

Cierre con "Siguientes pasos"

Siguientes pasos

  • Representación vectorial del texto: Una vez que el texto está normalizado, puedes considerar representarlo en forma de vectores para su uso en modelos de aprendizaje automático.
  • NLP con Machine Learning: Aprende a usar algoritmos de ML como SVM o Random Forest para tareas de clasificación o agrupamiento.
  • NLP con Deep Learning: Explora cómo técnicas avanzadas de NLP, como BERT o transformers, pueden mejorar tus modelos.

Normalizar el texto es un paso crucial en el procesamiento de lenguaje natural. Al hacerlo correctamente, aseguras que los datos sean consistentes y útiles para tus modelos de aprendizaje automático. Sigue estos pasos y asegúrate de evitar los errores comunes para obtener los mejores resultados posibles.

Contacto

Indica tu objetivo (ChatGPT, RAG, agentes, automatización) y tu stack (web/backend).