- 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
- Normalizar antes de generar embeddings
- Mantener consistencia en todo el pipeline
- Documentar transformaciones aplicadas
- Validar datos antes y después de normalizar
Palabras clave: data normalization, text preprocessing, tokenization, data cleaning, NLP
Share this content: