语言: 俄语
许可证: Apache-2.0
标签:
- PyTorch
- Transformers
输入示例:
- 文本: "机器学习任何算法的基石首先在于其泛化能力。当我们训练某个模型时,我们拥有训练样本,存在误差,而我们的任务总体上可归结为这样一个优化问题:我们通过模型参数在训练集上最小化误差函数。但实际上我们想要的并非如此,我们并非要最小化训练误差。"
- 文本: "这是识别错误"
ruT5-ASR-large模型
该模型由bond005训练,用于纠正自动语音识别(ASR)输出中的错误、恢复标点符号及大小写(特别是针对Wav2Vec2-Large-Ru-Golos的输出)。模型基于ruT5-large架构。
使用方法
该模型可作为独立序列到序列模型校正ASR输出,示例如下:
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:
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())
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 = [
'机器学习任何算法的基石首先在于其泛化能力。当我们训练某个模型时,我们拥有训练样本,存在误差,而我们的任务总体上可归结为这样一个优化问题:我们通过模型参数在训练集上最小化误差函数。但实际上我们想要的并非如此,我们并非要最小化训练误差',
'在理想系统中极力引入干扰元素或条件,最终结果要求我们必须将开发速度降低二十二倍'
]
for idx, val in enumerate(input_examples):
restored = restore_text(val, tokenizer_for_restoring,
config_for_restoring, model_for_restoring)
print('==========')
print(f'示例 {idx + 1}')
print('==========')
print('')
print('修复前的ASR输出:')
print('')
print(val)
print('')
print('修复后:')
print('')
print(restored)
print('')
==========
示例 1
==========
修复前的ASR输出:
机器学习任何算法的基石首先在于其泛化能力。当我们训练某个模型时,我们拥有训练样本,存在误差,而我们的任务总体上可归结为这样一个优化问题:我们通过模型参数在训练集上最小化误差函数。但实际上我们想要的并非如此,我们并非要最小化训练误差
修复后:
机器学习任何算法的基石首先在于其泛化能力。当我们训练某个模型时,我们拥有训练样本,存在关键误差,而我们的任务总体上可归结为补偿性问题。我们通过模型参数在训练集上最小化误差函数,但实际上我们想要的并非如此。我们并非要最小化训练误差。
==========
示例 2
==========
修复前的ASR输出:
在理想系统中极力引入干扰元素或条件,最终结果要求我们必须将开发速度降低二十二倍
修复后:
在理想系统中极力引入干扰元素或条件。最终结果要求我们必须将开发速度降低22倍。