Herramienta de resumen del código fuente de Funcom - Lanzamiento público
Este repositorio contiene el código de lanzamiento público para Funcom, una herramienta para el resumen del código fuente. El resumen del código es la tarea de generar automáticamente las descripciones del lenguaje natural del código fuente.
Leclair, A., McMillan, C., "Recomendaciones para conjuntos de datos para resumen del código fuente", en Proc. de la Conferencia Anual de 2019 del Capítulo de América del Norte de la Asociación de Lingüística Computacional (NAACL'19), Breve Research Paper Track, Minneapolis, EE. UU., 2-7 de junio de 2019.
Leclair, A., Jiang, S., McMillan, C., "Un modelo neuronal para generar resúmenes de lenguaje natural de las subrutinas de programas", en Proc. de la 41a Conferencia Internacional ACE/IEEE sobre Ingeniería de Software (ICSE'19), Montreal, QC, Canadá, del 25 al 31 de mayo de 2019.
https://arxiv.org/abs/1902.01954
Salida de ejemplo de muestreo aleatorio del modelo AST-ATTENDGRU en comparación con los buenos resúmenes escritos por humanos de referencia:
Salida prototipo - Referencia humana
Devuelve la duración de la película: obtenga la longitud completa de esta película en segundos
Escriba una cadena al cliente: escriba una cadena a todos los clientes conectados
Se llama a este método para indicar la página siguiente en la página: llame para ir explícitamente a la página siguiente desde un solo dibujo
Devuelve una lista de todas las ID que coinciden con el gen dado: obtenga una lista de ID de superfamilia para un nombre del gen
Compara dos nodos por sus nodos unk - comparar N1 y N2 por su entrada DX
Este método actualiza el panel de árbol: actualiza el panel de árbol con un nuevo árbol
Devuelve el número de residuos en la secuencia: obtenga el número de residuos que interactúan en el dominio B
Devuelve verdadero si se encuentra la red: devuelve verdadero si se pasa la dirección INET coincide con una red que se usó
Mensaje de estado de registro: registre el estado del mensaje actual como información
Este repositorio es un archivo para el documento ICSE'19 mencionado anteriormente. Es un buen lugar para comenzar, pero también es posible que desee mirar nuestros proyectos más nuevos:
https://github.com/aakashba/callcon-public
https://github.com/attn-to-fc/attn-to-fc
https://github.com/acleclair/icpc2020_gnn
Asumimos Ubuntu 18.04, Python 3.6, Keras 2.2.4, TensorFlow 1.12. Su kilage puede variar en diferentes sistemas.
Proporcionamos un conjunto de datos de métodos y comentarios de métodos Java 2.1M, ya limpiados y separados en conjuntos de entrenamiento/VAL/prueba:
https://s3.us-east-2.amazonaws.com/icse2018/index.html
(Nota: Este documento ahora tiene varios años. Consulte una actualización de los datos aquí: https://github.com/aakashba/callcon-public)
Extraiga el conjunto de datos a un directorio (/ scratch/ es el valor predeterminado asumido) para que tenga una estructura de directorio:
/scratch/funcom/data/standard/dataset.pkl
etc. de acuerdo con los archivos descritos en el sitio anterior.
Para ser consistente con los valores predeterminados, cree los siguientes directorios:
/scratch/funcom/data/outand/modelos/
/scratch/funcom/data/outand/historias/
/scratch/funcom/data/outDir/predicciones/
you@server:~/dev/funcom $ time python3 train.py --model-type=attendgru --gpu=0
Los tipos de modelo se definen en Model.py. La versión ICSE'19 es AST-ATTENDGRU, si está buscando reproducirla para compararlo con sus propios modelos. Tenga en cuenta que la información del historial para cada época se almacena en un archivo PKL EG /SCRATCH/FUNCOM/DATA/outdir/histories/AttendGru_hist_1551297717.pkl. El entero al final del archivo es el momento de la época en el que comenzó la capacitación, y se utiliza para conectar los datos de historial, configuración, modelo y predicción. Por ejemplo, la capacitación de asistencia a la época 5 produciría:
/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
Una buena línea de base para el trabajo inicial es el modelo de asistencia. Los comentarios en el archivo (modelos/asistente) explican su comportamiento en detalle, y entrena relativamente rápido: aproximadamente 45 minutos por época usando el tamaño de lotes 200 en un solo Quadro P5000, con el máximo rendimiento en la validación establecida en la época 5.
you@server:~/dev/funcom $ time python3 predict.py /scratch/funcom/data/outdir/models/attendgru_E05_1551297717.h5 --gpu=0
La única entrada necesaria para predecir.py en la línea de comando es el archivo del modelo, pero la información de configuración se lee en los archivos PKL mencionados anteriormente. Las predicciones de salida se escribirán en un archivo, por ejemplo,:
/scratch/funcom/data/outdir/predictions/predict-attendgru_e05_1551297717.txt
Tenga en cuenta que la predicción de la CPU es posible en principio, pero de manera predeterminada, los modelos AtStingGru y ATATENDGRU usan CUDNNGRU en lugar de GRU estándar, que requiere el uso de una GPU durante la predicción.
you@server:~/dev/funcom $ time python3 bleu.py /scratch/funcom/data/outdir/predictions/predict-attendgru_E05_1551297717.txt
Esto generará una puntuación BLEU para el archivo de predicción.