Views
No views yet
ai-forever/ruT5-large, was trained for binary quality assessment of Russian summaries when paired with their original texts.ru and en subsets of training split, filtered for conciseness labels.ru subset of validation and test splits.| Test set | Pearson Correlation | ROC AUC |
|---|---|---|
| All | 0.479 | 0.792 |
| ≥ 20 summary words | 0.459 | 0.781 |
"текст:\n {} саммари:\n {}"ZERO_TOKEN='▁0' for label 0 (not concise)ONE_TOKEN='▁1' for label 1 (concise)1from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
2import torch
3import numpy as np
4
5model_name = "xendalm/ru-summary-quality-metric"
6
7tokenizer = AutoTokenizer.from_pretrained(model_name)
8zero_token_id = tokenizer('▁0', add_special_tokens=False).input_ids[0]
9one_token_id = tokenizer('▁1', add_special_tokens=False).input_ids[0]
10
11model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
12device = "cuda"
13model.to(device)
14model.eval()
15
16def predict_conciseness_score(text, summary, tokenizer, model, device, zero_token_id, one_token_id):
17 input_text = f"текст:\n {text} саммари:\n {summary}"
18
19 inputs = tokenizer(input_text, return_tensors="pt", max_length=2048, truncation=True, padding=True)
20 inputs = {k: v.to(device) for k, v in inputs.items()}
21
22 with torch.no_grad():
23 outputs = model.generate(
24 **inputs,
25 max_new_tokens=1,
26 num_beams=1,
27 do_sample=False,
28 return_dict_in_generate=True,
29 output_scores=True
30 )
31
32 first_token_logits = outputs.scores[0].squeeze(0)
33
34 logit_0 = first_token_logits[zero_token_id]
35 logit_1 = first_token_logits[one_token_id]
36
37 probability_of_one = torch.sigmoid(logit_1 - logit_0).item()
38
39 return probability_of_one