11 min read · May 7, 2024

Deep dive: Solución de problemas heredados mediante IA

Deep dive: Solución de problemas heredados mediante IAEste artículo forma parte de una profunda inmersión en los problemas tecnológicos que nos encontramos y cómo los resolvemos en Decoders.
asd2

¿Qué hacer cuando los datos de tu blog se corrompen y la eliminación de este contenido perjudicaría seriamente tu puntuación SEO? Amenitiz se enfrentó a un grave problema con su blog durante la última migración a un nuevo servidor. Tienen 600 artículos de blog en 6 idiomas, que la gente escribió sobre temas que eran interesantes para la industria. Pero en algún punto del camino, perdieron todos los caracteres especiales "éíáiôèêî" e incluso "'" se perdió durante la migración desde un sistema heredado. Ahora, podrías enviar a 6 moderadores de contenido para arreglar estos 600 artículos. O puedes enviar a un tipo con un portátil a 👨‍💻.


Image https://decoders-content-production.s3.eu-central-1.amazonaws.com/media/cleaning_goal_min_45c0bf025d.png
asd2

El problema es un montón de caracteres rotos en un blog de WordPress. Primer paso: Obtener todos los datos. Por suerte, WordPress tiene una API disponible para obtener y actualizar su contenido. Esta API se puede utilizar para exportar datos y también para nuestro problema de actualización del contenido. Así que sacamos el mapa del sitio autogenerado de WordPress, llamamos a todas las entradas del blog individualmente y las guardamos localmente. Así que tenemos algo con lo que jugar.


asd2

El contenido contenía dos problemas que surgieron tras su última migración. Uno eran las URL absolutas en el contenido, que arreglamos haciendo un poco de búsqueda y reemplazo inteligente. Es bastante fácil, especialmente si sigues hablando con Github Copilot durante un rato. Puede ayudarte a encontrar las soluciones necesarias con bastante rapidez. Pero ahora, la parte difícil es encontrar un reemplazo adecuado para los caracteres � en el contenido. Estos caracteres se insertan cuando la codificación de una tabla está desactivada, y este carácter no tiene información sobre lo que era antes. Pueden aparecer en cualquier palabra, o incluso una sola letra puede convertirse en este carácter.


asd2

El problema es un montón de caracteres rotos en un blog de WordPress. Primer paso: Obtener todos los datos. Por suerte, WordPress tiene una API disponible para obtener y actualizar su contenido. Esta API se puede utilizar para exportar datos y también para nuestro problema de actualización del contenido. Así que sacamos el mapa del sitio autogenerado de WordPress, llamamos a todas las entradas del blog individualmente y las guardamos localmente. Así que tenemos algo con lo que jugar.



El contenido contenía dos problemas que surgieron tras su última migración. Uno eran las URL absolutas en el contenido, que arreglamos haciendo un poco de búsqueda y reemplazo inteligente. Es bastante fácil, especialmente si sigues hablando con Github Copilot durante un rato. Puede ayudarte a encontrar las soluciones necesarias con bastante rapidez. Pero ahora, la parte difícil es encontrar un reemplazo adecuado para los caracteres � en el contenido. Estos caracteres se insertan cuando la codificación de una tabla está desactivada, y este carácter no tiene información sobre lo que era antes. Pueden aparecer en cualquier palabra, o incluso una sola letra puede convertirse en este carácter.



A primera vista, encontrar un sustituto para una sola � es imposible; todos los caracteres especiales con los que no sabía qué hacer fueron sustituidos por este carácter. Así que intentemos ampliar el alcance a la palabra cl�vacances, tr�s vari�es, r�ver, sacr�, renomm�e, h�teli�res. Puede que te des cuenta de que estas entradas del blog son principalmente idiomas que utilizan muchos caracteres especiales como el francés y el portugués, y nuestro contenido trata sobre hoteleros, es decir, sobre el negocio de Amenitiz. Pero yo no hablo francés ni italiano. Así que tuve que buscar a alguien que sí lo hablara o a una IA que supuestamente es buena procesando idiomas para conseguir un sustituto para estas palabras.



Hablar con una IA suele hacerse verbalmente, planteando una pregunta y devolviendo una respuesta que podría dar una persona física. En realidad no es eso lo que quiero aquí; quiero decirle cuál es el problema [Solucione mi problema, por favor, necesito un sustituto para la palabra corrupta "h�teli�res"]. Respuesta [Parece ser un problema de codificación, la palabra correcta es "hôtelière"]. Hmm, útil pero bastante molesto para luego poder encontrar la respuesta en la respuesta. Así que, para empezar, añadí una entrada al sistema indicando que sólo debería devolver una palabra y una palabra o nada. Con algunas comprobaciones, obtuve un flujo de entrada-salida con el que podía trabajar en código.



Bien, ejecutémoslo... Alrededor del 60% de las veces, sale algo medio exacto. De nuevo, mi francés es bastante malo, así que hice que un colega lo comprobara. Pero eso resuelve el 60% de los caracteres raros, no el 100%. Veamos si podemos hacerlo mejor. Me di cuenta de que la IA sólo daba los resultados correctos si le dabas las instrucciones correctas. Así que intenté darle algo de contexto. Estas palabras rotas como h�teli�res se usan en una frase, por ejemplo:


Cette stabilité fait la renommée de ces chaînes h�teli�res de luxe, mais ne permet aucune personnalisation ciblée selon la clientèle.


Mediante un poco de regex y magia de codificación, miré hacia delante y hacia atrás en el texto para descifrar la frase, o al menos una gran parte.


Image https://decoders-content-production.s3.eu-central-1.amazonaws.com/media/cleaning_blog_pipeline_min_5a5df0003c.png
asd2

Ahora, juntándolo todo, la IA conoce la palabra que queremos arreglar y en qué idioma está; sólo me devolverá una palabra y tiene contexto sobre dónde se usa la palabra. Y ahora tenemos una solución lo bastante buena para funcionar a gran escala. Las pruebas iniciales mostraron soluciones correctas para el 95% de las preguntas que proporcioné. Empecé a almacenar todas las entradas y las respuestas de ChatGPT, para no hacer la misma pregunta dos veces. Al final, me gasté unos euros en créditos de OpenAI, lo que a los moderadores de contenidos les habría llevado días o semanas arreglar.



Si te ha gustado esta historia o tienes curiosidad por conocer más historias como esta, síguenos en LinkedIn.


Johannes SandersDeveloper @ Decoders