Le NLP a été transformé par les transformers. En entretien Data Scientist, on évalue la compréhension des embeddings, la capacité à fine-tuner un modèle et à intégrer le NLP dans une pipeline data.
Qu est-ce que la tokenisation ? Quelle est la différence entre word-level et subword tokenisation ?
from transformers import AutoTokenizer
# Tokenisation subword (BPE - Byte Pair Encoding)
tokenizer = AutoTokenizer.from_pretrained('bert-base-multilingual-cased')
text = 'Le pipeline de données traite les commandes'
tokens = tokenizer.tokenize(text)
ids = tokenizer.encode(text)
print(tokens)
# ['Le', 'pipeline', 'de', 'données', 'traite', 'les', 'commandes']
# Les mots rares sont découpés en sous-mots :
# 'databuilder' -> ['data', '##builder']
print(f'Vocab size: {tokenizer.vocab_size}') # ~120k tokensQuelle est la différence entre Word2Vec, GloVe et les sentence transformers ?
from sentence_transformers import SentenceTransformer
import numpy as np
# Sentence Transformers : embedding de phrases entières
model = SentenceTransformer('paraphrase-multilingual-MiniLM-L12-v2')
sentences = [
'Le pipeline de données est en production',
'Notre flux de données fonctionne en prod',
'Le chat mange des croquettes'
]
embeddings = model.encode(sentences)
# Similarité cosinus
from sklearn.metrics.pairwise import cosine_similarity
sim_matrix = cosine_similarity(embeddings)
print(sim_matrix)
# [[1.0, 0.87, 0.12],
# [0.87, 1.0, 0.11], -> phrases 1 et 2 très similaires
# [0.12, 0.11, 1.0 ]] -> phrase 3 différenteQu est-ce que le mécanisme d attention ? Pourquoi BERT est-il bidirectionnel ?
Quand fine-tunez-vous un modèle pré-entraîné ? Comment évitez-vous le catastrophic forgetting ?
from transformers import AutoModelForSequenceClassification, TrainingArguments, Trainer
from datasets import Dataset
# Fine-tuning pour la classification de tickets support
model = AutoModelForSequenceClassification.from_pretrained(
'camembert-base',
num_labels=5 # 5 catégories de tickets
)
training_args = TrainingArguments(
output_dir='./ticket_classifier',
num_train_epochs=3,
per_device_train_batch_size=16,
learning_rate=2e-5, # faible LR pour éviter le catastrophic forgetting
warmup_steps=100,
weight_decay=0.01,
evaluation_strategy='epoch'
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset
)
trainer.train()Comment deployez-vous un modèle de classification de texte en production ?
from transformers import pipeline
from fastapi import FastAPI
# Charger le pipeline une fois au démarrage
classifier = pipeline(
'text-classification',
model='./ticket_classifier',
device=0 # GPU si disponible
)
app = FastAPI()
@app.post('/classify')
def classify_ticket(text: str):
result = classifier(text, truncation=True, max_length=512)
return {
'category': result[0]['label'],
'confidence': round(result[0]['score'], 4)
}Quelles métriques utilisez-vous pour évaluer un modèle de classification de texte multiclasse ?
| Niveau | Maitrise | Signal GO | NO-GO |
|---|---|---|---|
| Confirmé | Tokenisation, sentence transformers, classification basique | A utilisé sentence-transformers pour du RAG, sait ce qu est BPE | Ne sait pas ce qu est un embedding |
| Senior | Fine-tuning BERT/CamemBERT, LoRA, déploiement ONNX | A fine-tuné un modèle sur données métier, a déployé en production | N a jamais fine-tuné, ne sait pas ce qu est LoRA |
Premier entretien gratuit. Rapport GO/NO-GO sous 48h.