classify
**Text classification** is the task of **automatically assigning predefined categories or labels to text documents** — one of the most common NLP applications, powered by machine learning to categorize content by sentiment, topic, intent, or any custom taxonomy at scale.
**What Is Text Classification?**
- **Definition**: Predict which category a text belongs to.
- **Input**: Text document or sentence.
- **Output**: One or more predefined labels.
- **Types**: Binary (spam/not spam), multi-class (news categories), multi-label (multiple tags).
**Why Text Classification Matters**
- **Automation**: Process millions of documents without manual review.
- **Consistency**: Standardized categorization across all content.
- **Speed**: Instant classification vs hours of human work.
- **Scalability**: Handle volume impossible for human teams.
- **Insights**: Analyze patterns across large text corpora.
**Common Use Cases**
**Sentiment Analysis**:
- Product reviews → Positive/Negative/Neutral
- Social media monitoring
- Customer feedback analysis
- Brand reputation tracking
**Topic Classification**:
- News articles → Sports/Politics/Tech/Entertainment
- Research papers → Field of study
- Support tickets → Department routing
- Content recommendation
**Intent Detection**:
- "Book a flight" → Booking intent
- "Cancel my order" → Cancellation intent
- "How do I reset password?" → Help intent
- Chatbot and virtual assistant routing
**Spam Detection**:
- Email spam filtering
- Comment spam on websites
- Fake review detection
- Phishing identification
**Content Moderation**:
- Hate speech detection
- Violence and adult content
- Misinformation flagging
- Policy violation detection
**How It Works**
**Modern Approach (Transfer Learning)**:
1. **Pre-trained Model**: Start with BERT, RoBERTa, or DistilBERT.
2. **Fine-tune**: Train on your labeled data (100-1000 examples per category).
3. **Classify**: Model predicts category with confidence score.
**Traditional ML Approach**:
1. **Preprocess**: Tokenize, lowercase, remove stopwords.
2. **Features**: TF-IDF or bag-of-words vectors.
3. **Train**: Naive Bayes, Logistic Regression, or SVM.
4. **Predict**: Classify new text.
**Quick Implementation**
```python
# Using Transformers (Modern)
from transformers import pipeline
classifier = pipeline("text-classification",
model="distilbert-base-uncased-finetuned-sst-2-english")
result = classifier("I love this product!")
# Output: [{'label': 'POSITIVE', 'score': 0.9998}]
# Using Scikit-learn (Traditional)
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.pipeline import Pipeline
classifier = Pipeline([
('tfidf', TfidfVectorizer()),
('clf', MultinomialNB())
])
classifier.fit(X_train, y_train)
prediction = classifier.predict(["New text to classify"])
# Using OpenAI (Zero-shot)
import openai
def classify_text(text, categories):
prompt = f"""Classify this text into one of these categories: {categories}
Text: {text}
Category:"""
response = openai.ChatCompletion.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
```
**Popular Models**
- **BERT**: General-purpose, high accuracy.
- **DistilBERT**: 60% faster, 40% smaller, 97% of BERT's accuracy.
- **RoBERTa**: Optimized BERT variant.
- **FastText**: Facebook's efficient classifier, very fast.
- **GPT-4**: Zero-shot classification without training.
**Evaluation Metrics**
- **Accuracy**: Overall correctness percentage.
- **Precision**: True positives / predicted positives.
- **Recall**: True positives / actual positives.
- **F1-Score**: Harmonic mean of precision and recall.
**Best Practices**
- **Balanced Data**: Similar number of examples per category.
- **Clear Labels**: Unambiguous, mutually exclusive categories.
- **Start Simple**: Try Naive Bayes before complex models.
- **Cross-Validation**: Test on multiple data splits.
- **Monitor Production**: Track accuracy over time, retrain as needed.
**When to Use What**
**Traditional ML** (Naive Bayes, Logistic Regression): Small datasets (<10K), fast inference needed, limited compute.
**Deep Learning** (BERT, RoBERTa): Large datasets (>10K), high accuracy required, sufficient compute.
**LLM APIs** (GPT-4): No training data (zero-shot), rapid prototyping, complex reasoning.
**Typical Accuracy**:
- Naive Bayes: 70-80%
- Logistic Regression: 75-85%
- FastText: 80-90%
- BERT (fine-tuned): 90-95%
- GPT-4 (zero-shot): 85-95%
Text classification is **foundational for NLP** — modern transformer models have made high-accuracy classification accessible for almost any use case, from customer support to content moderation to business intelligence.