Metin Sınıflandırıcısı Olarak LLM
Duygu, niyet, konu ve çok etiketli sınıflandırma için istemleri kullanın.
Metin Sınıflandırıcısı Olarak LLM, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
Metin Sınıflandırıcıları Olarak LLM'ler
Geleneksel metin sınıflandırması, etiketli eğitim verileri, modelin ince ayarı ve dağıtım altyapısı gerektirir. LLM'ler yalnızca bir istemle metni sınıflandırabilir — eğitim verisi gerekmez.
LLM tabanlı sınıflandırıcılar şu durumlarda özellikle başarılıdır:
- Kategoriler yalnızca anahtar sözcük eşleştirmesi değil, anlamsal kavrayış gerektirdiğinde
- Yeniden eğitim yapmadan yeni kategoriler eklemeniz gerektiğinde
- Etiketli örnekleriniz sınırlı olduğunda
- Kategoriler ince ayrımlar içerdiğinde (yalnızca konu değil, iletinin ardındaki niyet)
Duygu Sınıflandırması
Duygu, en yaygın sınıflandırma görevlerinden biridir. İyi hazırlanmış bir istem, ince ayrımlar içeren durumlarda basit anahtar sözcük eşleştirmesinden daha başarılı olur:
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!'))Niyet Sınıflandırması
Niyet sınıflandırması, kullanıcının ne yapmaya çalıştığını belirler — sohbet robotları, destek sistemleri ve arama uygulamaları için temel bir işlemdir:
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?'))Konu Sınıflandırması
Konu sınıflandırması, metinlere tematik bir kategori atar. İçeriği yönlendirmek, akışları filtrelemek ve destek taleplerini kategorilere ayırmak için kullanışlıdır:
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)Aciliyet Sınıflandırması
Aciliyet sınıflandırması, destek taleplerine, e-postalara ve olaylara öncelik vermeye yardımcı olur. Aciliyet düzeylerini kesin biçimde tanımlamak kritik öneme sahiptir:
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.'))Çok Etiketli Sınıflandırma
Bir metin parçası bazen aynı anda birden çok kategoriye ait olabilir. Çok etiketli sınıflandırma, uygulanabilir tüm kategorileri döndürür:
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))Sınıflandırma İstemi Şablonları
Her kategori kümesiyle çalışan yeniden kullanılabilir bir sınıflandırma istemi şablonu:
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])Muğlak Sınıflandırmaları Ele Alma
Bazı girdiler gerçekten birden fazla kategoriye uyabilir. Muğlaklığı açıkça ele alacak şekilde sınıflandırma istemleri tasarlayın:
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))Verimlilik için Toplu Sınıflandırma
Ögeleri tek tek sınıflandırmak maliyetlidir. Toplu sınıflandırma, tek bir API çağrısında birden çok girdiyi işler:
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"]})')Sınıflandırıcı Doğruluğunu Değerlendirme
LLM sınıflandırıcıları, etiketlenmiş örneklere göre sistematik değerlendirme gerektirir. Küçük bir sınama kümesi oluşturun ve doğruluğu ölçün:
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)Sınıflandırma İstemlerinde Birkaç Örnek Kullanımı
Sınıflandırma istemine birkaç örnek eklemek, uç durumlarda ve nüanslı kategorilerde doğruluğu artırır. Benzer kategoriler arasındaki ayrımı gösteren 2-3 örnek yerleştirin:
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)Hızlı Kontrol
Bir metni sınıflandırmak için geleneksel olarak eğitilmiş bir sınıflandırıcıya kıyasla LLM kullanmanın temel avantajı nedir?
LLM'yi Sınıflandırıcı Olarak Kullanma — Temel Çıkarımlar
LLM tabanlı sınıflandırma güçlü, esnek ve hızlı bir şekilde kullanıma alınabilir:
- Kategorileri yalnızca adlarıyla değil, açıklamalarıyla tanımlayın — nüanslı durumları doğru ele almak için
- Her sınıflandırma için kategori + güven içeren JSON döndürün
- Yaygın örüntüler: duygu (olumlu/olumsuz/tarafsız), amaç, konu, aciliyet
- Çok etiketli sınıflandırma, birincil etiketin yanı sıra uygulanabilir tüm kategorileri döndürür
- Verimlilik için toplu sınıflandırma, tek bir API çağrısında birden çok girdiyi işler
- Belirsiz girdileri açıkça ele alın — birincil kategoriyi, alternatifleri ve gerekçeyi isteyin
- Üretime almadan önce doğruluğu etiketlenmiş bir sınama kümesine göre değerlendirin
Sıkça Sorulan Sorular
“Metin Sınıflandırıcısı Olarak LLM” dersi ücretsiz mi?
Evet — “Metin Sınıflandırıcısı Olarak LLM” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
“Metin Sınıflandırıcısı Olarak LLM” dersinde ne öğreneceğim?
Duygu, niyet, konu ve çok etiketli sınıflandırma için istemleri kullanın. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Metin Sınıflandırıcısı Olarak LLM” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Adlandırılmış Varlık Çıkarma İstemleri
- Şema Odaklı Veri Çıkarma
- Metin Sınıflandırıcısı Olarak LLM
- Sınıflandırmada Güven ve Belirsizlik