Embedding per compiti di classificazione

Introduzione agli Embeddings con l'API di OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Compiti di classificazione

 

Assegnare etichette agli elementi

  • Categorizzazione
    • Esempio: titoli in argomenti
  • Analisi del sentiment

 

Una tabella di argomenti che possiamo usare per categorizzare articoli.

Introduzione agli Embeddings con l'API di OpenAI

Compiti di classificazione

 

Assegnare etichette agli elementi

  • Categorizzazione
    • Esempio: titoli in argomenti
  • Analisi del sentiment
    • Esempio: classificare recensioni come positive o negative

 

Gli embedding catturano il significato semantico

 

Una tabella con una faccina sorridente e una triste, usabile per categorizzare per sentiment.

Introduzione agli Embeddings con l'API di OpenAI

Classificazione con embedding

  • Zero-shot classification:
    • Senza dati etichettati

 

Procedura:

  1. Embedding delle descrizioni delle classi

Descrizioni di classi incorporate nello spazio vettoriale.

Introduzione agli Embeddings con l'API di OpenAI

Classificazione con embedding

  • Zero-shot classification:
    • Senza dati etichettati

 

Procedura:

  1. Embedding delle descrizioni delle classi
  2. Embedding dell’elemento da classificare
  3. Calcola le distanze coseno

Descrizioni di classi incorporate nello spazio vettoriale, con un vettore sconosciuto.

Introduzione agli Embeddings con l'API di OpenAI

Classificazione con embedding

  • Zero-shot classification:
    • Senza dati etichettati

 

Procedura:

  1. Embedding delle descrizioni delle classi
  2. Embedding dell’elemento da classificare
  3. Calcola le distanze coseno
  4. Assegna l’etichetta più simile

Descrizioni di classi incorporate nello spazio vettoriale, con un vettore sconosciuto assegnato all’etichetta Tech.

Introduzione agli Embeddings con l'API di OpenAI

Embedding delle descrizioni delle classi

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Introduzione agli Embeddings con l'API di OpenAI

Embedding dell’elemento da classificare

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]
Introduzione agli Embeddings con l'API di OpenAI

Calcola le distanze coseno

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)
Introduzione agli Embeddings con l'API di OpenAI

Estrai l’etichetta più simile

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:

  • Descrizioni di classe troppo generiche
Introduzione agli Embeddings con l'API di OpenAI

Descrizioni più dettagliate

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
Introduzione agli Embeddings con l'API di OpenAI

Ayo berlatih!

Introduzione agli Embeddings con l'API di OpenAI

Preparing Video For Download...