Inference Unlimited

Membangun Alat Analisis Sentimen Sendiri dengan Menggunakan LLM

Pendahuluan

Analisis sentimen adalah proses menentukan nuan emosional teks yang dapat diterapkan dalam berbagai bidang, seperti pemasaran, pelayanan pelanggan, atau penelitian opini umum. Dalam artikel ini, kita akan menjelaskan bagaimana membangun alat analisis sentimen sendiri yang menggunakan model bahasa besar (LLM).

Pemilihan Model

Langkah pertama adalah memilih model bahasa yang tepat. Kita dapat memilih antara:

Untuk contoh kita, kita akan menggunakan Hugging Face Transformers dengan model DistilBERT, yang adalah versi ringan dari BERT dan cocok untuk tugas analisis sentimen.

Instalasi Perpustakaan yang Diperlukan

Untuk memulai, install perpustakaan yang diperlukan:

pip install transformers torch pandas

Memuat Model dan Tokenizer

Selanjutnya, muat model dan tokenizer:

from transformers import pipeline

# Memuat alat analisis sentimen yang siap pakai
sentiment_pipeline = pipeline("sentiment-analysis")

Persiapan Data

Persiapkan set data untuk pengujian. Kita dapat menggunakan contoh sederhana:

texts = [
    "Saya sangat suka produk ini, fantastis!",
    "Tidak direkomendasikan, sangat kecewa.",
    "Produk rata-rata, tidak ada yang istimewa.",
    "Fungsi memuaskan, tetapi harga terlalu mahal."
]

Analisis Sentimen

Sekarang kita dapat melakukan analisis sentimen untuk teks kita:

results = sentiment_pipeline(texts)

for text, result in zip(texts, results):
    print(f"Teks: {text}")
    print(f"Sentimen: {result['label']} (Kepercayaan: {result['score']:.2f})")
    print("---")

Penyesuaian Model

Jika kita ingin menyesuaikan model untuk data spesifik kita, kita dapat menggunakan perpustakaan Hugging Face Transformers untuk melatih model pada set data kita.

from transformers import AutoTokenizer, AutoModelForSequenceClassification
from transformers import Trainer, TrainingArguments
import pandas as pd
from sklearn.model_selection import train_test_split

# Contoh set data
data = pd.DataFrame({
    "text": ["Saya sangat suka produk ini", "Tidak direkomendasikan", "Produk rata-rata"],
    "label": [1, 0, 0]  # 1 - positif, 0 - negatif
})

# Pembagian data ke set pelatihan dan pengujian
train_texts, test_texts, train_labels, test_labels = train_test_split(
    data["text"], data["label"], test_size=0.2
)

# Memuat tokenizer dan model
model_name = "distilbert-base-uncased"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=2)

# Tokenisasi data
train_encodings = tokenizer(list(train_texts), truncation=True, padding=True)
test_encodings = tokenizer(list(test_texts), truncation=True, padding=True)

# Kelas untuk mengelola data
class SentimentDataset(torch.utils.data.Dataset):
    def __init__(self, encodings, labels):
        self.encodings = encodings
        self.labels = labels

    def __getitem__(self, idx):
        item = {key: torch.tensor(val[idx]) for key, val in self.encodings.items()}
        item["labels"] = torch.tensor(self.labels[idx])
        return item

    def __len__(self):
        return len(self.labels)

train_dataset = SentimentDataset(train_encodings, train_labels)
test_dataset = SentimentDataset(test_encodings, test_labels)

# Pengaturan pelatihan
training_args = TrainingArguments(
    output_dir="./results",
    num_train_epochs=3,
    per_device_train_batch_size=16,
    per_device_eval_batch_size=64,
    warmup_steps=500,
    weight_decay=0.01,
    logging_dir="./logs",
    logging_steps=10,
)

# Pelatihan model
trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=test_dataset
)

trainer.train()

Implementasi Model

Setelah melatih model, kita dapat menyimpannya dan menggunakan untuk analisis sentimen:

model.save_pretrained("./custom_sentiment_model")
tokenizer.save_pretrained("./custom_sentiment_model")

# Memuat model yang disesuaikan
custom_model = AutoModelForSequenceClassification.from_pretrained("./custom_sentiment_model")
custom_tokenizer = AutoTokenizer.from_pretrained("./custom_sentiment_model")

# Contoh analisis
custom_pipeline = pipeline("sentiment-analysis", model=custom_model, tokenizer=custom_tokenizer)
print(custom_pipeline("Produk ini hebat!"))

Ringkasan

Dalam artikel ini, kita telah menunjukkan bagaimana membangun alat analisis sentimen sendiri yang menggunakan model bahasa besar. Langkah demi langkah, kita telah membahas pemilihan model, persiapan data, analisis sentimen, dan penyesuaian model untuk kebutuhan kita. Dengan alat ini, kita dapat secara efektif menganalisis nuan emosional teks dalam berbagai bidang.

Język: ID | Wyświetlenia: 7

← Powrót do listy artykułów