0Pricing
AI Prompt Engineering · Pelajaran

LLM sebagai Pengklasifikasi Teks

Gunakan perintah untuk klasifikasi sentimen, maksud, topik, dan multi-label.

LLM sebagai Pengklasifikasi Teks adalah pelajaran AI Prompt Engineering gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Prompt Engineering, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

LLM sebagai Pengklasifikasi Teks

Klasifikasi teks tradisional memerlukan data pelatihan berlabel, penyetelan lanjutan model, dan infrastruktur penerapan. LLM dapat mengklasifikasikan teks hanya dengan sebuah perintah — tanpa memerlukan data pelatihan.

Pengklasifikasi berbasis LLM unggul ketika:

  • Kategori memerlukan pemahaman semantik (bukan sekadar pencocokan kata kunci)
  • Anda perlu menambahkan kategori baru tanpa melatih ulang
  • Anda memiliki sedikit contoh berlabel
  • Kategori memiliki nuansa (niat di balik pesan, bukan hanya topiknya)

Klasifikasi Sentimen

Sentimen adalah salah satu tugas klasifikasi yang paling umum. Perintah yang dirancang dengan baik mengungguli pencocokan kata kunci sederhana untuk kasus yang bernuansa:

import anthropic, json

client = anthropic.Anthropic(api_key='YOUR_API_KEY')

def classify_sentiment(text):
    prompt = f'''
Classify the sentiment of the text below.
Return ONLY JSON: {{"sentiment": "positive|negative|neutral", "confidence": "high|medium|low"}}

Definitions:
- positive: Overall favorable opinion or emotion
- negative: Overall unfavorable opinion or dissatisfaction
- neutral: Factual, balanced, or no clear sentiment

Text: {text}
'''
    r = client.messages.create(
        model='claude-opus-4-5', max_tokens=50,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return json.loads(r.content[0].text)

print(classify_sentiment('The product works but setup was painful.'))
print(classify_sentiment('Delivery was incredibly fast and packaging was perfect!'))

Klasifikasi Niat

Klasifikasi niat mengidentifikasi tindakan yang ingin dilakukan pengguna — hal yang penting untuk chatbot, sistem dukungan, dan aplikasi pencarian:

INTENT_CATEGORIES = [
    'purchase_intent: User wants to buy or is ready to purchase',
    'complaint: User is dissatisfied and reporting a problem',
    'question: User is asking for information or help',
    'cancellation: User wants to cancel a service or subscription',
    'compliment: User is expressing satisfaction or praise',
    'other: Does not fit any category above'
]

def classify_intent(message):
    categories_str = '\n'.join(f'- {c}' for c in INTENT_CATEGORIES)
    prompt = f'''
Classify the intent of this customer message.
Return JSON: {{"intent": str, "confidence": "high|medium|low"}}

Categories:
{categories_str}

Message: {message}
'''
    r = client.messages.create(model='claude-opus-4-5', max_tokens=80, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)

print(classify_intent('I love the app but I need to cancel my plan.'))
print(classify_intent('How do I export my data to CSV?'))

Klasifikasi Topik

Klasifikasi topik menetapkan kategori tematik pada teks. Berguna untuk mengarahkan konten, memfilter umpan, dan mengategorikan tiket dukungan:

def classify_topic(article_text, topics):
    topic_list = ', '.join(topics)
    prompt = f'''
Classify the topic of this article. Choose EXACTLY ONE from the list.
Return JSON: {{"topic": str, "secondary_topic": str or null}}

Available topics: {topic_list}

Article (first 300 chars): {article_text[:300]}
'''
    r = client.messages.create(model='claude-opus-4-5', max_tokens=80, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)

topics = ['technology', 'sports', 'politics', 'business', 'science', 'health', 'entertainment']
text = 'The FDA approved a new mRNA vaccine for seasonal influenza, marking a breakthrough in vaccine technology.'
result = classify_topic(text, topics)
print(result)

Klasifikasi Urgensi

Klasifikasi urgensi membantu memprioritaskan tiket dukungan, email, dan insiden. Mendefinisikan tingkat urgensi secara tepat sangatlah penting:

URGENCY_PROMPT = '''
Classify the urgency of this support ticket.
Return JSON: {{"urgency": str, "reason": str}}

Urgency levels:
- critical: Service is completely down, data loss occurring, or security breach
- high: Major functionality broken, many users affected, no workaround
- medium: Non-critical feature broken, workaround exists, single user affected
- low: Cosmetic issue, enhancement request, general question

Be conservative: only use critical if the ticket explicitly describes a system-wide outage or data loss.

Ticket: {ticket}
'''

def classify_urgency(ticket_text):
    prompt = URGENCY_PROMPT.replace('{ticket}', ticket_text)
    r = client.messages.create(model='claude-opus-4-5', max_tokens=100, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)

print(classify_urgency('The entire production database is down. All customers affected.'))
print(classify_urgency('Dark mode button is slightly off-center.'))

Klasifikasi Multi-Label

Terkadang, sebuah teks termasuk dalam beberapa kategori sekaligus. Klasifikasi multi-label mengembalikan semua kategori yang berlaku:

def multi_label_classify(text, labels):
    label_list = ', '.join(labels)
    prompt = f'''
Classify this text. It may belong to multiple categories.
Return JSON: {{"labels": [str], "primary_label": str}}

Available labels: {label_list}

Rules:
- Include all labels that clearly apply
- Do NOT include labels that only marginally apply
- primary_label is the single most relevant label

Text: {text}
'''
    r = client.messages.create(model='claude-opus-4-5', max_tokens=100, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)

labels = ['technical', 'billing', 'account', 'bug_report', 'feature_request', 'security']
text = 'I found a bug that exposes other users billing information on my account page.'
print(multi_label_classify(text, labels))

Templat Prompt Klasifikasi

Templat prompt klasifikasi yang dapat digunakan kembali dan berfungsi untuk kumpulan kategori apa pun:

def build_classifier(category_definitions, additional_rules=''):
    cats = '\n'.join(f'- {k}: {v}' for k, v in category_definitions.items())
    return f'''
Classify the input text into exactly one category below.
Return JSON: {{"category": str, "confidence": "high|medium|low"}}

Categories:
{cats}
{('\nAdditional rules:\n' + additional_rules) if additional_rules else ''}

Text: {{text}}
'''

language_classifier = build_classifier({
    'formal': 'Business or academic writing, professional context',
    'informal': 'Casual, conversational, slang or colloquial',
    'technical': 'Domain-specific jargon, code, or specialized terminology',
    'emotional': 'High emotional content, personal, expressive'
})

print(language_classifier[:200])

Menangani Klasifikasi yang Ambigu

Beberapa input memang cocok dengan beberapa kategori. Rancang prompt klasifikasi untuk menangani ambiguitas secara eksplisit:

AMBIGUITY_PROMPT = '''
Classify this customer message. If the message is ambiguous or could fit multiple categories,
choose the category that would be most useful for routing it to the correct team.

Return JSON:
{{
  "category": str,
  "is_ambiguous": true | false,
  "alternative": str or null,
  "reasoning": str
}}

Categories: billing, technical_support, sales, account_management

Message: {message}
'''

message = 'I upgraded my plan but I am still seeing the free tier features.'
r = client.messages.create(
    model='claude-opus-4-5', max_tokens=150,
    messages=[{'role': 'user', 'content': AMBIGUITY_PROMPT.format(message=message)}]
)
print(json.loads(r.content[0].text))

Klasifikasi Batch untuk Efisiensi

Mengklasifikasikan item satu per satu membutuhkan biaya besar. Klasifikasi batch memproses beberapa input dalam satu panggilan API:

def batch_classify(items, categories):
    items_str = '\n'.join(f'{i+1}. {item}' for i, item in enumerate(items))
    cat_str = ', '.join(categories)

    prompt = f'''
Classify each item below. Categories: {cat_str}
Return JSON: {{"results": [{{"id": int, "category": str, "confidence": str}}]}}

Items:
{items_str}
'''
    r = client.messages.create(model='claude-opus-4-5', max_tokens=300, messages=[{'role': 'user', 'content': prompt}])
    return json.loads(r.content[0].text)['results']

texts = [
    'Absolutely love this product!',
    'It crashed twice today.',
    'What is your refund policy?',
    'The color options are limited.'
]
results = batch_classify(texts, ['positive_feedback', 'bug_report', 'inquiry', 'feature_request'])
for r in results:
    print(f'{texts[r["id"]-1][:30]}... -> {r["category"]} ({r["confidence"]})')

Mengevaluasi Keakuratan Pengklasifikasi

Pengklasifikasi LLM perlu dievaluasi secara sistematis menggunakan contoh berlabel. Buat kumpulan uji kecil dan ukur keakuratannya:

labeled_test_set = [
    {'text': 'Great product, no issues!', 'expected': 'positive'},
    {'text': 'The app keeps crashing on startup.', 'expected': 'negative'},
    {'text': 'The screen resolution is 1080p.', 'expected': 'neutral'},
    {'text': 'Worst experience of my life.', 'expected': 'negative'},
    {'text': 'Works as advertised, decent value.', 'expected': 'positive'},
]

def evaluate_classifier(test_set, classify_fn):
    correct = 0
    for example in test_set:
        result = classify_fn(example['text'])
        if result['sentiment'] == example['expected']:
            correct += 1
        else:
            print(f'WRONG: "{example["text"][:40]}" -> got {result["sentiment"]}, expected {example["expected"]}')
    accuracy = correct / len(test_set)
    print(f'Accuracy: {correct}/{len(test_set)} = {accuracy:.0%}')
    return accuracy

evaluate_classifier(labeled_test_set, classify_sentiment)

Contoh Few-Shot dalam Prompt Klasifikasi

Menambahkan contoh few-shot ke prompt klasifikasi meningkatkan keakuratan untuk kasus batas dan kategori yang bernuansa. Tempatkan 2–3 contoh yang menunjukkan perbedaan antara kategori serupa:

few_shot_classifier = '''
Classify each customer message as: billing, technical, or general.

Examples:
  Input: "I was charged twice for this month." -> billing
  Input: "The app crashes when I open the dashboard." -> technical
  Input: "Do you have a mobile app?" -> general
  Input: "My invoice shows the wrong plan." -> billing
  Input: "I cannot log in, I get error 403." -> technical

Now classify:
Input: {message}
Return JSON: {"category": str, "confidence": "high|medium|low"}
'''

message = "My subscription was renewed but I cancelled last week."
prompt = few_shot_classifier.replace("{message}", message)
print(prompt)

Pemeriksaan Cepat

Apa keunggulan utama menggunakan LLM untuk klasifikasi teks dibandingkan pengklasifikasi tradisional yang dilatih?

LLM sebagai Pengklasifikasi — Inti Pembelajaran

Klasifikasi berbasis LLM bersifat kuat, fleksibel, dan cepat diterapkan:

  • Tentukan kategori dengan deskripsi—bukan hanya nama—agar kasus bernuansa dapat ditangani dengan benar
  • Kembalikan JSON dengan kategori + keyakinan untuk setiap klasifikasi
  • Pola umum: sentimen (positif/negatif/netral), maksud, topik, urgensi
  • Klasifikasi multi-label mengembalikan semua kategori yang berlaku beserta label utama
  • Klasifikasi batch memproses beberapa input dalam satu panggilan API demi efisiensi
  • Tangani input ambigu secara eksplisit—minta kategori utama beserta alternatif dan alasannya
  • Evaluasi keakuratan menggunakan kumpulan uji berlabel sebelum penerapan ke produksi

Pertanyaan yang Sering Diajukan

Apakah pelajaran “LLM sebagai Pengklasifikasi Teks” gratis?

Ya — teks lengkap “LLM sebagai Pengklasifikasi Teks” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Prompt Engineering, upgrade ke CoddyKit PRO. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “LLM sebagai Pengklasifikasi Teks”?

Gunakan perintah untuk klasifikasi sentimen, maksud, topik, dan multi-label. Kamu berlatih AI Prompt Engineering dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Prompt Engineering?

Tidak diperlukan pengalaman sebelumnya. AI Prompt Engineering di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “LLM sebagai Pengklasifikasi Teks” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Prompt Engineering ini?

Ya. Setiap pelajaran AI Prompt Engineering menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Perintah Ekstraksi Entitas Bernama
  2. Ekstraksi Data Berbasis Skema
  3. LLM sebagai Pengklasifikasi Teks
  4. Keyakinan dan Ketidakpastian dalam Klasifikasi
← Kembali ke AI Prompt Engineering