Open qian2020 opened 1 year ago
scores = rouge.get_scores(hyps=preds, refs=labels)[0] 就是这行代码
非常感谢!是的,我搞错了,Rouge 的计算我直接参考了别人的代码,没有自己细看。 这样写在评估多个句子的情况下就只取了第一个句子的值。
如果评估多个句子,需要添加 avg=True
参数来取平均值:
scores = rouge.get_scores(hyps, refs, avg=True)
我已经在代码中修正了,再次感谢!
`import numpy as np from rouge import Rouge
rouge = Rouge()
def test_loop(dataloader, model): preds, labels = [], [] model.eval() for batch_data in tqdm(dataloader): batch_data = batch_data.to(device) with torch.no_grad(): generated_tokens = model.generate( batch_data["input_ids"], attention_mask=batch_data["attention_mask"], max_length=max_target_length, num_beams=4, no_repeat_ngram_size=2, ).cpu().numpy() if isinstance(generated_tokens, tuple): generated_tokens = generated_tokens[0] label_tokens = batch_data["labels"].cpu().numpy()