RowitZou / topic-dialog-summ

AAAI-2021 paper: Topic-Oriented Spoken Dialogue Summarization for Customer Service with Saliency-Aware Topic Modeling.
MIT License
77 stars 9 forks source link

生成的结果长度太短了,请问在哪里可以修改生成句子的长度大小? #6

Closed PYMAQ closed 2 years ago

PYMAQ commented 3 years ago

谢谢大佬!

RowitZou commented 3 years ago

Beam search decoding args

parser.add_argument("-alpha", default=0.6, type=float)
parser.add_argument("-beam_size", default=3, type=int)
parser.add_argument("-min_length", default=10, type=int)
parser.add_argument("-max_length", default=100, type=int)

The argument 'min_length' controls the minimum decoding length.

PYMAQ commented 3 years ago

1.目前用model_step_12000.pt的模型去预测,有些输出的很长(长的输出,看上去跟参考摘要长度差不多),有些就很少的输出(短的输出,看上去是参考摘要长度的1/5),这是为什么呢?是不是因为我的模型还没有训练完成,也就是model_step_80000.pt还没有跑出来。 2.min_length我改了,不过输出的有很多#号,这也算长度吗?

PYMAQ commented 3 years ago

07 月 23 日 07 时 ##到 年 07 [unused7] [unused8] [unused8] [unused8] [unused7] [unused8] [unused7] [unused7] [unused8] # [unused8] [unused8] # [unused7] [unused8] [unused6] [unused8] [unused8] [unused6] [unused7] [unused8] 为什么生成的摘要中很多例子是这样的([unused]这种unk标记符很多)?但是有些就生成挺好的(长度和输出符合预期),请问这是需要改哪里吗?

RowitZou commented 3 years ago

min_length 设置太大,会强制模型输出不符合语言模型的token。

生成摘要有的过短有的过长,有可能是因为训练数据噪声多,或者训练样本的标准摘要长度差异较大。可以在训练时过滤掉一些太短摘要的训练样本。

Hoogck commented 2 years ago

博主好,我也遇到过生成的摘要长度太短的问题,然后修改了min/max_length、alpha等参数后,效果不是很理想。 请问我怎么可以让生成的语句更长一点,而且更多的去拷贝并忠于原文内容呢?

RowitZou commented 2 years ago

如果需要实际场景应用,有几个方面可以改进。

  1. 完全采用pipeline 模式,即分开训练一个抽取式摘要模型和一个生成式摘要模型。抽取式摘要模型从长对话中抽取关键句,生成式摘要模型通过输入抽取的关键句生成更加简短的摘要。这样分阶段的训练,更容易控制,也能在各个阶段使用性能更好的模型,例如使用 RoBERTa 等模型训练抽取器,使用 BART 等模型训练生成器。可以视GPU资源酌情考虑加入RL进行联合训练,一定程度上能提升效果。
  2. 训练抽取器时,想办法让关键句的 recall 值尽量高一些,模型能抽取更多的句子送入生成器。实验证明加入 RL 能提升第一阶段抽取关键句的 recall 值,从而提升效果。
  3. 生成器可以采用copy机制,提高与所抽取的句子(即原文)的忠实度。目前我们的原始模型没有加入copy机制。
  4. 筛选训练集语料,去掉一些gold 摘要过短的训练样本。
  5. 可以做一下数据增强或者预训练,例如在无标注的语料上用 BERT 继续预训练。或者有大量客服记录文本的话,可以用 BART继续预训练。