项目简介
本项目是基于Python和Open Neural Machine Translation (ONMT) 框架构建的神经源代码摘要系统。其目标是自动生成源代码的摘要,可支持Python、Java和Bash等多种编程语言。项目依据ICSE 2020论文《Retrieval-based Neural Source Code Summarization》,借助神经网络模型与检索技术,达成高效且准确的代码摘要生成。
项目的主要特性和功能
- 支持Python、Java和Bash等多种编程语言的代码摘要生成。
- 具备数据格式处理和预处理功能,保证输入数据契合模型要求。
- 支持神经网络模型训练,可通过调整参数优化模型性能。
- 集成检索功能,利用修改后的textdistance库实现代码相似度计算。
- 结合神经网络和检索技术,生成高质量的代码摘要。
安装使用步骤
环境准备
- 硬件要求:16核2.4GHz CPU,128GB RAM,Titan Xp GPU(12GB内存)。
- 操作系统:Ubuntu 16.04或Windows。
- 依赖包:Python 3.9,PyTorch 1.10.1,torchtext 0.3.1,nltk 3.2.4,ConfigArgParse 0.14.0。
数据准备
- 在
samples
目录下新建对应编程语言的文件夹(如bash
)。 - 创建
train
、test
、valid
、preprocessed
、output
、indexes
文件夹。 - 将训练集、测试集和验证集的代码、AST序列和注释分别放入对应目录。
数据预处理
- 修改
run.py
中的代码,设置编程语言和输入输出长度。 - 运行
python run.py preprocess <language>
进行数据预处理,结果保存在preprocessed
目录下。
模型训练
- 运行
python run.py train <language>
进行模型训练,参数可在onmt/opts.py
中修改。 - 记录验证准确率最高的模型。
检索功能
- 修改
normalize.py
和run.py
中的代码,设置编程语言和输入长度。 - 运行
python run.py retrieval <language>
进行检索。
生成摘要
- 修改
run.py
中的命令行代码,设置模型参数和输出长度。 - 运行
python run.py translate <language> <mode>
生成代码摘要,结果保存在samples/<language>/output/Rencos.out
。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】