|
--- |
|
language: ru |
|
license: apache-2.0 |
|
tags: |
|
- PyTorch |
|
- Transformers |
|
widget: |
|
- text: краеугольным камнем любышь алгоритных машиного обучения является преждес его обобщающая способности тогда мы обучаем некоторую модель у нас есть обучающая выборка унаситькюмся ошибки и наша задачи сводится вообщем такомптиминационной задачи мы минимизируем в функцию ошибки по параметрам нашей модели на обучающие выбрать но на самом деле хотим там и не этого мы не обучающую ошибку хотим минимизировать |
|
- text: это ашибкараспознаваня |
|
--- |
|
|
|
# ruT5-ASR-large |
|
|
|
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). |
|
|
|
## Usage |
|
|
|
To correct ASR outputs the model can be used as a standalone sequence-to-sequence model as follows: |
|
|
|
```python |
|
from transformers import T5ForConditionalGeneration |
|
from transformers import GenerationConfig |
|
from transformers import T5Tokenizer |
|
import torch |
|
|
|
|
|
def restore_text(text: str, tokenizer: T5Tokenizer, config: GenerationConfig, |
|
model: T5ForConditionalGeneration) -> str: |
|
if len(text) == 0: # if an input text is empty, then we return an empty text too |
|
return '' |
|
x = tokenizer(text, return_tensors='pt', padding=True).to(model.device) |
|
max_size = int(x.input_ids.shape[1] * 2.0 + 10) |
|
min_size = 3 |
|
if x.input_ids.shape[1] <= min_size: |
|
return text |
|
out = model.generate(**x, generation_config=config, max_length=max_size) |
|
res = tokenizer.decode(out[0], skip_special_tokens=True).strip() |
|
return ' '.join(res.split()) |
|
|
|
|
|
# load model and tokenizer |
|
tokenizer_for_restoring = T5Tokenizer.from_pretrained('bond005/ruT5-ASR-large') |
|
model_for_restoring = T5ForConditionalGeneration.from_pretrained('bond005/ruT5-ASR-large') |
|
config_for_restoring = GenerationConfig.from_pretrained('bond005/ruT5-ASR-large') |
|
if torch.cuda.is_available(): |
|
model_for_restoring = model_for_restoring.cuda() |
|
|
|
input_examples = [ |
|
'краеугольным камнем любышь алгоритных машиного обучения является преждес его ' \ |
|
'обобщающая способности тогда мы обучаем некоторую модель у нас есть обучающая ' \ |
|
'выборка унаситькюмся ошибки и наша задачи сводится вообщем такомптиминационной ' \ |
|
'задачи мы минимизируем в функцию ошибки по параметрам нашей модели на обучающие ' \ |
|
'выбрать но на самом деле хотим там и не этого ' \ |
|
'мы не обучающую ошибку хотим минимизировать', # 0 |
|
'максимально ухучать идеальную систему в воде туда какие то элементы или условия ' \ |
|
'чтобы итоговое результат должен быть такой мы должны в двадцать два раза ' \ |
|
'замедлить нашу разработку' # 1 |
|
] |
|
|
|
for idx, val in enumerate(input_examples): |
|
restored = restore_text(val, tokenizer_for_restoring, |
|
config_for_restoring, model_for_restoring) |
|
print('==========') |
|
print(f'Example {idx + 1}') |
|
print('==========') |
|
print('') |
|
print('ASR output before restoring:') |
|
print('') |
|
print(val) |
|
print('') |
|
print('After restoring:') |
|
print('') |
|
print(restored) |
|
print('') |
|
``` |
|
|
|
```text |
|
========== |
|
Example 1 |
|
========== |
|
|
|
ASR output before restoring: |
|
|
|
краеугольным камнем любышь алгоритных машиного обучения является преждес его обобщающая способности тогда мы обучаем некоторую модель у нас есть обучающая выборка унаситькюмся ошибки и наша задачи сводится вообщем такомптиминационной задачи мы минимизируем в функцию ошибки по параметрам нашей модели на обучающие выбрать но на самом деле хотим там и не этого мы не обучающую ошибку хотим минимизировать |
|
|
|
After restoring: |
|
|
|
Краеугольным камнем любого алгоритма машинного обучения является прежде всего его общая способность. Тогда мы обучаем некоторую модель, у нас есть обучающая выборка, у нас есть критическая ошибка, и наша задача сводится в общем к компенсационной задаче. Мы минимизируем функцию ошибки по параметрам нашей модели на обучающую выборку, но на самом деле хотим там и не этого. Мы не обучающую ошибку хотим минимизировать. |
|
|
|
========== |
|
Example 2 |
|
========== |
|
|
|
ASR output before restoring: |
|
|
|
максимально ухучать идеальную систему в воде туда какие то элементы или условия чтобы итоговое результат должен быть такой мы должны в двадцать два раза замедлить нашу разработку |
|
|
|
After restoring: |
|
|
|
Максимально ухудшать идеальную систему, вводить туда какие-то элементы или условия. Чтобы итоговый результат должен быть такой, мы должны в 22 раза замедлить нашу разработку. |
|
``` |