Outil de résumé du code source Funcom - Libération publique
Ce référentiel contient le code de publication public pour Funcom, un outil de résumé du code source. Le résumé du code est la tâche de générer automatiquement des descriptions de langage naturel du code source.
Leclair, A., McMillan, C., "Recommandations pour les ensembles de données pour la résumé du code source", dans Proc. de la conférence annuelle 2019 du chapitre nord-américain de l'Association for Computational Linguistics (NAACl'19), courte piste de papier de recherche, Minneapolis, États-Unis, 2-7 juin 2019.
Leclair, A., Jiang, S., McMillan, C., "Un modèle neuronal pour générer des résumés en langage naturel des sous-programmes de sous-programmes", dans Proc. de la 41e Conférence internationale ACE / IEEE sur le génie logiciel (ICSE'19), Montréal, QC, Canada, du 25 au 31 mai 2019.
https://arxiv.org/abs/1902.01954
Exemple échantillonné au hasard de la sortie du modèle AST-ATTENDGRU par rapport aux bons résumés manuscrits humains:
Sortie prototype - Référence humaine
Renvoie la durée du film - obtenez toute la longueur de ce film en quelques secondes
Écrivez une chaîne au client - Écrivez une chaîne à tous les clients connectés
Cette méthode est appelée pour indiquer la page suivante de la page - Appelez pour accéder explicitement à la page suivante à partir d'un seul tirage
Renvoie une liste de tous les ID qui correspondent au gène donné - obtenez une liste d'identifices de superfamille pour un nom de gène
Compare deux nœuds par leurs unk - Comparez les nœuds N1 et N2 par leur entrée DX
Cette méthode met à jour le panneau d'arborescence - met à jour le panneau d'arbre avec un nouvel arbre
Renvoie le nombre de résidus dans la séquence - Obtenez le nombre de résidus en interaction dans le domaine B
Renvoie True Si le réseau est trouvé - Retour True Si l'adresse INET passée correspond à un réseau qui a été utilisé
Message d'état du journal - enregistrez l'état du message actuel en tant qu'information
Ce référentiel est archivistique pour le papier ICSE'19 mentionné ci-dessus. C'est un bon endroit pour commencer, mais vous voudrez peut-être aussi regarder nos nouveaux projets:
https://github.com/aakashba/callcon-public
https://github.com/attn-to-fc/attn-to-fc
https://github.com/acleclair/icpc2020_gnn
Nous supposons Ubuntu 18.04, Python 3.6, Keras 2.2.4, Tensorflow 1.12. Votre milage peut varier sur différents systèmes.
Nous fournissons un ensemble de données de méthodes Java et de commentaires Java de 2,1 m, déjà nettoyées et séparées en ensembles de formation / Val / Test:
https://s3.us-East-2.amazonaws.com/icse2018/index.html
(Remarque: Ce document a maintenant plusieurs années. Veuillez consulter une mise à jour des données ici: https://github.com/aakashba/callcon-public)
Extraire l'ensemble de données dans un répertoire (/ scratch / est la valeur par défaut supposée) afin que vous ayez une structure de répertoire:
/scratch/funcom/data/standard/dataset.pkl
etc. conformément aux fichiers décrits sur le site ci-dessus.
Pour être cohérent avec les valeurs par défaut, créez les répertoires suivants:
/ scratch / funcom / data / outdir / modèles /
/ scratch / funcom / data / outdir / histories /
/ scratch / funcom / data / outdir / prédictions /
you@server:~/dev/funcom $ time python3 train.py --model-type=attendgru --gpu=0
Les types de modèles sont définis dans Model.py. La version ICSE'19 est AST-ATTENDGRU, si vous cherchez à la reproduire pour la comparaison avec vos propres modèles. Notez que les informations sur l'historique pour chaque époque sont stockées dans un fichier PKL, par exemple /scratch/funcom/data/outdir/histories/ATENDGRU_HIST_1551297717.pkl. L'entier à la fin du fichier est le moment de l'époque où la formation a commencé et est utilisée pour connecter l'historique, la configuration, le modèle et les données de prédiction. Par exemple, la formation à la participation à l'époque 5 produirait:
/scratch/funcom/data/outdir/histories/ATENDGRU_CONF_1551297717.pkl
/scratch/funcom/data/outdir/histories/ATENDGRU_HIST_1551297717.pkl
/scratch/funcom/data/outdir/Models/AttendGru_E01_1551297717.h5
/scratch/funcom/data/outdir/Models/AttendGru_E02_1551297717.h5
/scratch/funcom/data/outdir/Models/AttendGru_E03_1551297717.h5
/scratch/funcom/data/outdir/Models/AttendGru_E04_1551297717.h5
/scratch/funcom/data/outdir/Models/AttendGru_E05_1551297717.h5
Une bonne base de référence pour les travaux initiaux est le modèle Assemblant. Les commentaires dans le fichier (modèles / assistegru.py) expliquent son comportement en détail, et il s'entraîne relativement rapidement: environ 45 minutes par époque en utilisant la taille du lot 200 sur un seul quadro p5000, avec des performances maximales sur l'ensemble de validation à l'époque 5.
you@server:~/dev/funcom $ time python3 predict.py /scratch/funcom/data/outdir/models/attendgru_E05_1551297717.h5 --gpu=0
La seule entrée nécessaire pour prédire.py sur la ligne de commande est le fichier du modèle, mais les informations de configuration sont lues à partir des fichiers PKL mentionnés ci-dessus. Les prévisions de sortie seront écrites dans un fichier par exemple:
/scratch/funcom/data/outdir/predictions/predict-AttendGru_E05_1551297717.txt
Notez que la prédiction du processeur est possible en principe, mais par défaut, les modèles Assister et AST-ATTENDGRU utilisent CudnnGru au lieu de GRU standard, ce qui nécessite l'utilisation d'un GPU pendant la prédiction.
you@server:~/dev/funcom $ time python3 bleu.py /scratch/funcom/data/outdir/predictions/predict-attendgru_E05_1551297717.txt
Cela sortira un score BLEU pour le fichier de prédiction.