Similarité textuelle

Introduction aux embeddings avec l’API OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Récap…

 

  • Des textes sémantiquement proches sont placés plus près dans l'espace vectoriel
  • Mesurer la distance permet d'évaluer la similarité
  • Ouvre la voie aux usages des embeddings :
    • Recherche sémantique
    • Recommandations
    • Classification

 

Un graphique de l'espace vectoriel 2D montrant que les articles avec le même sentiment et le même sujet sont plus proches dans l'espace.

Introduction aux embeddings avec l’API OpenAI

Mesurer la similarité

 

Distance cosinus

from scipy.spatial import distance

distance.cosine([0, 1], [1, 0])
1.0
  • Va de 0 à 2
  • Plus petit = similarité plus grande

 

Deux vecteurs reliés par une ligne droite.

Introduction aux embeddings avec l’API OpenAI

Exemple : comparer la similarité de titres

Une liste de dictionnaires contenant les titres et leurs embeddings.

Introduction aux embeddings avec l’API OpenAI

Exemple : comparer la similarité de titres

def create_embeddings(texts):
  response = client.embeddings.create(
    model="text-embedding-3-small",
    input=texts
  )
  response_dict = response.model_dump()

  return [data['embedding'] for data in response_dict['data']]
print(create_embeddings(["Python is the best!", "R is the best!"]))

print(create_embeddings("DataCamp is awesome!")[0])
[[0.0050565884448587894, ..., , -0.04000323638319969],
 [-0.0018890155479311943, ..., -0.04085670784115791]]

[0.00037010075175203383, ..., -0.021759100258350372]
Introduction aux embeddings avec l’API OpenAI

Exemple : comparer la similarité de titres

from scipy.spatial import distance
import numpy as np

search_text = "computer"
search_embedding = create_embeddings(search_text)[0]
distances = []
for article in articles:
dist = distance.cosine(search_embedding, article["embedding"])
distances.append(dist)
min_dist_ind = np.argmin(distances)
print(articles[min_dist_ind]['headline'])
Tech Company Launches Innovative Product to Improve Online Accessibility
Introduction aux embeddings avec l’API OpenAI

Passons à la pratique !

Introduction aux embeddings avec l’API OpenAI

Preparing Video For Download...