Views
No views yet
1import torch
2from transformers import T5ForConditionalGeneration, T5Tokenizer
3MODEL_NAME = 'cointegrated/rut5-base-absum'
4model = T5ForConditionalGeneration.from_pretrained(MODEL_NAME)
5tokenizer = T5Tokenizer.from_pretrained(MODEL_NAME)
6model.cuda();
7model.eval();
8
9def summarize(
10 text, n_words=None, compression=None,
11 max_length=1000, num_beams=3, do_sample=False, repetition_penalty=10.0,
12 **kwargs
13):
14 """
15 Summarize the text
16 The following parameters are mutually exclusive:
17 - n_words (int) is an approximate number of words to generate.
18 - compression (float) is an approximate length ratio of summary and original text.
19 """
20 if n_words:
21 text = '[{}] '.format(n_words) + text
22 elif compression:
23 text = '[{0:.1g}] '.format(compression) + text
24 x = tokenizer(text, return_tensors='pt', padding=True).to(model.device)
25 with torch.inference_mode():
26 out = model.generate(
27 **x,
28 max_length=max_length, num_beams=num_beams,
29 do_sample=do_sample, repetition_penalty=repetition_penalty,
30 **kwargs
31 )
32 return tokenizer.decode(out[0], skip_special_tokens=True)
33
34text = """Высота башни составляет 324 метра (1063 фута), примерно такая же высота, как у 81-этажного здания, и самое высокое сооружение в Париже. Его основание квадратно, размером 125 метров (410 футов) с любой стороны. Во время строительства Эйфелева башня превзошла монумент Вашингтона, став самым высоким искусственным сооружением в мире, и этот титул она удерживала в течение 41 года до завершения строительство здания Крайслер в Нью-Йорке в 1930 году. Это первое сооружение которое достигло высоты 300 метров. Из-за добавления вещательной антенны на вершине башни в 1957 году она сейчас выше здания Крайслер на 5,2 метра (17 футов). За исключением передатчиков, Эйфелева башня является второй самой высокой отдельно стоящей структурой во Франции после виадука Мийо."""
35print(summarize(text))
36# Эйфелева башня достигла высоты 300 метров.
37print(summarize(text, n_words=10))
38# Французская Эйфелева башня достигла высоты 300 метров.