T5 Russian Spell
用於校正從音頻識別文本的俄語拼寫校正模型,可與wav2vec2音頻識別模型配合使用
下載量 1,910
發布時間 : 3/29/2022
模型概述
該模型主要用於校正從俄語語音識別系統(如wav2vec2)輸出的文本,提高識別結果的準確性。已在隨機YouTube視頻上進行測試驗證。
模型特點
音頻識別文本校正
專門針對語音識別系統輸出的俄語文本進行拼寫和語法校正
與wav2vec2集成
可與UrukHan/wav2vec2-russian語音識別模型無縫配合使用
上下文感知校正
能夠理解上下文進行更準確的拼寫和語法修正
模型能力
俄語文本拼寫校正
語法錯誤修正
語音識別後處理
文本規範化
使用案例
語音識別增強
語音識別結果校正
對語音識別系統輸出的俄語文本進行自動校正
顯著提高語音識別文本的準確性和可讀性
內容處理
自動字幕校正
校正視頻自動生成字幕中的拼寫和語法錯誤
提高字幕質量和觀看體驗
🚀 t5-russian-spell
這是一個用於糾正從音頻識別文本的模型。可以將我的音頻識別模型(https://huggingface.co/UrukHan/wav2vec2-russian )的識別結果輸入到這個模型中。我已經在隨機選取的YouTube視頻上進行了測試。
🚀 快速開始
運行示例代碼
你可以在Colab中運行以下示例代碼來查看模型的運行結果:點擊此處查看Colab代碼
# 安裝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 = "Spell correct: " # 數據分詞
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) # 解碼數據
運行訓練和保存模型
你可以使用以下配置好的筆記本在Hugging Face Hub上運行訓練並將模型保存到自己的倉庫中:點擊此處查看Colab代碼
# 安裝庫
!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')
# 輸入你的Hugging Face Hub密鑰
from huggingface_hub import notebook_login
notebook_login()
# 定義參數
REPO = "t5-russian-spell" # 輸入倉庫名稱
MODEL_NAME = "UrukHan/t5-russian-spell" # 輸入從模型中心選擇的模型名稱
MAX_INPUT = 256 # 輸入最大輸入數據長度(以標記為單位)(輸入短語的單詞長度(可以將半個單詞視為一個標記))
MAX_OUTPUT = 256 # 輸入最大預測長度(以標記為單位)(對於摘要任務或其他輸出較短的任務,可以減小此值)
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'] # 減小測試集,以免在各輪訓練之間等待很長時間來計算誤差
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,因為我們無法對其進行解碼
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,
#overwrite_output_dir=True,
evaluation_strategy='steps',
#learning_rate=2e-5,
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,
#generation_max_length=256,
#generation_num_beams=4,
weight_decay=0.005,
#logging_dir='logs',
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 = "Spell correct: "
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
# 將標籤中的填充標記ID替換為-100
labels = torch.tensor(labels)
labels[labels == tokenizer.pad_token_id] = -100
# 將我們的數據轉換為數據集格式
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']
✨ 主要特性
該模型能夠有效糾正音頻識別文本中的拼寫錯誤,以下是一個對比示例:
語音識別輸出 | 模型糾錯輸出 |
---|---|
ывсем привет выныканалетоп армии и это двадцать пятый день спец операций на украине ет самый главной новости российские военные ракетами кинжалы калибр уничтожили крупную военную топливную базу украины ракетным ударом по населенному пункту под жетамиром уничтжены более стаукраинских военных в две тысячи двадцать втором году | Всем привет! Вы в курсе новостей от армии. И это 25 день спецопераций на Украине. Есть самые главные новости. Российские военные ракетами «Кинжалы» и «Кинжалы» калибра уничтожили крупную военную топливную базу Украины. Ракетным ударом по населенному пункту под Жетамиром уничтожены более ста украинских военных в 2022г. |
📦 安裝指南
在運行代碼前,你需要安裝以下依賴庫:
!pip install datasets
!apt install git-lfs
!pip install transformers
!pip install sentencepiece
!pip install rouge_score
📚 詳細文檔
訓練數據集
以下是用於訓練該模型的數據集:
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