my-awesome-model / simple_create_model.py
Hank
Add complete Chinese sentiment analysis model
740d610
#!/usr/bin/env python3
"""
簡單的中文情感分析模型創建腳本
基於 bert-base-chinese 創建一個可推理的模型
"""
from transformers import (
BertTokenizer,
BertForSequenceClassification,
pipeline
)
import torch
def create_model():
"""創建基於 BERT 的中文情感分析模型"""
print("正在載入 bert-base-chinese...")
# 載入預訓練的中文 BERT 模型
model_name = "bert-base-chinese"
# 載入 tokenizer
tokenizer = BertTokenizer.from_pretrained(model_name)
# 載入模型並設置為分類任務
model = BertForSequenceClassification.from_pretrained(
model_name,
num_labels=2, # 正面、負面情感
id2label={0: "NEGATIVE", 1: "POSITIVE"},
label2id={"NEGATIVE": 0, "POSITIVE": 1}
)
print("✅ 模型載入完成!")
return model, tokenizer
def save_model(model, tokenizer, save_path="./"):
"""保存模型到指定路徑"""
print(f"正在保存模型到 {save_path}...")
# 保存模型檔案
model.save_pretrained(save_path)
tokenizer.save_pretrained(save_path)
print("✅ 模型保存完成!")
# 列出生成的檔案
import os
print("\\n生成的檔案:")
for file in sorted(os.listdir(save_path)):
if not file.startswith('.'):
print(f" 📄 {file}")
def test_model(model_path="./"):
"""測試模型推理功能"""
print("\\n=== 測試模型推理 ===")
try:
# 創建分類器
classifier = pipeline(
"text-classification",
model=model_path,
tokenizer=model_path
)
# 測試文本
test_texts = [
"這個產品真的很棒!我很喜歡。",
"質量太差了,完全不值得購買。",
"還不錯,可以考慮。",
"非常滿意這次的服務體驗。"
]
print("\\n推理結果:")
for i, text in enumerate(test_texts, 1):
result = classifier(text)
label = result[0]['label']
score = result[0]['score']
print(f"{i}. 文本: {text}")
print(f" 預測: {label} (信心度: {score:.4f})")
print()
print("✅ 推理測試完成!")
except Exception as e:
print(f"❌ 推理測試失敗: {e}")
if __name__ == "__main__":
print("🚀 開始創建中文情感分析模型...")
try:
# 創建模型
model, tokenizer = create_model()
# 保存模型
save_model(model, tokenizer)
# 測試模型
test_model()
print("\\n" + "="*50)
print("🎉 模型創建成功!")
print("\\n📋 下一步:")
print("1. git add . && git commit -m 'Add trained model'")
print("2. git push origin main")
print("3. 其他人可以使用:")
print(" from transformers import pipeline")
print(" classifier = pipeline('text-classification', model='sk413025/my-awesome-model')")
except Exception as e:
print(f"❌ 錯誤: {e}")
print("請確保網路連接正常,能夠下載 bert-base-chinese 模型")