许可证: mit
数据集:
- sepidmnorozy/Indonesian_sentiment
语言:
- id
基础模型:
- google-bert/bert-base-uncased
管道标签: 文本分类
该存储库包含一个经过微调的BERT模型,用于情感分析。该模型经过训练,可以将文本分类为两种情感类别:0(负面)和1(正面)。以下是模型性能和训练细节的摘要。
模型性能摘要
模型在评估数据集上取得了以下性能指标:
类别 |
精确率 |
召回率 |
F1分数 |
支持数 |
0 |
0.88 |
0.84 |
0.86 |
799 |
1 |
0.92 |
0.94 |
0.93 |
1467 |
准确率: 0.91
宏平均 |
加权平均 |
精确率 = 0.90 召回率 = 0.89 F1分数 = 0.90 |
精确率 = 0.90 召回率 = 0.91 F1分数 = 0.90 |
训练细节
模型架构 |
BERT(来自Transformers的双向编码器表示) |
任务 |
情感分析(二元分类) |
训练轮数 |
5 |
硬件 |
NVIDIA A100 GPU |
使用方法
1. 安装依赖
确保已安装必要的库:
pip install transformers torch
2. 加载模型
可以使用transformers库加载微调后的BERT模型:
from transformers import BertForSequenceClassification, BertTokenizer
model = BertForSequenceClassification.from_pretrained("模型路径")
tokenizer = BertTokenizer.from_pretrained("分词器路径")
3. 预处理和预测
预处理输入文本并进行预测:
from transformers import BertTokenizer, BertForSequenceClassification
import torch
model_path = 'bibrani/bert-sentiment-analisis-indo'
tokenizer = BertTokenizer.from_pretrained(model_path)
model = BertForSequenceClassification.from_pretrained(model_path)
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model.to(device)
print(device)
def predict_sentiment(text):
"""预测给定文本的情感。
参数:
text (str): 输入文本。
返回:
str: "负面情感" 或 "正面情感"。
"""
inputs = tokenizer(text, padding="max_length", truncation=True, max_length=512, return_tensors="pt")
input_ids = inputs.input_ids.to(device)
attention_mask = inputs.attention_mask.to(device)
with torch.no_grad():
outputs = model(input_ids, attention_mask=attention_mask)
logits = outputs.logits
predicted_class = torch.argmax(logits, dim=1).item()
if predicted_class == 0:
return "负面情感", inputs
else:
return "正面情感", inputs
text_to_predict = "jadi cerita nya saya sedang ingin makan spaghetti dengan meatball yang kalau menurut ekspektasi saya adalah bakso yang terbuat dari cingcang yang biasa digunakan di menu pasta , setelah sampai , ternyata bakso yang digunakan adalah bakso olahan yang biasa dipakai di tukang bakso , bahkan bentuk nya tidak bulat"
sentiment = predict_sentiment(text_to_predict)
print(f"文本: {text_to_predict}")
print(f"情感: {sentiment}")
结果解释
类别 0: 表示负面情感。
类别 1: 表示正面情感。
模型在两个类别上均表现出色,其中正面情感(类别1)的精确率和召回率略高。