Entraînement multilingue pour l'ingénierie logicielle

Les modèles d'apprentissage automatique bien entraînés, qui exploitent de grandes quantités de données provenant de logiciels open source, sont désormais une approche prometteuse pour automatiser de nombreuses tâches du génie logiciel. Plusieurs tâches du génie logiciel ont été soumises à cette approche, dont les performances se sont progressivement améliorées au cours des dernières années grâce à l'évolution des modèles et des méthodes d'entraînement. Plus les données propres, étiquetées et diversifiées sont abondantes, mieux c'est pour l'entraînement ; toutefois, la construction de jeux de données de haute qualité est longue et complexe. Les méthodes permettant d'accroître le volume et la diversité des données propres et étiquetées présentent généralement une large applicabilité. Pour certaines langues (par exemple Ruby), les données étiquetées sont moins abondantes ; pour d'autres (par exemple JavaScript), les données disponibles peuvent être davantage concentrées sur certains domaines d'application, entraînant ainsi une moindre diversité. Pour contourner ces goulets d'étranglement liés aux données, nous présentons des preuves suggérant que le code rédigé par des humains dans différentes langues (et ayant la même fonction) présente une grande similarité, notamment en ce qui concerne les motifs de nommage des identificateurs ; nous apportons également des preuves indiquant que les identificateurs constituent un élément essentiel des données d'entraînement pour les tâches du génie logiciel. Nous exploitons ce phénomène relativement fortuit afin de montrer que les données d'entraînement multilingues disponibles (à travers différentes langues) peuvent être utilisées pour amplifier les performances. Nous étudions cette approche sur trois tâches différentes : la génération de résumés de code, la recherche de code et la nomination de fonctions. Nous notons que cette méthode d'augmentation des données est largement compatible avec différentes tâches, langues et modèles d'apprentissage automatique.