🚀 感情分析用BERTモデル
このリポジトリには、感情分析用にファインチューニングされたBERTモデルが含まれています。このモデルは、テキストを2つの感情カテゴリ(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 (Bidirectional Encoder Representations from Transformers) |
タスク |
感情分析 (二値分類) |
エポック数 |
5 |
ハードウェア |
NVIDIA A100 GPU |
結果の解釈
- クラス0: ネガティブな感情を表します。
- クラス1: ポジティブな感情を表します。
このモデルは、両方のクラスで強い性能を示しており、ポジティブな感情(クラス1)に対してわずかに高い適合率と再現率を持っています。
📦 インストール
1. 依存関係のインストール
必要なライブラリがインストールされていることを確認してください。
pip install transformers torch
💻 使用例
基本的な使用法
from transformers import BertForSequenceClassification, BertTokenizer
model = BertForSequenceClassification.from_pretrained("path_to_model")
tokenizer = BertTokenizer.from_pretrained("path_to_tokenizer")
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):
"""Predicts the sentiment of a given text.
Args:
text (str): The input text.
Returns:
str: "Negative sentiment" or "Positive sentiment".
"""
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 "Negative sentiment", inputs
else:
return "Positive sentiment", 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: {text_to_predict}")
print(f"Sentiment: {sentiment}")
📄 ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。