25. Normalización y Preprocesamiento de Datos para IA

This entry is parte 25 de 25 in the series Introducción a Microsoft Semantic Kernel

Introducción a Microsoft Semantic Kernel

1. Introducción a Semantic Kernel con C#: Construyendo tu Primera Aplicación de IA

2.Creando Plugins Personalizados en Semantic Kernel

3. Clasificación de Intenciones con LLMs en .NET

4. Servicios de Chat Completion con Azure OpenAI y Semantic Kernel

5. Vector Embeddings y Búsqueda Semántica con .NET

6. Prompt Engineering: Mejores Prácticas para LLMs

7. Integración de Azure OpenAI en Aplicaciones .NET

8. Configuración de Temperatura y Tokens en Modelos LLM

9. Estrategias de Caché para Servicios de IA

10. Manejo de Errores en Aplicaciones de IA con .NET

11. Salida JSON Estructurada con LLMs

12. Testing de Servicios de IA en .NET

13. Inyección de Dependencias con Semantic Kernel

14. Comprensión de Consultas con Lenguaje Natural

15. Sistemas de Búsqueda Semántica en Producción

16. Configuración de HttpClient para Servicios de IA

17. Guardrails y Validación en Sistemas de IA

18. Workflows Multi-Paso con IA

19. Optimización de Costos en Aplicaciones de IA

20. Monitoreo y Observabilidad de Servicios de IA

21. Arquitectura de Microservicios con IA

22. Seguridad en Aplicaciones de IA

23. Implementación de Routers Conversacionales Inteligentes

24. Filtrado por Relevancia Semántica en Búsquedas

25. Normalización y Preprocesamiento de Datos para IA

Introducción

La calidad de los datos es crucial para sistemas de IA. En este tutorial aprenderás técnicas de normalización y preprocesamiento que mejoran significativamente los resultados de tus modelos.

Normalización de Texto

public class TextNormalizer
{
    public string Normalize(string text)
    {
        if (string.IsNullOrWhiteSpace(text))
            return string.Empty;

        // 1. Lowercase
        text = text.ToLowerInvariant();

        // 2. Remover acentos
        text = RemoveAccents(text);

        // 3. Remover caracteres especiales
        text = RemoveSpecialCharacters(text);

        // 4. Normalizar espacios
        text = NormalizeWhitespace(text);

        return text.Trim();
    }

    private string RemoveAccents(string text)
    {
        var normalizedString = text.Normalize(NormalizationForm.FormD);
        var stringBuilder = new StringBuilder();

        foreach (var c in normalizedString)
        {
            var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c);
            if (unicodeCategory != UnicodeCategory.NonSpacingMark)
            {
                stringBuilder.Append(c);
            }
        }

        return stringBuilder.ToString().Normalize(NormalizationForm.FormC);
    }
}

Tokenización

public class Tokenizer
{
    private readonly HashSet<string> _stopWords = new()
    {
        "el", "la", "de", "que", "y", "a", "en", "un", "ser", "se", "no"
    };

    public List<string> Tokenize(string text, bool removeStopWords = true)
    {
        var tokens = text
            .Split(new[] { ' ', '\t', '\n', '\r', ',', '.', ';', ':', '!', '?' },
                StringSplitOptions.RemoveEmptyEntries)
            .Select(t => t.ToLowerInvariant())
            .Where(t => t.Length > 2);

        if (removeStopWords)
        {
            tokens = tokens.Where(t => !_stopWords.Contains(t));
        }

        return tokens.ToList();
    }
}

Limpieza de Datos

public class DataCleaner
{
    public string CleanBusinessHours(string hours)
    {
        // Normalizar horarios de negocio
        // "Lunes a Viernes: 9-14h" → "L-V: 09:00-14:00"
        return hours;
    }

    public string CleanPhoneNumber(string phone)
    {
        // Normalizar números de teléfono
        // "+34 666 123 456" → "666123456"
        return Regex.Replace(phone, @"[^\d]", "");
    }
}

Mejores Prácticas

  1. Normalizar antes de generar embeddings
  2. Mantener consistencia en todo el pipeline
  3. Documentar transformaciones aplicadas
  4. Validar datos antes y después de normalizar

Palabras clave: data normalization, text preprocessing, tokenization, data cleaning, NLP

Share this content:

Introducción a Microsoft Semantic Kernel

24. Filtrado por Relevancia Semántica en Búsquedas