--- 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 раза замедлить нашу разработку. ```