Update README.md
Browse files
README.md
CHANGED
@@ -1,3 +1,100 @@
|
|
1 |
---
|
|
|
2 |
license: apache-2.0
|
|
|
|
|
|
|
|
|
|
|
3 |
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
---
|
2 |
+
language: ru
|
3 |
license: apache-2.0
|
4 |
+
tags:
|
5 |
+
- PyTorch
|
6 |
+
- Transformers
|
7 |
+
widget:
|
8 |
+
- text: краеугольным камнем любышь алгоритных машиного обучения является преждес его обобщающая способности тогда мы обучаем некоторую модель у нас есть обучающая выборка унаситькюмся ошибки и наша задачи сводится вообщем такомптиминационной задачи мы минимизируем в функцию ошибки по параметрам нашей модели на обучающие выбрать но на самом деле хотим там и не этого мы не обучающую ошибку хотим минимизировать
|
9 |
---
|
10 |
+
|
11 |
+
# ruT5-ASR-large
|
12 |
+
|
13 |
+
Model was trained by [bond005](https://scholar.google.ru/citations?user=3AJKH38AAAAJ) to correct errors, restore punctuation and capitalization in the ASR output (in particular, output of [Wav2Vec2-Large-Ru-Golos](https://huggingface.co/bond005/wav2vec2-large-ru-golos)). The model is based on [ruT5-large](https://huggingface.co/ai-forever/ruT5-large).
|
14 |
+
|
15 |
+
## Usage
|
16 |
+
|
17 |
+
To correct ASR outputs the model can be used as a standalone sequence-to-sequence model as follows:
|
18 |
+
|
19 |
+
```python
|
20 |
+
from transformers import T5ForConditionalGeneration
|
21 |
+
from transformers import GenerationConfig
|
22 |
+
from transformers import T5Tokenizer
|
23 |
+
import torch
|
24 |
+
|
25 |
+
|
26 |
+
def restore_text(text: str, tokenizer: T5Tokenizer, config: GenerationConfig,
|
27 |
+
model: T5ForConditionalGeneration) -> str:
|
28 |
+
if len(text) == 0: # if an input text is empty, then we return an empty text too
|
29 |
+
return ''
|
30 |
+
x = tokenizer(text, return_tensors='pt', padding=True).to(model.device)
|
31 |
+
max_size = int(x.input_ids.shape[1] * 2.0 + 10)
|
32 |
+
min_size = 3
|
33 |
+
if x.input_ids.shape[1] <= min_size:
|
34 |
+
return text
|
35 |
+
out = model.generate(**x, generation_config=config, max_length=max_size)
|
36 |
+
res = tokenizer.decode(out[0], skip_special_tokens=True).strip()
|
37 |
+
return ' '.join(res.split())
|
38 |
+
|
39 |
+
|
40 |
+
# load model and tokenizer
|
41 |
+
tokenizer_for_restoring = T5Tokenizer.from_pretrained('bond005/ruT5-ASR-large')
|
42 |
+
model_for_restoring = T5ForConditionalGeneration.from_pretrained('bond005/ruT5-ASR-large')
|
43 |
+
config_for_restoring = GenerationConfig.from_pretrained('bond005/ruT5-ASR-large')
|
44 |
+
if torch.cuda.is_available():
|
45 |
+
model_for_restoring = model_for_rescoring.cuda()
|
46 |
+
|
47 |
+
input_examples = [
|
48 |
+
'краеугольным камнем любышь алгоритных машиного обучения является преждес его ' \
|
49 |
+
'обобщающая способности тогда мы обучаем некоторую модель у нас есть обучающая ' \
|
50 |
+
'выборка унаситькюмся ошибки и наша задачи сводится вообщем такомптиминационной ' \
|
51 |
+
'задачи мы минимизируем в функцию ошибки по параметрам нашей модели на обучающие ' \
|
52 |
+
'выбрать но на самом деле хотим там и не этого ' \
|
53 |
+
'мы не обучающую ошибку хотим минимизировать', # 0
|
54 |
+
'максимально ухучать идеальную систему в воде туда какие то элементы или условия ' \
|
55 |
+
'чтобы итоговое результат должен быть такой мы должны в двадцать два раза ' \
|
56 |
+
'замедлить нашу разработку' # 1
|
57 |
+
]
|
58 |
+
|
59 |
+
for idx, val in enumerate(input_examples):
|
60 |
+
restored = restore_text(val, tokenizer_for_rescoring,
|
61 |
+
config_for_restoring, model_for_rescoring)
|
62 |
+
print('==========')
|
63 |
+
print(f'Example {idx + 1}')
|
64 |
+
print('==========')
|
65 |
+
print('')
|
66 |
+
print('ASR output before restoring:')
|
67 |
+
print('')
|
68 |
+
print(val)
|
69 |
+
print('')
|
70 |
+
print('After restoring:')
|
71 |
+
print('')
|
72 |
+
print(restored)
|
73 |
+
print('')
|
74 |
+
```
|
75 |
+
|
76 |
+
```text
|
77 |
+
==========
|
78 |
+
Example 1
|
79 |
+
==========
|
80 |
+
|
81 |
+
ASR output before restoring:
|
82 |
+
|
83 |
+
краеугольным камнем любышь алгоритных машиного обучения является преждес его обобщающая способности тогда мы обучаем некоторую модель у нас есть обучающая выборка унаситькюмся ошибки и наша задачи сводится вообщем такомптиминационной задачи мы минимизируем в функцию ошибки по параметрам нашей модели на обучающие выбрать но на самом деле хотим там и не этого мы не обучающую ошибку хотим минимизировать
|
84 |
+
|
85 |
+
After restoring:
|
86 |
+
|
87 |
+
Краяугольным камнем любого алгоритма о��учения является прежде всего его обобщающая способность. Тогда мы обучаем некоторую модель, у нас есть обучающая выборка, у нас есть все те же ошибки, и наша задача сводится вообще к компенсационной задаче. Мы минимизируем функцию ошибки по параметрам нашей модели на обучающей выборке. Но на самом деле хотим там и не этого. Мы не обучающую ошибку хотим минимизировать.
|
88 |
+
|
89 |
+
==========
|
90 |
+
Example 2
|
91 |
+
==========
|
92 |
+
|
93 |
+
ASR output before restoring:
|
94 |
+
|
95 |
+
максимально ухучать идеальную систему в воде туда какие то элементы или условия чтобы итоговое результат должен быть такой мы должны в двадцать два раза замедлить нашу разработку
|
96 |
+
|
97 |
+
After restoring:
|
98 |
+
|
99 |
+
максимально ухудшить идеальную систему. Вводить туда какие-то элементы или условия, чтобы итоговый результат должен быть такой. Мы должны в 22 раза замедлить нашу разработку.
|
100 |
+
```
|