Embeddingi w zadaniach klasyfikacji

Wprowadzenie do osadzeń z OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Zadania klasyfikacji

 

Przypisywanie etykiet do elementów

  • Kategoryzacja
    • Przykład: nagłówki według tematów
  • Analiza sentymentu

 

Tabela tematów do kategoryzacji artykułów.

Wprowadzenie do osadzeń z OpenAI API

Zadania klasyfikacji

 

Przypisywanie etykiet do elementów

  • Kategoryzacja
    • Przykład: nagłówki według tematów
  • Analiza sentymentu
    • Przykład: klasyfikacja recenzji jako pozytywnych lub negatywnych

 

Embeddingi oddają semantyczne znaczenie

 

Tabela z uśmiechniętą i smutną buźką do kategoryzacji według sentymentu.

Wprowadzenie do osadzeń z OpenAI API

Klasyfikacja z użyciem embeddingów

  • Klasyfikacja zero-shot:
    • Bez użycia danych z etykietami

 

Proces:

  1. Utwórz embeddingi opisów klas

Embeddingi opisów klas w przestrzeni wektorowej.

Wprowadzenie do osadzeń z OpenAI API

Klasyfikacja z użyciem embeddingów

  • Klasyfikacja zero-shot:
    • Bez użycia danych z etykietami

 

Proces:

  1. Utwórz embeddingi opisów klas
  2. Utwórz embedding klasyfikowanego elementu
  3. Oblicz odległości cosinusowe

Embeddingi opisów klas w przestrzeni wektorowej z zaznaczonym nieznanym wektorem.

Wprowadzenie do osadzeń z OpenAI API

Klasyfikacja z użyciem embeddingów

  • Klasyfikacja zero-shot:
    • Bez użycia danych z etykietami

 

Proces:

  1. Utwórz embeddingi opisów klas
  2. Utwórz embedding klasyfikowanego elementu
  3. Oblicz odległości cosinusowe
  4. Przypisz najbardziej podobną etykietę

Embeddingi opisów klas w przestrzeni wektorowej z wektorem przypisanym do etykiety Tech.

Wprowadzenie do osadzeń z OpenAI API

Tworzenie embeddingów opisów klas

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Wprowadzenie do osadzeń z OpenAI API

Tworzenie embeddingu klasyfikowanego elementu

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]
Wprowadzenie do osadzeń z OpenAI API

Obliczanie odległości cosinusowych

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)
Wprowadzenie do osadzeń z OpenAI API

Wyodrębnianie najbardziej podobnej etykiety

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

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

Ograniczenie:

  • Opisy klas były niewystarczająco szczegółowe
Wprowadzenie do osadzeń z OpenAI API

Bardziej szczegółowe opisy

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
Wprowadzenie do osadzeń z OpenAI API

Czas na ćwiczenia!

Wprowadzenie do osadzeń z OpenAI API

Preparing Video For Download...