Prédiction de code par alimentation d'arbres aux Transformers

Nous améliorons l’état de l’art en matière de précision de la prédiction du code (prédiction du jeton suivant), utilisée dans les systèmes d’autocomplétion. Tout d’abord, nous montrons qu’en utilisant l’architecture Transformer récemment proposée, même sans adaptation particulière, on obtient des performances supérieures à celles des systèmes neuronaux et non neuronaux précédents pour la prédiction du code. Ensuite, nous démontrons qu’en rendant l’architecture Transformer consciente de la structure syntaxique du code, on peut encore augmenter davantage l’écart de performance par rapport aux systèmes antérieurs. Grâce à cette approche, notre système basé sur le Transformer dépasse la précision d’un système basé sur un RNN (similaire à Hellendoorn et al., 2018) de 18,3 %, celle du système Deep3 (Raychev et al., 2016) de 14,1 %, et celle d’une adaptation de Code2Seq (Alon et al., 2018) pour la prédiction du code de 14,4 %.Dans cet article, nous présentons plusieurs méthodes permettant de transmettre l’information structurelle du code au Transformer, qui est fondamentalement conçu pour traiter des données séquentielles. Nous fournissons une évaluation expérimentale exhaustive de notre proposition, ainsi que d’alternatives de conception, sur un jeu de données standard en Python, ainsi que sur un corpus interne de Python utilisé par Facebook. Notre code ainsi que notre pipeline de préparation des données seront rendus disponibles en open source.