transformer abstractive summarization

Python 2025-07-27

该论文的代码“有效适应了预处理的变压器以抽象摘要”

要求

要在Train.py中运行培训脚本。您还需要:

  • pytorch(版本> = 0.4)
  • TQDM
  • pyrouge
  • 编辑部
  • TensorFlow(CPU版本还可以)
  • NLTK
  • Spacy(和“ EN”模型)

您可以通过克隆Alec Radford的存储库来下载OpenAI预训练版本的权重,并将包含预训练权重的model文件夹放在本仓库中。

为了运行此代码,您需要通过脚本中提供的脚本使用BPE预处理数据集

数据集预处理

培训和评估脚本期望3个总输出文件: train_encoded.jsonlval_encoded.jsonltest_encoded.jsonl

CNN/每日邮件

可以从OpenNMT下载纸张中使用的数据和拆分。首先,使用提供的链接中的sed命令删除开始和结尾句子标签。要处理数据,请运行以下命令:

 python scripts/encode_cnndm.py --src_file {source file} --tgt_file {target file} --out_file {output file}

XSUM

可以使用XSUM刮擦纸张中使用的数据和拆分。通过Extract text from HTML Files运行命令。要处理数据,请运行以下命令:

 python scripts/encode_xsum.py --summary_dir {summary directory} --splits_file {split file} --train_file {train file} --val_file {val file} --test_file {test_file}

编辑部

可以从新闻编辑室下载纸张中使用的数据和拆分。要处理数据,请运行以下命令:

 python scripts/encode_newsroom.py --in_file {input split file} --out_file {output file}

训练

要训练模型,请运行以下命令:

 python train.py \
  --data_dir {directory containing encoded data} \
  --output_dir {name of folder to save data in} \
  --experiment_name {name of experiment to save data with} \
  --show_progress \
  --doc_model \
  --num_epochs_dat 10 \
  --num_epochs_ft 10 \
  --n_batch 16 \
  --accum_iter 4 \
  --use_pretrain

使用域自适应训练训练10个时期的预dataset的文档嵌入模型,并使用微调训练10个时期。该模型的有效批量大小为64,因为实际批量大小为16,并且我们在4个批次上积累了梯度。批次大小必须由可用的GPU数量排除。目前对多GPU使用的培训进行了优化,并且可能对单个GPU机器不起作用。

评估

要评估模型,请运行以下命令:

 python evaluate.py \
  --data_file {path to encoded data file encoded data} \
  --checkpoint {checkpoint to load model weights from} \
  --beam {beam size to do beam search with} \
  --doc_model \
  --save_file {file to output results to} \
  --n_batch {batch size for evaluation, must be divisible by number of gpus}

评估测试集中的文档嵌入模型。当前评估用于多GPU使用情况,并且可能对单个GPU机器不起作用。由于评估脚本将删除一些示例,如果数据点的数量不被GPU排除,则您可能需要运行create_small_test.py脚本以获取被排除在外的最后几个文件并在最后汇总结果。

下载源码

通过命令行克隆项目:

git clone https://github.com/Andrew03/transformer-abstractive-summarization.git