Ferramenta de resumo do código -fonte do FUNCON - liberação pública
Este repositório contém o código de liberação pública da Funcom, uma ferramenta para resumo do código -fonte. A resumo do código é a tarefa de gerar automaticamente descrições de linguagem natural do código -fonte.
Leclair, A., McMillan, C., "Recomendações para conjuntos de dados para resumo do código -fonte", em Proc. da conferência anual de 2019 do capítulo norte-americano da Association for Computational Linguistics (NAACL'19), curta faixa de papel de pesquisa, Minneapolis, EUA, de 2 a 7 de junho de 2019.
Leclair, A., Jiang, S., McMillan, C., "Um modelo neural para gerar resumos de linguagem natural das sub -rotinas do programa", em Proc. da 41ª Conferência Internacional ACE/IEEE sobre Engenharia de Software (ICSE'19), Montreal, QC, Canadá, de 25 a 31 de maio de 2019.
https://arxiv.org/abs/1902.01954
Exemplo de amostra aleatoriamente em saída do modelo AST-ATENDGRU em comparação com referência bons resumos escritos por humanos:
Saída de protótipo - referência humana
Retorna a duração do filme - obtenha toda a duração deste filme em segundos
Escreva uma string para o cliente - escreva uma string para todos os clientes conectados
Este método é chamado para indicar a próxima página na página - chamada para ir explicitamente para a próxima página de dentro de um único sorteio
Retorna uma lista de todos os IDs que correspondem ao gene fornecido - obtenha uma lista de IDs de superfamília para um nome de gene
compara dois nós por seus nós - compare os nós N1 e N2 pela entrada DX
Este método atualiza o painel da árvore - atualiza o painel da árvore com uma nova árvore
Retorna o número de resíduos na sequência - obtenha o número de resíduos de interação no domínio B
retorna true se a rede for encontrada - retorne true se for aprovado o endereço INET corresponder a uma rede que foi usada
Mensagem de status de log - registre o status da mensagem atual como informação
Este repositório é arquivo para o artigo ICSE'19 mencionado acima. É um bom lugar para começar, mas você também pode querer olhar para nossos projetos mais recentes:
https://github.com/aakashba/callcon-public
https://github.com/attn-to-fc/attn-to-fc
https://github.com/acleclair/icpc2020_gnn
Assumimos o Ubuntu 18.04, Python 3.6, Keras 2.2.4, Tensorflow 1.12. Sua milhagem pode variar em diferentes sistemas.
Fornecemos um conjunto de dados de métodos Java de 2,1 milhões e comentários de métodos, já limpos e separados em conjuntos de treinamento/val/testes:
https://s3.us-east-2.amazonaws.com/icse2018/index.html
(Nota: este artigo já tem vários anos. Por favor, consulte uma atualização de dados aqui: https://github.com/aakashba/callcon-public)
Extraia o conjunto de dados para um diretório (/ scratch/ é o padrão assumido) para que você tenha uma estrutura de diretório:
/scratch/funcom/data/standard/dataset.pkl
etc. de acordo com os arquivos descritos no site acima.
Para ser consistente com os padrões, crie os seguintes diretórios:
/scratch/funcom/data/outir/modelos/
/scratch/funcom/data/histories/histories/
/scratch/funcom/data/houver/previsões/
you@server:~/dev/funcom $ time python3 train.py --model-type=attendgru --gpu=0
Os tipos de modelo são definidos em model.py. A versão ICSE'19 é AST-ATENDGRU, se você estiver procurando reproduzi-la para comparação com seus próprios modelos. Observe que as informações do histórico para cada época são armazenadas em um arquivo pkl, por exemplo, /scratch/funcom/data/outdir/histories/attendgru_hist_1551297717.pkl. O número inteiro no final do arquivo é o horário da época em que o treinamento começou e é usado para conectar dados de histórico, configuração, modelo e previsão. Por exemplo, o treinamento atendimento ao Epoch 5 produziria:
/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
Uma boa linha de base para o trabalho inicial é o modelo de presença. Os comentários no arquivo (modelos/atendgri.py) explicam seu comportamento em detalhes e treina relativamente rapidamente: cerca de 45 minutos por época usando o tamanho de 200 em um único quadro p5000, com desempenho máximo no conjunto de validação na época 5.
you@server:~/dev/funcom $ time python3 predict.py /scratch/funcom/data/outdir/models/attendgru_E05_1551297717.h5 --gpu=0
A única entrada necessária para prever.py na linha de comando é o arquivo de modelo, mas as informações de configuração são lidas nos arquivos PKL mencionados acima. As previsões de saída serão gravadas em um arquivo, por exemplo:
/scratch/funcom/data/outdir/predictions/predict-attendGru_e05_15512977717.txt
Observe que a previsão da CPU é possível em princípio, mas, por padrão, os modelos ATSTEGRU e AST-ATENDGRU usam Cudnngru em vez do GRU padrão, o que exige o uso de uma GPU durante a previsão.
you@server:~/dev/funcom $ time python3 bleu.py /scratch/funcom/data/outdir/predictions/predict-attendgru_E05_1551297717.txt
Isso produzirá uma pontuação bleu para o arquivo de previsão.