FIRA: 자동 커밋 메시지 생성을 위한 세밀한 그래프 기반 코드 변경 표현
요약
FIRA는 코드 변경 사항을 세밀한 그래프(fine-grained graphs)로 표현하고 이를 기반으로 자동 커밋 메시지를 생성하는 학습 기반 접근 방식입니다. 본 연구에서는 GNN 인코더와 듀얼 복사 메커니즘 트랜스포머 디코더를 사용하여 모델을 구축했습니다. 제공된 저장소에는 데이터 전처리, 모델 학습/평가 스크립트 및 다양한 평가 지표가 포함되어 있습니다.
핵심 포인트
- 코드 변경 사항을 세밀한 그래프로 표현하여 커밋 메시지 생성의 정확도를 높임.
- GNN 인코더와 트랜스포머 디코더를 결합한 구조를 사용함.
- 학습된 모델은 `best_model.pt`로 저장되며, 평가 지표(BLEU, ROUGE-L 등)가 제공됨.
- 연구 결과는 인간 평가 및 다양한 자동화된 메트릭을 통해 검증되었음.
FIRA: Fine-Grained Graph-Based Code Change Representation for Automated Commit Message Generation
FIRA는 학습 기반의 커밋 메시지 생성 접근 방식입니다. 이 방식은 먼저 세밀한 그래프(fine-grained graphs)를 통해 코드 변경 사항을 표현하고, 이후 자동으로 커밋 메시지를 생성하도록 학습합니다. 본 저장소에서는 저희가 사용한 코드와 데이터를 제공합니다.
환경 (Environment)
- Python == 3.8.5
- Pytorch == 1.7.1
- Numpy == 1.19.2
- Scipy == 1.5.4
- Nltk == 3.5
- Sacrebleu == 1.5.1
- Sumeval == 0.2.2
데이터셋 (Dataset)
DataSet 폴더에는 이미 전처리된 모든 데이터가 포함되어 있으며, 모델을 학습하거나 평가하는 데 바로 사용할 수 있습니다.
PreProcess 폴더에는 데이터를 전처리하기 위한 스크립트가 포함되어 있습니다. 다음 명령어를 실행하여 데이터를 전처리하고,
python run_total_process_data.py num_processes num_tasks
다음 명령어를 실행하여 데이터를 수집할 수 있으며, 최종 데이터셋은 DataSet 폴더에 저장됩니다.
python gather_data.py
저희는 병렬 처리를 위해 python의 subprocess 모듈을 사용합니다. 인자 num_processes와 num_tasks는 병렬 서브프로세스 수와 하나의 서브프로세스가 실행하는 작업 수를 의미합니다. 이 두 인자는 CPU 용량에 맞춰 설정해야 합니다.
모델 (Model)
저희는 인코더로 GNN을, 디코더로는 듀얼 복사 메커니즘(dual copy mechanism)을 가진 트랜스포머를 사용합니다. 모델은 Model.py 파일에 정의되어 있습니다. 모델을 학습시키려면 다음 명령어를 실행할 수 있으며,
python run_model.py train
모델은 best_model.pt로 저장됩니다.
모델을 평가하려면 다음 명령어를 실행할 수 있으며,
python run_model.py test
출력된 커밋 메시지는 OUTPUT/output_fira에 저장됩니다.
출력 (Output)
OUTPUT 폴더에는 FIRA가 생성한 커밋 메시지와 다른 비교 접근 방식들이 생성한 커밋 메시지가 포함되어 있습니다.
지표 (Metrics)
Metrics 폴더에는 BLEU, ROUGE-L, METEOR, Penalty-BLEU를 포함하여 저희의 접근 방식을 평가하는 데 사용하는 지표들을 계산하는 스크립트가 들어 있습니다. 실행 명령어는 다음과 같으며, ref는 정답(ground_truth) 커밋 메시지이고 gen은 생성된 커밋 메시지입니다.
Bleu-B-Norm.py, Rouge.py, 그리고 Meteor.py는 Tao 등[1]이 제공한 스크립트(the scripts provided by Tao et al. [1])에서 가져온 것입니다. 이들은 커밋 메시지 생성 모델의 평가에 대한 실험 연구를 수행했으며, B-Norm BLEU가 커밋 메시지의 품질에 대해 인간의 판단과 가장 일관성을 보이는 것을 발견했습니다.
python Bleu-B-Norm.py ref < gen
python Rouge.py --ref_path ref --gen_path gen
...
인간 평가 (Human Evaluation)
The HumanEvaluation 폴더에는 여섯 명의 참가자가 기록한 점수들이 포함되어 있습니다.
참고문헌 (Reference)
Tao W, Wang Y, Shi E, et al. On the Evaluation of Commit Message Generation Models: An Experimental Study[C]//2021 IEEE International Conference on Software Maintenance and Evolution (ICSME). IEEE, 2021: 126-136.
AI 자동 생성 콘텐츠
본 콘텐츠는 개발 자료 GitHub · d10ae64d의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기