T5 Russian Summarization
音声書き起こしテキストを校正するT5モデル、ロシア語テキストの要約とスペル校正が可能
ダウンロード数 829
リリース時間 : 4/2/2022
モデル概要
このモデルは主にロシア語の音声書き起こしテキストの要約生成とスペル校正に使用され、wav2vec2-russian音声認識モデルと連携して使用します
モデル特徴
ロシア語テキスト処理
ロシア語テキストに特化した要約と校正能力
音声モデルとの統合
wav2vec2-russian音声認識モデルと連携可能で、完全な音声処理フローを形成
マルチタスク処理
テキスト要約生成とスペル校正の2機能を同時にサポート
モデル能力
ロシア語テキスト要約
スペル校正
音声書き起こし後処理
使用事例
メディアコンテンツ処理
ニュース要約生成
ロシア語ニュースの音声書き起こしテキストから自動的に簡潔な要約を生成
例に示す通り、長いニューステキストを短い要約に圧縮可能
音声認識後処理
音声書き起こし校正
音声認識モデルが出力したロシア語テキストの誤りを修正
🚀 t5-russian-summarization
このモデルは、音声認識されたテキストを修正するためのものです。音声認識モデルは https://huggingface.co/UrukHan/wav2vec2-russian で、その結果をこのモデルに入力できます。YouTubeのランダムな動画でテストしています。
🚀 クイックスタート
データセット情報
属性 | 详情 |
---|---|
データセット名 | UrukHan/t5-russian-summarization |
データセットURL | https://huggingface.co/datasets/UrukHan/t5-russian-summarization |
入力と出力の例
入力 | 出力 |
---|---|
「Запад после начала российской специальной операции по демилитаризации Украины ввел несколько раундов новых экономических санкций。В Кремле новые ограничения назвали серьезными, но отметили, что Россия готовилась к ним заранее。」 | 「Запад ввел новые санкции против России」 |
結果出力の実行例
コメント付きのColabでの実行例はこちら:https://colab.research.google.com/drive/1ame2va9_NflYqy4RZ07HYmQ0moJYy7w2?usp=sharing
# トランスフォーマーライブラリをインストール
!pip install transformers
# ライブラリをインポート
from transformers import AutoModelForSeq2SeqLM, T5TokenizerFast
# ハブから選択したモデルの名前を設定
MODEL_NAME = 'UrukHan/t5-russian-summarization'
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のリポジトリに保存するための設定済みのノートブックはこちら: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')
# Hugging Face Hubのキーを入力
from huggingface_hub import notebook_login
notebook_login()
# パラメータを定義
REPO = "t5-russian-summarization" # リポジトリの名前を入力
MODEL_NAME = "UrukHan/t5-russian-summarization" # ハブから選択したモデルの名前を入力
MAX_INPUT = 256 # 入力データの最大長をトークン単位で入力(入力フレーズの単語数(半分の単語をトークンとしてカウントできます))
MAX_OUTPUT = 64 # 予測の最大長をトークン単位で入力(要約などの出力が短いタスクでは減らすことができます)
BATCH_SIZE = 8
DATASET = 'UrukHan/t5-russian-summarization' # データセットの名前を入力
# データセットをロード
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)
# ラベルのパディングトークンIDを-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
# データを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