Python code generation from a natural language description
Génération de code Python à partir d'une description en langage naturel
par Nathanaël BEAU sous la direction de Benoît CRABBÉ
Thèse de doctorat en Informatique
ED 386 Sciences Mathematiques de Paris Centre

Soutenue le lundi 18 novembre 2024 à Université Paris Cité

Sujets
  • Analyse automatique (linguistique)
  • Apprentissage profond
  • Générateurs de code source (logiciels)
  • Traitement automatique du langage naturel

Les thèses de doctorat soutenues à Université Paris Cité sont déposées au format électronique

Consultation de la thèse sur d’autres sites :

https://theses.hal.science/tel-05154880 (Version intégrale de la thèse (pdf))
Theses.fr (Version intégrale de la thèse (pdf))

Description en anglais
Description en français
Mots clés
Génération de code, Traitement Automatique du Langage, Apprentissage profond, Parsing sémantique
Resumé
Historiquement, la génération de code informatique à partir de descriptions en langage naturel est une ambition clé en informatique, symbolisant une étape vers l'idéal de communication directe entre l'homme et la machine. Cette thèse examine les transformations récentes induites par l'émergence des modèles d'apprentissage profond, qui ont profondément modifié l'assistance au développement logiciel. Les grands modèles de langage, comme Github Copilot ou ChatGPT, illustrent cette révolution : dotés d'un nombre conséquent de paramètres, ils sont entraînés sur d'immenses corpus de textes et de codes, atteignant ainsi des niveaux de performance remarquables en génération de code. Toutefois, ces modèles présentent des limites significatives. Premièrement, malgré la structure formelle des langages de programmation, la validité syntaxique des codes générés n'est pas garantie, posant un défi majeur. De plus, les méthodes d'évaluation de ces systèmes restent superficielles, notamment dans le contexte de l'assistance au développement, où elles se réduisent souvent à des scores de correspondance syntaxique. Enfin, l'entraînement et l'utilisation de ces modèles requièrent des ressources considérables, limitant leur accessibilité pour la recherche et l'industrie. Cette recherche propose de surmonter ces défis par plusieurs approches. D'abord, elle explore le développement de modèles d'apprentissage profond qui intègrent la grammaire des langages de programmation pour assurer la validité syntaxique du code. Ensuite, un jeu de données spécialisé destiné à l'assistance au développement a été créé pour permettre une évaluation plus précise par des tests unitaires, essentiels pour la vérification objective du code généré. En conclusion, cette thèse propose une architecture assurant la validité syntaxique dotée d'une vaste base de données de code. Cette approche parvient à s'approcher des performances des grands modèles de langue tout en réduisant drastiquement le nombre de paramètres requis, facilitant considérablement son déploiement aussi bien dans le secteur industriel que dans le milieu académique.