Funcom Source Code Summarization Tool - Public Release
Dieses Repository enthält den Public Release -Code für Funcom, ein Tool für die Zusammenfassung des Quellcodes. Die Zusammenfassung der Code ist die Aufgabe, automatisch natürliche Sprachbeschreibungen von Quellcode zu generieren.
Leclair, A., McMillan, C., "Empfehlungen für Datensätze für die Zusammenfassung der Quellcode", in Proc. der Jahreskonferenz 2019 des nordamerikanischen Kapitels der Association for Computational Linguistics (NAACL'19), Short Research Paper Track, Minneapolis, USA, 2. bis 7. Juni 2019.
Leclair, A., Jiang, S., McMillan, C., "Ein neuronales Modell zur Erzeugung natürlicher Sprachzusammenfassungen von Programmunterroutinen", in Proc. der 41. ACE/IEEE International Conference on Software Engineering (ICSE'19), Montreal, QC, Kanada, 25. bis 31. Mai 2019.
https://arxiv.org/abs/1902.01954
Zufällig abgetastete Beispielausgabe aus dem AST-ATT-ATTENTGRU-Modell im Vergleich zu guten Zusammenfassungen von Menschen mit Menschengeschrieben:
Prototypausgabe - menschliche Referenz
Gibt die Dauer des Films zurück - Holen Sie sich die volle Länge dieses Films in Sekunden
Schreiben Sie eine Zeichenfolge an den Client - schreiben Sie eine Zeichenfolge an alle verbundenen Clients
Diese Methode wird aufgerufen, um die nächste Seite auf der Seite anzugeben. Rufen Sie an, um aus einer einzigen Zeichnung explizit zur nächsten Seite zu gehen
Gibt eine Liste aller IDs zurück, die dem angegebenen Gen übereinstimmen - eine Liste von Superfamilien -IDs für einen Gennamen erhalten
Vergleicht zwei Knoten mit ihrem UNK - Vergleichen Sie die Knoten N1 und N2 mit ihrem DX -Eintrag
Diese Methode aktualisiert das Baumbereich - Aktualisiert das Baumbereich mit einem neuen Baum
Gibt die Anzahl der Rückstände in der Sequenz zurück - Anzahl der interagierenden Reste in Domäne B erhalten
Gibt true zurück, wenn das Netzwerk gefunden wird.
Protokollstatusnachricht - Protokollieren Sie den Status der aktuellen Nachricht als Info
Dieses Repository ist Archiv für das oben erwähnte ICSE'19 -Papier. Es ist ein guter Ort, um loszulegen, aber Sie möchten vielleicht auch unsere neueren Projekte ansehen:
https://github.com/aakashba/callcon-public
https://github.com/attn-to-fc/attn-to-fc
https://github.com/acleclair/ICPC2020_gnn
Wir nehmen Ubuntu 18.04, Python 3.6, Keras 2.2.4, Tensorflow 1.12 an. Ihre Kilometerleistung kann in verschiedenen Systemen variieren.
Wir bieten einen Datensatz von 2,1 m Java -Methoden und Methodenkommentare, die bereits gereinigt und in Trainings-/Val/Test -Sets unterteilt sind:
https://s3.us-east-ast-ast-2.amazonaws.com/icse2018/index.html
(Hinweis: Dieses Papier ist jetzt einige Jahre alt. Weitere Daten finden Sie in einem Datenaktualisierung: https://github.com/aakashba/callcon-public)
Extrahieren Sie den Datensatz in ein Verzeichnis (/ Scratch/ ist der angenommene Standard), damit Sie eine Verzeichnisstruktur haben:
/Scratch/funcom/data/standard/dataset.pkl
usw. gemäß den auf der obigen Site beschriebenen Dateien.
Um mit Standardeinstellungen übereinzustimmen, erstellen Sie die folgenden Verzeichnisse:
/Scratch/funcom/data/outdir/models/
/Scratch/funcom/data/outdir/histories/
/Scratch/Funcom/data/outdir/Vorhersagen/
you@server:~/dev/funcom $ time python3 train.py --model-type=attendgru --gpu=0
Modelltypen sind in Modell.py definiert. Die ICSE'19-Version ist ast-attendGru, wenn Sie sie zum Vergleich mit Ihren eigenen Modellen reproduzieren möchten. Beachten Sie, dass Verlaufsinformationen für jede Epoche in einer PKL -Datei eG /Scratch/funcom/data/outdir/histories/attendgru_hist_1551297717.pkl gespeichert sind. Die Ganzzahl am Ende der Datei ist die Epochenzeit, zu der das Training begann, und wird verwendet, um die Daten zu dem Verlauf, Konfiguration, Modell und Vorhersage zu verbinden. Zum Beispiel würde das Training Gentgru zu Epoch 5 produzieren:
/Scratch/funcom/data/outdir/histories/attendgru_conf_1551297717.pkl
/Scratch/funcom/data/outdir/histories/attendgru_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
Eine gute Basis für die Erstarbeit ist das Besuchermodell. Kommentare in der Datei (Modelle/teilsgru.py) erläutern sein Verhalten im Detail und trainieren relativ schnell: etwa 45 Minuten pro Epoche mit der Stapelgröße 200 auf einem einzelnen Quadro P5000, wobei die maximale Leistung für das Validierungssatz bei Epoch 5 ist.
you@server:~/dev/funcom $ time python3 predict.py /scratch/funcom/data/outdir/models/attendgru_E05_1551297717.h5 --gpu=0
Die einzige notwendige Eingabe von Predict.py in der Befehlszeile ist die Modelldatei, die Konfigurationsinformationen werden jedoch aus den oben genannten PKL -Dateien gelesen. Ausgabevorhersagen werden in eine Datei geschrieben, z.
/Scratch/funcom/data/outdir/Predicions/Predict-attendgru_e05_1551297717.txt
Beachten Sie, dass die CPU-Vorhersage grundsätzlich möglich ist, aber standardmäßig verwenden die Modelle zur Teilgru- und AST-Tendgru Cudnngru anstelle von Standard-GRU, was die Verwendung einer GPU während der Vorhersage erforderlich macht.
you@server:~/dev/funcom $ time python3 bleu.py /scratch/funcom/data/outdir/predictions/predict-attendgru_E05_1551297717.txt
Dadurch wird eine BLEU -Punktzahl für die Vorhersagedatei ausgegeben.