Exercices IA & Data Science Similarite cosinus entre deux textes
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Similarite cosinus entre deux textes

Une fois les textes transformes en vecteurs, on peut mesurer leur ressemblance. La similarite cosinus mesure l'angle entre deux vecteurs : si deux textes parlent des memes sujets, leurs vecteurs pointent dans la meme direction et la similarite est proche de 1. S'ils n'ont rien en commun, elle est proche de 0.

scikit-learn fournit cosine_similarity :
from sklearn.metrics.pairwise import cosine_similarity
score = cosine_similarity(vecteur_a, vecteur_b)

Attention, cosine_similarity attend des tableaux 2D (matrices), pas des vecteurs 1D.

Écris une fonction text_similarity(text_a, text_b, corpus) qui :
1. Vectorise le corpus (liste de textes) avec TfidfVectorizer
2. Transforme text_a et text_b avec le meme vectorizer
3. Calcule et renvoie la similarite cosinus entre text_a et text_b (un float)

Exemple :
corpus = ['le chat mange', 'le chien dort', 'le chat dort']
text_similarity('le chat mange', 'le chat dort', corpus)
renvoie un nombre entre 0 et 1 (proche de 0.5 environ)

Tests (1/1)

Tests
corpus = ['le chat mange du poisson', 'le chien dort dans le jardin', 'le chat dort sur le canape']
score1 = text_similarity('le chat mange', 'le chat dort', corpus)
assert 0 <= score1 <= 1, f'La similarite doit etre entre 0 et 1, obtenu {score1}'
score_same = text_similarity('le chat mange', 'le chat mange', corpus)
assert score_same > 0.99, f'Un texte identique doit avoir une similarite de 1, obtenu {score_same}'
score_diff = text_similarity('le chat mange', 'le chien dort', corpus)
assert score_diff < score_same, 'Deux textes differents doivent etre moins similaires que deux identiques'
assert isinstance(score1, float), 'Le résultat doit etre un float'

Indices (3 disponibles)

solution.py