Big Bird Pegasus长文本摘要生成输出内容重复问题求助
问题原因排查
- 模型选型完全不匹配场景:你当前使用的
google/bigbird-pegasus-large-arxiv是在arXiv学术论文数据集上微调的专项模型,仅适用于学术论文摘要生成,对新闻类通用文本的适配性极差,输出的重复内容是该模型在学术训练集中学到的高频通用表述,和你的输入内容无关。 - 代码存在疏漏:你仅将输入数据加载到了运算设备,没有将模型同步加载到对应设备,可能导致推理异常;同时tokenizer未明确指定输入长度上限,截断逻辑可能不符合模型要求,丢失过多输入有效信息。
- 生成参数使用默认配置:默认的贪心搜索策略本身就极易出现重复生成问题,且未配置任何重复抑制参数,进一步放大了重复输出的问题。
可行解决方法
- 替换适配新闻场景的模型
将模型替换为新闻领域微调的google/bigbird-pegasus-large-newsroom,该模型在新闻摘要数据集上训练,完全适配你当前的新闻摘要需求,替换代码如下:
model = BigBirdPegasusForConditionalGeneration.from_pretrained("google/bigbird-pegasus-large-newsroom") tokenizer = AutoTokenizer.from_pretrained("google/bigbird-pegasus-large-newsroom")
- 修正代码疏漏
补充模型加载到运算设备的逻辑,同时明确指定tokenizer的最大输入长度为模型支持的4096token,确保输入信息完整:
device = 'cuda' if torch.cuda.is_available() else 'cpu' # 补充模型移至设备的代码 model = model.to(device) batch = tokenizer(src_text, truncation=True, max_length=4096, padding='longest', return_tensors="pt").to(device)
- 调整生成参数抑制重复
修改generate函数的配置,替换贪心搜索为集束搜索,添加重复抑制相关参数:
translated = model.generate( **batch, max_new_tokens=300, # 按需调整生成摘要的长度 num_beams=4, no_repeat_ngram_size=2, # 禁止连续2个及以上的词组重复,直接解决整句重复问题 repetition_penalty=1.2, early_stopping=True ) tgt_text = tokenizer.batch_decode(translated, skip_special_tokens=True)
- 超长文本优化处理
如果输入文本长度远超4096token,可先将文本拆分为多个不超过2000token的段落,分别生成段落摘要后再拼接为全文摘要,避免单次截断丢失过多关键信息。
内容的提问来源于stack exchange,提问作者J. Montgomery
相关产品推荐
相关产品推荐

