IlyaGusev commited on
Commit
97807dc
·
1 Parent(s): fd5bd14

Create README.md

Browse files
Files changed (1) hide show
  1. README.md +95 -0
README.md ADDED
@@ -0,0 +1,95 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ language:
3
+ - ru
4
+ - ru-RU
5
+ tags:
6
+ - summarization
7
+ - token-classification
8
+ - t5
9
+ datasets:
10
+ - IlyaGusev/gazeta
11
+ license: apache-2.0
12
+ widget:
13
+ - text: "Высота башни составляет 324 метра (1063 фута), примерно такая же высота, как у 81-этажного здания, и самое высокое сооружение в Париже.[SEP]Его основание квадратно, размером 125 метров (410 футов) с любой стороны.[SEP]Во время строительства Эйфелева башня превзошла монумент Вашингтона, став самым высоким искусственным сооружением в мире, и этот титул она удерживала в течение 41 года до завершения строительство здания Крайслер в Нью-Йорке в 1930 году.[SEP]Это первое сооружение которое достигло высоты 300 метров.[SEP]Из-за добавления вещательной антенны на вершине башни в 1957 году она сейчас выше здания Крайслер на 5,2 метра (17 футов).[SEP]За исключением передатчиков, Эйфелева башня является второй самой высокой отдельно стоящей структурой во Франции после виадука Мийо.[SEP]"
14
+ example_title: "Википедия"
15
+
16
+ ---
17
+
18
+ # RuBERTExtSumGazeta
19
+
20
+ ## Model description
21
+
22
+ Model for extractive summarization based on [rubert-base-cased](DeepPavlov/rubert-base-cased)
23
+
24
+ ## Intended uses & limitations
25
+
26
+ #### How to use
27
+
28
+ ```python
29
+ import razdel
30
+ from transformers import AutoTokenizer, BertForTokenClassification
31
+
32
+ model_name = "IlyaGusev/rubert_ext_sum_gazeta"
33
+
34
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
35
+ sep_token = tokenizer.sep_token
36
+ sep_token_id = tokenizer.sep_token_id
37
+
38
+ model = BertForTokenClassification.from_pretrained(model_name)
39
+
40
+ article_text = "..."
41
+ sentences = [s.text for s in razdel.sentenize(article_text)]
42
+ article_text = sep_token.join(sentences)
43
+
44
+ inputs = tokenizer(
45
+ [article_text],
46
+ max_length=500,
47
+ padding="max_length",
48
+ truncation=True,
49
+ return_tensors="pt",
50
+ )
51
+ sep_mask = inputs["input_ids"] == sep_token_id
52
+
53
+ # Fix token_type_ids
54
+ current_token_type_id = 0
55
+ for pos, input_id in enumerate(inputs["input_ids"][0]):
56
+ inputs["token_type_ids"][0][pos] = current_token_type_id
57
+ if input_id == sep_token_id:
58
+ current_token_type_id = 1 - current_token_type_id
59
+
60
+ # Infer model
61
+ with torch.no_grad():
62
+ outputs = model(**inputs)
63
+ logits = outputs.logits[:, :, 1][0]
64
+
65
+ # Choose sentences
66
+ logits = logits[sep_mask]
67
+ logits, indices = logits.sort(descending=True)
68
+ logits, indices = logits.cpu().tolist(), indices.cpu().tolist()
69
+ pairs = list(zip(logits, indices))
70
+ pairs = pairs[:3]
71
+ indices = [idx for _, idx in pairs]
72
+ summary = " ".join([sentences[idx] for idx in indices])
73
+ print(summary)
74
+ ```
75
+
76
+ #### Limitations and bias
77
+
78
+ - The model should work well with Gazeta.ru articles, but for any other agencies it can suffer from domain shift
79
+
80
+
81
+ ## Training data
82
+
83
+ - Dataset: [Gazeta](https://huggingface.co/datasets/IlyaGusev/gazeta)
84
+
85
+ ## Training procedure
86
+
87
+ TBD
88
+
89
+ ## Eval results
90
+
91
+ TBD
92
+
93
+ Evaluation: https://github.com/IlyaGusev/summarus/blob/master/evaluate.py
94
+
95
+ Flags: --language ru --tokenize-after --lower