T5 Russian Spell
音声認識テキストのロシア語スペル修正モデル。wav2vec2音声認識モデルと連携可能
ダウンロード数 1,910
リリース時間 : 3/29/2022
モデル概要
このモデルは主にロシア語音声認識システム(wav2vec2など)の出力テキストを校正し、認識精度を向上させます。ランダムなYouTube動画でテスト済みです。
モデル特徴
音声認識テキスト校正
音声認識システム出力のロシア語テキスト向けにスペル・文法校正を専門化
wav2vec2連携
UrukHan/wav2vec2-russian音声認識モデルとシームレスに連携可能
文脈考慮型修正
文脈を理解してより正確なスペル・文法修正が可能
モデル能力
ロシア語テキストスペル修正
文法誤り修正
音声認識後処理
テキスト正規化
使用事例
音声認識強化
音声認識結果校正
音声認識システム出力のロシア語テキストを自動修正
音声認識テキストの精度と可読性を大幅向上
コンテンツ処理
自動字幕校正
動画自動生成字幕のスペル・文法誤りを修正
字幕品質と視聴体験を向上
🚀 t5-russian-spell
このモデルは、音声認識されたテキストを修正するためのものです。音声認識用のモデルはこちらで、その結果をこのモデルに入力できます。YouTubeのランダムな動画でテストしています。
🚀 クイックスタート
モデルの概要
このモデルは、音声認識結果の文章を修正するために使用されます。以下は、音声認識結果と修正後の文章の例です。
項目 | 詳細 |
---|---|
モデル名 | t5-russian-spell |
音声認識モデル | UrukHan/wav2vec2-russian |
wav2vec2の出力 | スペル修正器の出力 |
---|---|
ывсем привет выныканалетоп армии и это двадцать пятый день спец операций на украине ет самый главной новости российские военные ракетами кинжалы калибр уничтожили крупную военную топливную базу украины ракетным ударом по населенному пункту под жетамиром уничтжены более стаукраинских военных в две тысячи двадцать втором году | 皆さん、こんにちは!あなたは軍隊からのニュースを知っています。そして、これはウクライナでの特別軍事作戦の25日目です。最も重要なニュースがあります。ロシア軍は、「キンジャル」と「キンジャル」カリブラのミサイルで、ウクライナの大規模な軍用燃料基地を破壊しました。ゼタミロ近郊の居住地へのミサイル攻撃により、100人以上のウクライナ軍人が死亡しました。2022年。 |
学習データセット
💻 使用例
基本的な使用法
# トランスフォーマーライブラリのインストール
!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) # データのデコード
高度な使用法
学習の実行とモデルの保存
# ライブラリのインストール
!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 hybのキーを入力
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,
)
# オプティマイザーを手動で選択
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
# データをdataset形式に変換
import pandas as pd
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)
# そして、trainerに入力するデータセットを取得: 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アーキテクチャに基づく中国語抽出型QAモデルで、与えられたテキストから回答を抽出するタスクに適しています。
質問応答システム 中国語
R
uer
2,694
98