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

请问博主,测试样本有650条,但是输出output文件只有645个结果,请问是哪里被截断了吗? #7

Open pymLovelyq opened 3 years ago

pymLovelyq commented 3 years ago

loading weights file bert/chinese_bert/pytorch_model.bin [2021-06-11 21:12:15,450 INFO] loading Word2VecKeyedVectors object from pretrain_emb/word2vec [2021-06-11 21:12:15,493 INFO] setting ignored attribute vectors_norm to None [2021-06-11 21:12:15,493 INFO] loaded pretrain_emb/word2vec [2021-06-11 21:12:20,943 INFO] Loading test dataset from bert_data/ali.test.0.bert.pt, number of examples: 650

结果只有645个输出,然后对比了下,发现是样本中不是存在中间某几个测试样本被抛弃了?还是没有生成? 个人初步怀疑是对话太长了,导致整个被截断了,然后没有生成? 但是改了几个参数,发现max设置成很大,依然只有645个样本输出,请问博主知道是什么问题吗?或者有什么思路?谢谢!!!

(测试另外一个数据集,也出现类似的情况,少了10条测试样本的结果数据)

RowitZou commented 3 years ago

参考代码 models/data_loader.py 的 352行至369行,出现这种情况的原因可能是:某一个 example 的 token 总数目超过了 batch size(训练时默认是 2000,测试时默认是 20000),就会将其丢弃,否则可能会 OOM。

另一种可能的原因是,preprocess 时,对话的句子数目小于参数-min_turns 的设置值,就会将其丢弃。但此参数默认是1,只要对话有至少一句话,就会将其保留,除非数据有噪声导致此 example 为空。

pymLovelyq commented 3 years ago

preprocess 时,对话的句子数目小于参数-min_turns 的设置值,就会将其丢弃,是不是也说明如果max_turns大于默认值100,也会丢弃?

RowitZou commented 3 years ago

max_turns 大于100,后续句子会被截断。

pymLovelyq commented 3 years ago

尝试了修改batchsize,还是原样,650个测试样本,总是得到645个结果输出。是不是跟模型初始训练有关,是不是初始训练时候就要正确的参数,不然仅仅靠测试时修改参数也没有影响。

RowitZou commented 3 years ago

测试和训练使用的数据格式相同,使用了同样的预处理和数据载入过程。如果训练没有问题,测试也应该没有问题。

  1. 可以检查是否在训练时也出现了部分训练数据被舍弃的现象。
  2. 为测试样例添加标记,查看是哪些样例被丢弃。
  3. 检查ali.test.0.bert.pt是否有650个样例,如果有,说明样例在数据载入后被丢弃,如果没有,说明样例在数据处理时就被丢弃。
pymLovelyq commented 3 years ago

确定ali.test.0.bert.pt有650个样例,应该是载入后被丢弃。修改了载入后处理数据的代码,发现并不奏效,不知道是哪一部分的代码强制丢弃了。。。

RowitZou commented 3 years ago

建议先找出被丢弃的具体样例,然后将其整合成一个小测试集(由被丢弃的样例组成)。再输入模型进行单步调试。

SCU-JJkinging commented 2 years ago

确定ali.test.0.bert.pt有650个样例,应该是载入后被丢弃。修改了载入后处理数据的代码,发现并不奏效,不知道是哪一部分的代码强制丢弃了。。。

请问您最后解决了吗?