Embeddings pour les tâches de classification

Introduction aux embeddings avec l’API OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Tâches de classification

 

Attribuer des étiquettes aux éléments

  • Catégorisation
    • Exemple : titres par thématique
  • Analyse de sentiment

 

Un tableau de thématiques pour catégoriser des articles.

Introduction aux embeddings avec l’API OpenAI

Tâches de classification

 

Attribuer des étiquettes aux éléments

  • Catégorisation
    • Exemple : titres par thématique
  • Analyse de sentiment
    • Exemple : classer des avis en positifs ou négatifs

 

Les embeddings capturent le sens sémantique

 

Un tableau avec un visage souriant et un visage triste, pour catégoriser par sentiment.

Introduction aux embeddings avec l’API OpenAI

Classification avec embeddings

  • Classification zero-shot :
    • Sans données étiquetées

 

Processus :

  1. Créer des embeddings des descriptions de classes

Descriptions de classes vectorisées dans l'espace.

Introduction aux embeddings avec l’API OpenAI

Classification avec embeddings

  • Classification zero-shot :
    • Sans données étiquetées

 

Processus :

  1. Créer des embeddings des descriptions de classes
  2. Créer l'embedding de l'élément à classer
  3. Calculer les distances cosinus

Descriptions de classes vectorisées dans l'espace, avec un vecteur inconnu.

Introduction aux embeddings avec l’API OpenAI

Classification avec embeddings

  • Classification zero-shot :
    • Sans données étiquetées

 

Processus :

  1. Créer des embeddings des descriptions de classes
  2. Créer l'embedding de l'élément à classer
  3. Calculer les distances cosinus
  4. Attribuer l'étiquette la plus proche

Descriptions de classes vectorisées dans l'espace, avec un vecteur inconnu étiqueté Tech.

Introduction aux embeddings avec l’API OpenAI

Vectoriser les descriptions de classes

topics = [
  {'label': 'Tech'},
  {'label': 'Science'},
  {'label': 'Sport'},
  {'label': 'Business'},
]

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Introduction aux embeddings avec l’API OpenAI

Vectoriser l'élément à classer

article = {"headline": "How NVIDIA GPUs Could Decide Who Wins the AI Race",
           "keywords": ["ai", "business", "computers"]}

def create_article_text(article): return f"""Headline: {article['headline']} Keywords: {', '.join(article['keywords'])}""" article_text = create_article_text(article)
article_embeddings = create_embeddings(article_text)[0]
Introduction aux embeddings avec l’API OpenAI

Calculer les distances cosinus

def find_closest(query_vector, embeddings):
  distances = []
  for index, embedding in enumerate(embeddings):
    dist = distance.cosine(query_vector, embedding)
    distances.append({"distance": dist, "index": index})
  return min(distances, key=lambda x: x["distance"])

closest = find_closest(article_embeddings, class_embeddings)
Introduction aux embeddings avec l’API OpenAI

Extraire l'étiquette la plus similaire

label = topics[closest['index']]['label']

print(label)
Business
article = {"headline": "How NVIDIA GPUs Could Decide Who Wins the AI Race",
           "keywords": ["ai", "business", "computers"]}

Limite :

  • Descriptions de classes pas assez détaillées
Introduction aux embeddings avec l’API OpenAI

Descriptions plus détaillées

topics = [
  {'label': 'Tech', 'description': 'A news article about technology'},
  {'label': 'Science', 'description': 'A news article about science'},
  {'label': 'Sport', 'description': 'A news article about sports'},
  {'label': 'Business', 'description': 'A news article about business'},
]

class_descriptions = [topic['description'] for topic in topics] class_embeddings = create_embeddings(class_descriptions)
[...] label = topics[closest['index']]['label'] print(label)
Tech
Introduction aux embeddings avec l’API OpenAI

Passons à la pratique !

Introduction aux embeddings avec l’API OpenAI

Preparing Video For Download...