Embeddings für Klassifikationsaufgaben

Einführung in Embeddings mit der OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Klassifikationsaufgaben

 

Labels zu Objekten vergeben

  • Kategorisierung
    • Beispiel: Überschriften nach Themen
  • Sentiment-Analyse

 

Eine Tabelle mit Themen, um Artikel zu kategorisieren.

Einführung in Embeddings mit der OpenAI API

Klassifikationsaufgaben

 

Labels zu Objekten vergeben

  • Kategorisierung
    • Beispiel: Überschriften nach Themen
  • Sentiment-Analyse
    • Beispiel: Bewertungen als positiv/negativ einstufen

 

Embeddings erfassen semantische Bedeutung

 

Eine Tabelle mit einem Smiley und einem traurigen Gesicht zur Sentiment-Kategorisierung.

Einführung in Embeddings mit der OpenAI API

Klassifikation mit Embeddings

  • Zero-shot-Klassifikation:
    • Ohne gelabelte Daten

 

Ablauf:

  1. Klassenbeschreibungen einbetten

Eingebettete Klassenbeschreibungen im Vektorraum.

Einführung in Embeddings mit der OpenAI API

Klassifikation mit Embeddings

  • Zero-shot-Klassifikation:
    • Ohne gelabelte Daten

 

Ablauf:

  1. Klassenbeschreibungen einbetten
  2. Das zu klassifizierende Objekt einbetten
  3. Kosinus-Distanzen berechnen

Eingebettete Klassenbeschreibungen im Vektorraum, mit einem unbekannten Vektor.

Einführung in Embeddings mit der OpenAI API

Klassifikation mit Embeddings

  • Zero-shot-Klassifikation:
    • Ohne gelabelte Daten

 

Ablauf:

  1. Klassenbeschreibungen einbetten
  2. Das zu klassifizierende Objekt einbetten
  3. Kosinus-Distanzen berechnen
  4. Das ähnlichste Label zuweisen

Eingebettete Klassenbeschreibungen im Vektorraum, mit einem unbekannten Vektor, dem das Label Tech zugewiesen wurde.

Einführung in Embeddings mit der OpenAI API

Klassenbeschreibungen einbetten

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Einführung in Embeddings mit der OpenAI API

Zu klassifizierendes Objekt einbetten

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]
Einführung in Embeddings mit der OpenAI API

Kosinus-Distanzen berechnen

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)
Einführung in Embeddings mit der OpenAI API

Das ähnlichste Label extrahieren

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

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

Einschränkung:

  • Klassenbeschreibungen waren zu wenig detailliert
Einführung in Embeddings mit der OpenAI API

Detailliertere Beschreibungen

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
Einführung in Embeddings mit der OpenAI API

Lass uns üben!

Einführung in Embeddings mit der OpenAI API

Preparing Video For Download...