Similarité de texte

Introduction aux embeddings avec l'API d'OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

En bref…

 

  • Des textes sémantiquement similaires sont intégrés plus près dans l'espace vectoriel
  • Mesurer la distance permet de mesurer la similarité
  • Permet des applications des plongements :
    • Recherche sémantique
    • Recommandations
    • Classification

 

Un tracé de l'espace vectoriel 2D montrant que les critiques avec le même sentiment et le même sujet sont rapprochées dans l'espace vectoriel.

Introduction aux embeddings avec l'API d'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 = Plus de similarité

 

Deux vecteurs avec une ligne droite tracée entre eux.

Introduction aux embeddings avec l'API d'OpenAI

Exemple : comparer la similarité de titres

Une liste de dictionnaires contenant les titres et leurs plongements.

Introduction aux embeddings avec l'API d'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 d'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 d'OpenAI

Passons à la pratique !

Introduction aux embeddings avec l'API d'OpenAI

Preparing Video For Download...