bond005 commited on
Commit
32762f5
1 Parent(s): f7b3e63

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +97 -0
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
+ ```