Text classification на собеседовании Data Scientist
Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.
Содержание:
Зачем разбирать на собесе
Text classification — типовая NLP задача. На собесе DS: «sentiment analysis», «spam detection».
Pipeline classic
text → preprocessing → features → classifier → labelPreprocessing:
- Lowercase.
- Remove punctuation / digits / stopwords (если нужно).
- Stemming / lemmatization.
- Tokenization.
В современных DL — preprocessing minimal (BERT handles).
TF-IDF + linear model
Самый baseline.
TF-IDF. Term Frequency × Inverse Document Frequency.
tf(t, d) = count of t in d
idf(t) = log(N / (1 + docs containing t))
tfidf(t, d) = tf × idfCommon слова weighted lower. Distinguishing words — higher.
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
pipe = Pipeline([
('tfidf', TfidfVectorizer(ngram_range=(1, 2))),
('clf', LogisticRegression())
])Быстро, дешёво. Часто 80-90% качества BERT с 1% cost.
BERT fine-tune
from transformers import BertForSequenceClassification, Trainer
model = BertForSequenceClassification.from_pretrained('bert-base-uncased', num_labels=2)
trainer = Trainer(model=model, ..., train_dataset=ds)
trainer.train()Pros: SOTA качество. Понимает context, синонимы.
Cons: GPU, slower inference, higher cost.
Variants:
- DistilBERT — 40% меньше, 60% быстрее.
- RoBERTa, DeBERTa — лучше BERT.
- ruBERT для русского.
Sentence embeddings + classifier
text → sentence-transformer → embedding → simple classifier (LR / NN)from sentence_transformers import SentenceTransformer
encoder = SentenceTransformer('all-MiniLM-L6-v2')
embeddings = encoder.encode(texts)
LogisticRegression().fit(embeddings, labels)Compromise:
- Качество близко к BERT fine-tune.
- Inference faster — encoder один раз, LR cheap.
- Модель меньше памяти.
Когда что
TF-IDF + LR:
- Маленькие dataset (< 10k).
- Нужна interpretability (feature importances).
- Lowest cost.
BERT fine-tune:
- Хорошее качество, есть GPU.
- Domain-specific (юридические тексты, медицина).
Sentence embeddings + classifier:
- Compromise quality / cost.
- Multiple downstream tasks (один encoder).
LLM zero-shot.
Prompt: "Classify this review sentiment: {text}\nLabel: positive/negative/neutral"GPT / Claude — хорошо без training. Но cost / latency высокие.
Связанные темы
- BERT vs GPT для DS
- Embeddings на собесе DS
- NLP на собесе DS
- Linear vs logistic regression для DS
- Подготовка к собесу Data Scientist
FAQ
Это официальная информация?
Нет. Статья основана на стандартных NLP подходах.
Тренируйте Data Science — откройте тренажёр с 1500+ вопросами для собесов.