Requerimientos

Uno de los aspectos que subraya el equipo de desarrollo con respecto a los requerimientos para el óptimo funcionamiento de los modelos, tiene que ver con la infraestructura; en efecto, es necesario que la máquina donde se ejecute el modelo tenga buenos recursos en cuanto a memoria RAM. El equipo recomienda unos mínimos de RAM de 8 GB tanto para el entrenamiento como para el uso del modelo.

Se puede configurar el modelo para que se entrene en un servidor GPU, con el fin de que entrene más rápido; no obstante, los modelos de detección de entidades no son tan complejos como, por ejemplo, extraer texto de un audio; en este sentido, no se necesita un stock tecnológico tan robusto.

Limitaciones y alcances

✔️ El dialecto y los diferentes acentos de Colombia, son una limitante en función de la identificación de entidades; sin embargo, en la medida en que se siga entrenando el modelo con mayor información, las métricas de calidad irán subiendo.

✔️ Las etiquetas usadas para el entrenamiento deben estar limpias (espacios y/o puntos al inicio o al final), con el fin de optimizar el proceso de preparación de los datos. El proceso para la limpieza de etiquetas puede hacerse de manera automática, limpiando y ajustando el número de caracteres. Para el modelo NER y el script de entrenamiento, la limpieza de las etiquetas se realiza de manera automática para las entrevistas acopiadas por la Comisión de la Verdad; si se quiere entrenar con otro tipo de datos, es necesario reajustar el script y el proceso de preparación de los datos.

Limpiar y ordenar los datos es uno de los retos técnicos que señala el equipo de ingenieros como importante, ya que se instaura como la base para un proceso de entrenamiento exitoso. Un mal entrenamiento puede llevar a que el modelo deje de funcionar correctamente.

✔️ Se debe ser muy exigente en el proceso de etiquetado; las etiquetas deben estar bien marcadas en tanto son la base para el proceso de entrenamiento. Las etiquetas mal marcadas pueden generar ruido dentro del entrenamiento del modelo (por ejemplo, el modelo comienza a devolver entidades superpuestas). En este sentido, por ejemplo, si bien el modelo detecta tanto personas como roles (profesiones), en ocasiones no diferencia entre uno u otro, y los detecta como personas; esto es así debido a la estructura del etiquetado ya que, en ocasiones, no separa ambos conceptos y los agrupa en una sola categoría.

Yo tenía unos errores que no había podido identificar; y me di cuenta que un error me salió porque el etiquetado, por ejemplo, etiquetaba FARC, pero etiquetaba el espacio que sigue después de FARC y la primera letra de la siguiente palabra. Ahí tuvieron un error; entonces, es muy complicado, porque si yo le digo límpieme los espacios al inicio y al final, si hay un espacio en la mitad, no lo va a tomar...

✔️ El modelo funciona muy bien para el reconocimiento de entidades; no así para el etiquetado. Según el equipo de ingenieros, un modelo que genere un etiquetado automático conlleva un nivel mayor de complejidad dentro de las estrategias de entrenamiento. Al igual que el modelo NER, ya existen modelos para detectar emociones y sentimientos, y pueden ser entrenados con este fin; sin embargo, es necesario desarrollar estrategias de entrenamiento en función de nuestro contexto dialéctico.

✔️ El proceso de anonimización presenta algunos errores que deben mejorarse a partir de otra estrategia de entrenamiento; por el tiempo de la Comisión de la Verdad, no es posible desarrollar esta nueva estrategia. Al cierre de esta documentación, según señalan los ingenieros, hay partes dentro de las entrevistas donde se reafirma el nombre de una persona (por ejemplo, dice su nombre el entrevistado y vuelve y lo repite el entrevistador), y estos apartes quedan sin anonimizar; según sugiere el equipo, es posible mejorar el modelo ampliando el espectro: tomando la frase anterior y la frase que le sigue, con el fin de que detecte la entidad en ambos momentos.

Metodología de entrenamiento

✔️ El modelo NER usa la metodología Machine Learning; es decir, es un modelo que va aprendiendo a partir de unos datos: entre más datos se integren a su proceso de entrenamiento, se obtienen unas métricas elevadas en función de resultados. En este sentido, obtener buenos resultados depende de las estrategias y de los datos implementados para el proceso de entrenamiento.

Según el equipo de ingenieros, la estrategia de entrenamiento usada para este modelo consiste en ajustar ciertos valores a partir de la representación numérica de las palabras. En este sentido, es importante resaltar que el modelo se sobreentrena con los vectores que se van generando; es decir, no existen palabras o nombres, sino la representación numérica con la cual se va ajustando la identificación de caracteres. Para este fin se siguen los siguientes pasos:

  1. Creación de grupos de frases con los conjuntos de entidades definidas e identificadas. Si se pasa solo la palabra, el modelo se queda sin contexto. Por ejemplo, con la entidad Barbosa: tenemos municipio Barbosa y fiscal Barbosa; para evitar este conflicto es menester contextualizar a partir de frases.

  2. Limpiar las etiquetas: algunas tienen espacios o puntos, al inicio o al final, que generan ruido dentro del ajuste de caracteres.

  3. Una vez se han limpiado y ajustado las etiquetas y las frases, se debe definir la posición de las entidades: en cuál caracter comienza y en cuál caracter termina la entidad dentro de la frase.

  4. Con las entidades generadas, se identifican: cuáles se superponen, cuáles se repiten y cuáles son entidades nuevas; con este proceso se generan nuevos grupos y se repite el proceso.

✔️ Esta metodología de entrenamiento se encuentra en el script NER_Entrenamiento.py, es un entrenamiento que ya está probado y funciona para el corpus de entrevistas de la Comisión de la Verdad. El repositorio donde se encuentra el script es:

sim-data-processing/-/blob/develop/procesado-general

El trabajo realizado por la Comisión de la Verdad parte de un modelo pre-entrenado, al cual se le ajustaron algunos valores para que identificara ciertos rangos; esto es lo que llamamos estrategia de entrenamiento.

✔️ La metodología de entrenamiento se alimenta de una clase creada por los ingenieros llamada herramientas.py; con esta clase se realiza el limpiado del texto (quitar espacios y puntos), y la devolución de frases y párrafos.

✔️ El script de entrenamiento está parametrizado con el fin de delimitar ciertos aspectos, entre los que se destacan: el entorno del cual se cogen los datos (QA o producción); el modelo de entrada, con el fin de no sobreentrenar un modelo que esté funcionando correctamente; y, finalmente, el número de ciclos de entrenamiento y el tamaño del muestreo de entrevistas. Con respecto a este último punto, es importante resaltar que el entrenamiento también llega a un punto de pérdida; es decir, la curva se estanca y el modelo no sigue mejorando así se entrene indefinidamente con la misma estrategia.

Tecnologías usadas

  • Librería de uso libre spaCy; versión 3.3

  • Python; versión 3.9.6

  • Dentro de Python se usa la librería Path; versión 16.4

  • La base de datos a la cual se conectan los script es MongoDB

Posibilidades de mejora

✔️ Dentro de las opciones de mejora que señala el equipo de ingenieros, se encuentra la posibilidad de seguir entrenando el modelo para que la métrica suba en función de los resultados. Al momento de la entrega, el modelo identifica bien algunas entidades; sin embargo, es posible seguirlo mejorando implementando nuevas estrategias de entrenamiento y/o más fuentes de datos (ya no entrevistas). Esto se define debido a que, a nivel de anonimización, el modelo presenta algunos errores que deben corregirse con otras estrategias de entrenamiento.

✔️ Otra posibilidad se halla en la base de datos: correr el modelo para que etiquete los documentos (no solo las entrevistas) en función de ubicación y franjas temporales. Al cierre de esta documentación, se plantea como posibilidad de mejora poder actualizar los metadatos de la mayor parte del universo de información que existe en las bases de datos de la Comisión de la Verdad. Es decir, si bien se deja el script (NERtoMongo.py) que realiza este proceso, queda pendiente su implementación en el motor de búsqueda para que actualice los documentos en función de estas entidades.

✔️ Una posibilidad de mejora que señala el equipo de ingenieros, consiste en desarrollar una interfaz colaborativa para corregir y ajustar datos que sirvan de base para seguir entrenando el modelo. En otras palabras, se deja una propuesta abierta para desarrollar un aplicativo que despliegue diariamente, a través de una interfaz o mensajería instantánea, las entidades que detecta el modelo a partir de textos específicos (fragmentos de entrevistas, por ejemplo), con el fin de que la ciudadanía corrija los errores y, sobre esas correcciones, se estructure un feedback que permita sobreentrenar el modelo.

Por ejemplo, tú entras al archivo, que vendría siendo el buscador, entras al buscador y lo primero que sale es algo distinto cada día; entonces, te sale un pedazo de texto con las etiquetas que detecta automáticamente el modelo y te pregunta: ¿estas etiquetas están bien o no? “Ayúdanos a corregir el modelo de entidades”...

Este proceso colaborativo también puede servir para mejorar el modelo ASR; es decir, desarrollar una interfaz que permita filtrar fragmentos de audio, con el fin de que las personas generen una transcripción colaborativa y, a partir de allí, seguir sobreentrenando el modelo. Este proceso lo denomina el equipo de ingenieros como "Ayuda a escuchar a la Comisión de la Verdad".

Última actualización