Uma Rede Convolutional de Atenção para sumarização extrema do código-fonte
Por: Nilton Silva • 19/12/2021 • Resenha • 403 Palavras (2 Páginas) • 89 Visualizações
Resenha Crítica
Uma Rede Convolucional de Atenção para sumarização extrema do código-fonte
Nesse artigo os autores M. Allamanis, H. Peng, e C. Sutton demonstram uma aplicação das redes neurais, mais especificamente modelos neurais de atenção, na engenharia de software. A rede neural convolucional utiliza um conjunto de camadas convolucionais para detectar padrões na entrada, entretanto eles utilizaram o modelo de atenção, que além de fazer o que uma rede normalmente faz, esse modelo identifica locais “interessantes” onde a atenção deve ser focada.
Esse modelo de rede neural foi aplicado ao problema de sumarização extrema, que basicamente consiste em tentar resumir um snippet de código-fonte (trecho de código) em um nome curto, conciso e descritivo. Já que o código fonte de um software vai muito além de um algoritmo que é processado por uma CPU, ele também é uma forma de comunicação entre as pessoas que desenvolvem, testam, e fazem as manutenções dos sistemas computacionais. Por isso é de suma importância, dar bons nomes as funções/métodos, pois é pelo nome que uma pessoa alheia a o código vai tentar entender qual a função desse trecho de código, essa importância é embasada por pesquisa feitas na engenharia de software. Então é nesse contexto que os autores tentam empregar os modelos de rede neural para efetuarem a sumarização extrema em códigos fontes.
Para isso foi utilizado os escopos de métodos (funções) existentes como os trechos de códigos que seriam processados, e os nomes desses métodos que foram escolhidos pelos seus desenvolvedores como a resposta esperada. Esses trechos de código foram retirados de projetos Java de código aberto do GitHub.
Depois que os dados coletados foram tratados, eles foram divididos de maneira uniforme e aleatória em conjuntos de treinamento, validação e teste. Foram utilizados cada projeto separadamente, onde foi treinando uma rede para cada um dos projetos.
Como resposta às entradas dos trechos de códigos, a rede retorna uma lista de sugestões para o nome do método/função. Para medir a qualidade dessas sugestões, foi calculado o grau de correspondência dessas sugestões com o nome esperado.
Obtiveram bons resultados onde a rede consegue prever, com um bom grau de precisão os nomes esperados.
Modelar e analisar trechos de código-fonte por meio de machine-learn poderá ter impactos diretos na engenharia de software. Facilitando assim a comunicação entre os envolvidos nos processo de um software, facilitando o entendimento de códigos fontes, prevenção de bugs. E abre o leque para inúmeras ferramentas que utilizam IA na engenharia de software.
...