Investigação de modelos neurais baseados na arquitetura Transformer para sumarização automática de código-fonte
dissertacao_mestrado
RESUMO: Sumarização de código-fonte é a tarefa de criar automaticamente uma descrição em linguagem natural de trechos de código-fonte como classes, métodos ou funções. Nos últimos anos, diversos modelos baseados em algoritmos de aprendizado profundo têm sido propostos na literatura para essa tarefa. Mais recentemente, a arquitetura Transformer permitiu o desenvolvimento de grandes modelos pré-treinados a partir de imensas bases de dados. A partir dessa arquitetura, deu-se origem aos modelos especializados nas tarefas de compreensão e na sumarização de código-fonte em linguagem natural. Neste trabalho, realizou-se uma investigação comparativa entre quatro modelos neurais baseados na arquitetura Transformer (CodeBERT, CodeT5, CodeTrans e PLBART) do estado da arte para a tarefa de sumarização de código-fonte. Para isso, experimentos foram realizados utilizando quatro bases de dados comumente usadas na literatura contendo funções implementadas nas linguagens de programação Java e Python e seus respectivos resumos. Os experimentos foram realizados equalizando os parâmetros de execução e de treinamento desses modelos, para gerar os resultados com a maior isonomia possível. Inicialmente, experimentos foram executados utilizando os modelos pré-treinados e os resultados experimentais demonstraram que o modelo CodeTrans obteve os melhores resultados em diferentes medidas de avaliação, tanto para a linguagem Java como para Python. Além disso, os resultados também apontaram que os modelos aplicados na linguagem Java, obtiveram resultados superiores caso sejam executados com um conjunto de dados pré-processados com técnicas de fragmentação dos tokens do código-fonte, baseado nas regras de Camel-case e Snake-case. No entanto, o mesmo não é aplicável à linguagem Python, onde os modelos apresentaram melhores resultados quando aplicados nas bases de dados sem nenhuma fragmentação dos tokens. Em um segundo experimento, foram avaliadas as similaridades das descrições geradas pelos diferentes modelos e estratégias de pré-processamento das bases de dados e observou-se que os resumos gerados apresentam uma baixa similaridade quando comparados com outros modelos. Em um terceiro experimento, foi analisado o desempenho dos modelos após o processo de ajuste fino nas bases de dados utilizadas neste trabalho. Além disso, foram investigadas três estratégias para a seleção do melhor modelo, durante o processo de treinamento, que são: minimizar a função de perda e maximizar as medidas de avaliação ROUGE-L e BLEU-4 suavizada. Essas últimas são normalmente medidas adotadas para avaliar sistemas dessa área de estudo. Os resultados desse último experimento demonstraram que houve melhorias significativas após o ajuste fino dos modelos em ambas as bases de dados adotadas e que os modelos PLBART e CodeTrans obtiveram melhor desempenho em relação aos demais modelos avaliados, especialmente utilizando a medida BLEU-4 para selecionar o melhor modelo.
ABSTRACT: Source code summarization is the task of automatically creating a natural language description of source code snippets such as classes, methods or functions. Several models based on deep learning algorithms have been proposed in the literature for this task in recent years. More recently, the Transformer architecture allowed the development of large pre-trained models from huge databases. This architecture gave rise to models specialized in the tasks related to understanding and generating source code and natural language and vice versa. In this work, a comparative investigation was carried out between four state-of-the-art neural models based on the Transformer architecture (CodeBERT, CodeT5, CodeTrans and PLBART) for the source code summarization task. Experiments were performed using four databases commonly adopted in the literature containing functions implemented in Java and Python programming languages and their summaries. The experiments were carried out by equalizing the execution and training parameters of these models, seeking to generate the results with the greatest possible isonomy. Initially, experiments were performed using the pre-trained models, and the experimental results demonstrated that the CodeTrans model obtained the best results based on different evaluation measures, both for Java and Python programming languages. In addition, the results also showed that the models applied in the Java language obtained superior results when executed after a pre-processed step applying tokenization techniques on the tokens of the source code based on Camel-case and Snake-case. However, the same behaviour does not apply to the Python language, where the models showed better results without the tokenization pre-processing. In a second experiment, the similarities of the descriptions generated by the different models and pre-processing strategies of the databases were evaluated, and it was observed that the generated summaries present a low similarity when compared with other models. In a third experiment, the performance of the models after a fine-tuning process in the databases used in this work was analyzed. Furthermore, three strategies for selecting the best model during the training process were investigated, minimizing the loss function and maximizing the ROUGE-L and smoothed BLEU-4 evaluation measures, normally adopted to evaluate code summarization systems. This last experiment showed that the models achieved significant improvements after fine-tuning in both adopted databases. The PLBART and CodeTrans models performed better than the other evaluated models, especially using the BLEU-4 measure to select the best model during the fine-tuning training steps.
Redes Sociais