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 |
+
```
|