Título: «Modelos de generación de comentarios de código basados en transformers”
Tesista: Cristian Martín Vincenzini
Directora: Esp. Sandra Roger
Fecha de la defensa: 3 de octubre de 2023
Resumen
Los comentarios de código son fragmentos de texto que se incluyen en el código fuente de un programa, pero que no se ejecutan ni afectan el funcionamiento del mismo. Su principal propósito es proporcionar documentación sobre el código escrito, facilitando la comprensión tanto para el programador original como para otros desarrolladores que puedan leer o modificar el código en el futuro. Sin embargo, en muchos casos estos comentarios no reflejan con exactitud el código que describen, pueden ser insuficientes, estar desactualizados, o en última instancia no existir en absoluto. En cualquiera de estos escenarios el código escrito resulta difícil de entender, corregir y mantener en el tiempo. Con la intención de mitigar los problemas mencionados, en este trabajo se aborda el desafío de asistir al programador para generar -de manera automática- comentarios claros y relevantes que permitan describir un fragmento de código a su elección.
El enfoque para cumplir con el objetivo propuesto consistió en entrenar un modelo de aprendizaje automático con el cual el desarrollador pueda interactuar, enviando código y recibiendo
la descripción del mismo. Para la selección del modelo inicialmente se probó uno basado en redes
neuronales recurrentes, pero debido a sus limitaciones se optó por una arquitectura denominada transformer. Por otro lado, para que el desarrollador pueda interactuar, se diseñó una extensión para un editor de código que comunica al modelo con el código a través de un back-end.
Para entrenar la arquitectura se crearon dos conjuntos de datos, uno con código escrito en PROLOG y el otro con funciones escritas en GO. Los modelos generados fueron luego evaluados utilizando métricas automáticas y se estableció un modelo de referencia.
Los resultados obtenidos en esta investigación revelan que el modelo especializado en el lenguaje GO superó en rendimiento al modelo de referencia. En cuanto al modelo de PROLOG, aunque los resultados fueron inferiores en las métricas establecidas, se introdujo posteriormente una métrica adicional de similitud semántica que demostró que las descripciones generadas mantienen una alta semejanza con las referencias humanas.
El enfoque para cumplir con el objetivo propuesto consistió en entrenar un modelo de aprendizaje automático con el cual el desarrollador pueda interactuar, enviando código y recibiendo
la descripción del mismo. Para la selección del modelo inicialmente se probó uno basado en redes
neuronales recurrentes, pero debido a sus limitaciones se optó por una arquitectura denominada transformer. Por otro lado, para que el desarrollador pueda interactuar, se diseñó una extensión para un editor de código que comunica al modelo con el código a través de un back-end.
Para entrenar la arquitectura se crearon dos conjuntos de datos, uno con código escrito en PROLOG y el otro con funciones escritas en GO. Los modelos generados fueron luego evaluados utilizando métricas automáticas y se estableció un modelo de referencia.
Los resultados obtenidos en esta investigación revelan que el modelo especializado en el lenguaje GO superó en rendimiento al modelo de referencia. En cuanto al modelo de PROLOG, aunque los resultados fueron inferiores en las métricas establecidas, se introdujo posteriormente una métrica adicional de similitud semántica que demostró que las descripciones generadas mantienen una alta semejanza con las referencias humanas.