用于校正从音频识别文本的俄语拼写校正模型,可与wav2vec2音频识别模型配合使用
下载量 1,910
发布时间 : 3/29/2022
模型介绍
内容详情
替代品
模型简介
该模型主要用于校正从俄语语音识别系统(如wav2vec2)输出的文本,提高识别结果的准确性。已在随机YouTube视频上进行测试验证。
模型特点
音频识别文本校正
专门针对语音识别系统输出的俄语文本进行拼写和语法校正
与wav2vec2集成
可与UrukHan/wav2vec2-russian语音识别模型无缝配合使用
上下文感知校正
能够理解上下文进行更准确的拼写和语法修正
模型能力
俄语文本拼写校正
语法错误修正
语音识别后处理
文本规范化
使用案例
语音识别增强
语音识别结果校正
对语音识别系统输出的俄语文本进行自动校正
显著提高语音识别文本的准确性和可读性
内容处理
自动字幕校正
校正视频自动生成字幕中的拼写和语法错误
提高字幕质量和观看体验
标签:
- 由训练器生成 数据集: UrukHan/wav2vec2-russian 小部件:
- 文本: "ывсем привет выныканалетоп армии и это двадцать пятый день спец операций на украине ет самый главной новости российские военные ракетами кинжалы калибр уничтожили крупную военную топливную базу украины ракетным ударом по населенному пункту под жетамиром уничтжены более стаукраинских военных в две тысячи двадцать втором году" 模型索引:
- 名称: t5-russian-spell 结果: []
t5-russian-spell
用于校正从音频识别文本的模型。我的音频识别模型位于 https://huggingface.co/UrukHan/wav2vec2-russian,其输出结果可以输入此模型进行校正。已在随机YouTube视频上进行测试。
wav2vec2输出 | 拼写校正输出 |
ывсем привет выныканалетоп армии и это двадцать пятый день спец операций на украине ет самый главной новости российские военные ракетами кинжалы калибр уничтожили крупную военную топливную базу украины ракетным ударом по населенному пункту под жетамиром уничтжены более стаукраинских военных в две тысячи двадцать втором году | Всем привет! Вы в курсе новостей от армии. И это 25 день спецопераций на Украине. Есть самые главные новости. Российские военные ракетами «Кинжалы» и «Кинжалы» калибра уничтожили крупную военную топливную базу Украины. Ракетным ударом по населенному пункту под Жетамиром уничтожены более ста украинских военных в 2022г. |
训练用数据集: UrukHan/t5-russian-spell_I : https://huggingface.co/datasets/UrukHan/t5-russian-spell_I UrukHan/t5-russian-spell_II : https://huggingface.co/datasets/UrukHan/t5-russian-spell_II UrukHan/t5-russian-spell_III : https://huggingface.co/datasets/UrukHan/t5-russian-spell_III
运行推理示例及Colab笔记本说明
https://colab.research.google.com/drive/1ame2va9_NflYqy4RZ07HYmQ0moJYy7w2?usp=sharing :
# 安装transformers库
!pip install transformers
# 导入库
from transformers import AutoModelForSeq2SeqLM, T5TokenizerFast
# 设置选择的模型名称
MODEL_NAME = 'UrukHan/t5-russian-spell'
MAX_INPUT = 256
# 加载模型和分词器
tokenizer = T5TokenizerFast.from_pretrained(MODEL_NAME)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME)
# 输入数据(可以是短语数组或文本)
input_sequences = ['сеглдыя хорош ден', 'когд а вы прдет к нам в госи'] # 或使用单条短语: input_sequences = 'сеглдыя хорош ден'
task_prefix = "拼写校正: " # 数据分词
if type(input_sequences) != list: input_sequences = [input_sequences]
encoded = tokenizer(
[task_prefix + sequence for sequence in input_sequences],
padding="longest",
max_length=MAX_INPUT,
truncation=True,
return_tensors="pt",
)
predicts = model.generate(encoded) # 预测
tokenizer.batch_decode(predicts, skip_special_tokens=True) # 解码数据
用于训练和保存模型到HuggingFace Hub的配置笔记本:
https://colab.research.google.com/drive/1H4IoasDqa2TEjGivVDp-4Pdpm0oxrCWd?usp=sharing
# 安装库
!pip install datasets
!apt install git-lfs
!pip install transformers
!pip install sentencepiece
!pip install rouge_score
# 导入库
import numpy as np
from datasets import Dataset
import tensorflow as
import nltk
from transformers import T5TokenizerFast, Seq2SeqTrainingArguments, Seq2SeqTrainer, AutoModelForSeq2SeqLM, DataCollatorForSeq2Seq
import torch
from transformers.optimization import Adafactor, AdafactorSchedule
from datasets import load_dataset, load_metric
# 加载参数
raw_datasets = load_dataset("xsum")
metric = load_metric("rouge")
nltk.download('punkt')
# 输入HuggingFace Hub密钥
from huggingface_hub import notebook_login
notebook_login()
# 定义参数
REPO = "t5-russian-spell" # 输入仓库名称
MODEL_NAME = "UrukHan/t5-russian-spell" # 输入选择的模型名称
MAX_INPUT = 256 # 输入最大输入token长度
MAX_OUTPUT = 256 # 输入最大输出token长度
BATCH_SIZE = 8
DATASET = 'UrukHan/t5-russian-spell_I' # 输入数据集名称
# 加载数据集
data = load_dataset(DATASET)
# 加载模型和分词器
tokenizer = T5TokenizerFast.from_pretrained(MODEL_NAME)
model = AutoModelForSeq2SeqLM.from_pretrained(MODEL_NAME)
model.config.max_length = MAX_OUTPUT # 默认20,所以所有模型的预测输出序列会被截断
# 首次保存到仓库后可以注释掉
tokenizer.push_to_hub(repo_name)
train = data['train']
test = data['test'].train_test_split(0.02)['test'] # 减少测试集规模以加快epoch间错误计算
data_collator = DataCollatorForSeq2Seq(tokenizer, model=model) #return_tensors="tf"
def compute_metrics(eval_pred):
predictions, labels = eval_pred
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=True)
# 替换标签中的-100为pad_token_id
labels = np.where(labels != -100, labels, tokenizer.pad_token_id)
decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True)
# Rouge期望每句后有换行符
decoded_preds = ["\n".join(nltk.sent_tokenize(pred.strip())) for pred in decoded_preds]
decoded_labels = ["\n".join(nltk.sent_tokenize(label.strip())) for label in decoded_labels]
result = metric.compute(predictions=decoded_preds, references=decoded_labels, use_stemmer=True)
# 提取部分结果
result = {key: value.mid.fmeasure * 100 for key, value in result.items()}
# 添加平均生成长度
prediction_lens = [np.count_nonzero(pred != tokenizer.pad_token_id) for pred in predictions]
result["gen_len"] = np.mean(prediction_lens)
return {k: round(v, 4) for k, v in result.items()}
training_args = Seq2SeqTrainingArguments(
output_dir = REPO,
evaluation_strategy='steps',
eval_steps=5000,
save_steps=5000,
num_train_epochs=1,
predict_with_generate=True,
per_device_train_batch_size=BATCH_SIZE,
per_device_eval_batch_size=BATCH_SIZE,
fp16=True,
save_total_limit=2,
weight_decay=0.005,
push_to_hub=True,
)
# 手动选择优化器。原始T5架构使用Adafactor优化器
optimizer = Adafactor(
model.parameters(),
lr=1e-5,
eps=(1e-30, 1e-3),
clip_threshold=1.0,
decay_rate=-0.8,
beta1=None,
weight_decay=0.0,
relative_step=False,
scale_parameter=False,
warmup_init=False,
)
lr_scheduler = AdafactorSchedule(optimizer)
trainer = Seq2SeqTrainer(
model=model,
args=training_args,
train_dataset = train,
eval_dataset = test,
optimizers = (optimizer, lr_scheduler),
tokenizer = tokenizer,
compute_metrics=compute_metrics
)
trainer.train()
trainer.push_to_hub()
数据格式转换示例
input_data = ['удач почти отнее отвернулась', 'в хааоде проведения чемпиониавта мира дветысячивосемнандцтая лгодаа']
output_data = ['Удача почти от нее отвернулась', 'в ходе проведения чемпионата мира две тысячи восемнадцатого года']
# 分词输入数据
task_prefix = "拼写校正: "
input_sequences = input_data
encoding = tokenizer(
[task_prefix + sequence for sequence in input_sequences],
padding="longest",
max_length=MAX_INPUT,
truncation=True,
return_tensors="pt",
)
input_ids, attention_mask = encoding.input_ids, encoding.attention_mask
# 分词输出数据
target_encoding = tokenizer(output_data, padding="longest", max_length=MAX_OUTPUT, truncation=True)
labels = target_encoding.input_ids
# 将标签中的填充token id替换为-100
labels = torch.tensor(labels)
labels[labels == tokenizer.pad_token_id] = -100'''
# 将数据转换为dataset格式
data = Dataset.from_pandas(pd.DataFrame({'input_ids': list(np.array(input_ids)), 'attention_mask': list(np.array(attention_mask)), 'labels': list(np.array(labels))}))
data = data.train_test_split(0.02)
# 最终得到训练器的输入: train_dataset = data['train'], eval_dataset = data['test']
Bart Large Cnn
MIT
基于英语语料预训练的BART模型,专门针对CNN每日邮报数据集进行微调,适用于文本摘要任务
文本生成
英语
B
facebook
3.8M
1,364
Parrot Paraphraser On T5
Parrot是一个基于T5的释义框架,专为加速训练自然语言理解(NLU)模型而设计,通过生成高质量释义实现数据增强。
文本生成
Transformers

P
prithivida
910.07k
152
Distilbart Cnn 12 6
Apache-2.0
DistilBART是BART模型的蒸馏版本,专门针对文本摘要任务进行了优化,在保持较高性能的同时显著提升了推理速度。
文本生成
英语
D
sshleifer
783.96k
278
T5 Base Summarization Claim Extractor
基于T5架构的模型,专门用于从摘要文本中提取原子声明,是摘要事实性评估流程的关键组件。
文本生成
Transformers

英语
T
Babelscape
666.36k
9
Unieval Sum
UniEval是一个统一的多维评估器,用于自然语言生成任务的自动评估,支持多个可解释维度的评估。
文本生成
Transformers

U
MingZhong
318.08k
3
Pegasus Paraphrase
Apache-2.0
基于PEGASUS架构微调的文本复述模型,能够生成语义相同但表达不同的句子。
文本生成
Transformers

英语
P
tuner007
209.03k
185
T5 Base Korean Summarization
这是一个基于T5架构的韩语文本摘要模型,专为韩语文本摘要任务设计,通过微调paust/pko-t5-base模型在多个韩语数据集上训练而成。
文本生成
Transformers

韩语
T
eenzeenee
148.32k
25
Pegasus Xsum
PEGASUS是一种基于Transformer的预训练模型,专门用于抽象文本摘要任务。
文本生成
英语
P
google
144.72k
198
Bart Large Cnn Samsum
MIT
基于BART-large架构的对话摘要模型,专为SAMSum语料库微调,适用于生成对话摘要。
文本生成
Transformers

英语
B
philschmid
141.28k
258
Kobart Summarization
MIT
基于KoBART架构的韩语文本摘要模型,能够生成韩语新闻文章的简洁摘要。
文本生成
Transformers

韩语
K
gogamza
119.18k
12
精选推荐AI模型
Llama 3 Typhoon V1.5x 8b Instruct
专为泰语设计的80亿参数指令模型,性能媲美GPT-3.5-turbo,优化了应用场景、检索增强生成、受限生成和推理任务
大型语言模型
Transformers

支持多种语言
L
scb10x
3,269
16
Cadet Tiny
Openrail
Cadet-Tiny是一个基于SODA数据集训练的超小型对话模型,专为边缘设备推理设计,体积仅为Cosmo-3B模型的2%左右。
对话系统
Transformers

英语
C
ToddGoldfarb
2,691
6
Roberta Base Chinese Extractive Qa
基于RoBERTa架构的中文抽取式问答模型,适用于从给定文本中提取答案的任务。
问答系统
中文
R
uer
2,694
98
AIbase是一个专注于MCP服务的平台,为AI开发者提供高质量的模型上下文协议服务,助力AI应用开发。
简体中文