🚀 高棉語mT5摘要模型(1024個標記) - V2
本項目是一個用於高棉語文本摘要的模型,基於google/mt5-small
微調而來。通過在擴展數據集上訓練,該模型在高棉語文本摘要任務上表現出色。
🚀 快速開始
安裝依賴
確保你已經安裝了transformers
、torch
和datasets
:
pip install transformers torch datasets
加載模型
要加載並使用微調後的模型,可以使用以下代碼:
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model_name = "songhieng/khmer-mt5-summarization-1024tk-V2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
✨ 主要特性
- 基礎模型:
google/mt5-small
- 微調任務:高棉語文本摘要,支持擴展輸入長度
- 訓練數據集:
kimleang123/rfi_news
+ 之前的數據集
- 框架:Hugging Face
transformers
- 任務類型:序列到序列(Seq2Seq)
- 輸入:最多1024個標記的高棉語文本(文章、段落或文檔)
- 輸出:摘要後的高棉語文本
- 訓練硬件:GPU(Tesla T4)
- 評估指標:ROUGE分數
📦 安裝指南
1️⃣ 安裝依賴
確保你已經安裝了transformers
、torch
和datasets
:
pip install transformers torch datasets
2️⃣ 加載模型
要加載並使用微調後的模型,可以使用以下代碼:
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer
model_name = "songhieng/khmer-mt5-summarization-1024tk-V2"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
💻 使用示例
基礎用法
使用Python代碼
def summarize_khmer(text, max_length=150):
input_text = f"summarize: {text}"
inputs = tokenizer(input_text, return_tensors="pt", truncation=True, max_length=1024)
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-1024tk-V2")
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=1024)
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分數進行評估,該分數用於衡量生成摘要與參考摘要之間的相似度。
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-1024tk-V2")
tokenizer.push_to_hub("songhieng/khmer-mt5-summarization-1024tk-V2")
要在以後下載模型,可以使用以下代碼:
model = AutoModelForSeq2SeqLM.from_pretrained("songhieng/khmer-mt5-summarization-1024tk-V2")
tokenizer = AutoTokenizer.from_pretrained("songhieng/khmer-mt5-summarization-1024tk-V2")
📚 詳細文檔
屬性 |
詳情 |
基礎模型 |
google/mt5-small |
任務 |
摘要 |
語言 |
高棉語(ខ្មែរ) |
數據集 |
kimleang123/rfi_news + 之前的數據集 |
框架 |
Hugging Face Transformers |
評估指標 |
ROUGE分數 |
部署方式 |
Hugging Face模型中心、API(FastAPI)、Python代碼 |
📄 許可證
本項目採用Apache-2.0許可證。
🤝 貢獻
歡迎貢獻!如果你有任何改進或建議,請隨時提出問題或提交拉取請求。
聯繫我們
如果你有任何問題,可以通過Hugging Face討論區聯繫我們,或者在倉庫中創建一個問題。
為高棉語自然語言處理社區而構建