Embeddings pentru sarcini de clasificare

Introducere în Embeddings cu API-ul OpenAI

Emmanuel Pire

Senior Software Engineer, DataCamp

Sarcini de clasificare

 

Atribuirea de etichete elementelor

  • Categorizare
    • Exemplu: titluri de știri în tematici
  • Analiza sentimentelor

 

Un tabel cu tematici ce pot fi folosite pentru categorizarea articolelor.

Introducere în Embeddings cu API-ul OpenAI

Sarcini de clasificare

 

Atribuirea de etichete elementelor

  • Categorizare
    • Exemplu: titluri de știri în tematici
  • Analiza sentimentelor
    • Exemplu: clasificarea recenziilor ca pozitive sau negative

 

Embeddings captează semnificația semantică

 

Un tabel cu o față zâmbitoare și una tristă, pentru categorizarea după sentiment.

Introducere în Embeddings cu API-ul OpenAI

Clasificare cu embeddings

  • Clasificare zero-shot:
    • Fără date etichetate

 

Proces:

  1. Încorporați descrierile claselor

Descrierile claselor încorporate în spațiul vectorial.

Introducere în Embeddings cu API-ul OpenAI

Clasificare cu embeddings

  • Clasificare zero-shot:
    • Fără date etichetate

 

Proces:

  1. Încorporați descrierile claselor
  2. Încorporați elementul de clasificat
  3. Calculați distanțele cosinus

Descrierile claselor încorporate în spațiul vectorial, cu un vector necunoscut afișat.

Introducere în Embeddings cu API-ul OpenAI

Clasificare cu embeddings

  • Clasificare zero-shot:
    • Fără date etichetate

 

Proces:

  1. Încorporați descrierile claselor
  2. Încorporați elementul de clasificat
  3. Calculați distanțele cosinus
  4. Atribuiți eticheta cea mai similară

Descrierile claselor încorporate în spațiul vectorial, cu un vector necunoscut căruia i se atribuie eticheta Tech.

Introducere în Embeddings cu API-ul OpenAI

Încorporarea descrierilor claselor

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Introducere în Embeddings cu API-ul OpenAI

Încorporarea elementului de clasificat

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]
Introducere în Embeddings cu API-ul OpenAI

Calculul distanțelor 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)
Introducere în Embeddings cu API-ul OpenAI

Extragerea etichetei celei mai similare

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

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

Limitare:

  • Descrierile claselor erau insuficient de detaliate
Introducere în Embeddings cu API-ul OpenAI

Descrieri mai detaliate

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
Introducere în Embeddings cu API-ul OpenAI

Să exersăm!

Introducere în Embeddings cu API-ul OpenAI

Preparing Video For Download...