🚀 クメール語mT5要約モデル
このリポジトリには、クメール語テキストの要約用にファインチューニングされたmT5モデルが含まれています。このモデルはGoogleのmT5-smallをベースに、クメール語のテキストと対応する要約のデータセットでファインチューニングされています。
ファインチューニングはHugging FaceのTrainer
APIを使用して行われ、モデルはクメール語テキストの簡潔で意味のある要約を生成するように最適化されています。
🚀 モデルの詳細
- ベースモデル:
google/mt5-small
- ファインチューニング対象: クメール語テキストの要約
- 学習データセット:
kimleang123/khmer-text-dataset
- フレームワーク: Hugging Face
transformers
- タスクタイプ: シーケンス-to-シーケンス (Seq2Seq)
- 入力: クメール語のテキスト(記事、段落、またはドキュメント)
- 出力: 要約されたクメール語テキスト
- 学習ハードウェア: GPU (Tesla T4)
- 評価指標: ROUGE Score
📦 インストール
1️⃣ 依存関係のインストール
transformers
、torch
、およびdatasets
がインストールされていることを確認してください。
pip install transformers torch datasets
2️⃣ モデルの読み込み
ファインチューニングされたモデルを読み込んで使用するには、次のコードを実行します。
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model_name = "songhieng/khmer-mt5-summarization"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
💻 使用例
基本的な使用法
def summarize_khmer(text, max_length=150):
input_text = f"summarize: {text}"
inputs = tokenizer(input_text, return_tensors="pt", truncation=True, max_length=512)
summary_ids = model.generate(**inputs, max_length=max_length, num_beams=5, length_penalty=2.0, early_stopping=True)
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
return summary
khmer_text = "កម្ពុជាមានប្រជាជនប្រមាណ ១៦ លាននាក់ ហើយវាគឺជាប្រទេសនៅតំបន់អាស៊ីអាគ្នេយ៍។"
summary = summarize_khmer(khmer_text)
print("🔹 Khmer Summary:", summary)
高度な使用法
Hugging Face Pipelineを使用する場合
from transformers import pipeline
summarizer = pipeline("summarization", model="songhieng/khmer-mt5-summarization")
khmer_text = "កម្ពុជាមានប្រជាជនប្រមាណ ១៦ លាននាក់ ហើយវាគឺជាប្រទេសនៅតំបន់អាស៊ីអាគ្នេយ៍។"
summary = summarizer(khmer_text, max_length=150, min_length=30, do_sample=False)
print("🔹 Khmer Summary:", summary[0]['summary_text'])
FastAPIを使用してAPIとしてデプロイする場合
from fastapi import FastAPI
app = FastAPI()
@app.post("/summarize/")
def summarize(text: str):
inputs = tokenizer(f"summarize: {text}", return_tensors="pt", truncation=True, max_length=512)
summary_ids = model.generate(**inputs, max_length=150, num_beams=5, length_penalty=2.0, early_stopping=True)
summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
return {"summary": summary}
🔧 モデルの評価
このモデルはROUGEスコアを使用して評価されています。ROUGEスコアは、生成された要約が正解の要約とどれだけ類似しているかを測定します。
from datasets import load_metric
rouge = load_metric("rouge")
def compute_metrics(pred):
labels_ids = pred.label_ids
pred_ids = pred.predictions
decoded_preds = tokenizer.batch_decode(pred_ids, skip_special_tokens=True)
decoded_labels = tokenizer.batch_decode(labels_ids, skip_special_tokens=True)
return rouge.compute(predictions=decoded_preds, references=decoded_labels)
trainer.evaluate()
💾 モデルの保存とアップロード
ファインチューニング後、モデルはHugging Face Hubにアップロードされました。
model.push_to_hub("songhieng/khmer-mt5-summarization")
tokenizer.push_to_hub("songhieng/khmer-mt5-summarization")
後でダウンロードするには、次のコードを使用します。
model = AutoModelForSeq2SeqLM.from_pretrained("songhieng/khmer-mt5-summarization")
tokenizer = AutoTokenizer.from_pretrained("songhieng/khmer-mt5-summarization")
📚 詳細情報
属性 |
详情 |
ベースモデル |
google/mt5-small |
タスク |
要約 |
言語 |
クメール語 (ខ្មែរ) |
データセット |
kimleang123/khmer-text-dataset |
フレームワーク |
Hugging Face Transformers |
評価指標 |
ROUGE Score |
デプロイ方法 |
Hugging Face Model Hub、API (FastAPI)、Pythonコード |
🤝 コントリビューション
コントリビューションは大歓迎です!改善点が見つかった場合は、issueを開くか、プルリクエストを送信してください。
📬 お問い合わせ
質問がある場合は、Hugging Face Discussionsを通じて連絡を取るか、リポジトリにissueを作成してください。
📌 クメール語NLPコミュニティ向けに開発 🇰🇭 🚀
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。