Inbäddningar för klassificeringsuppgifter

Introduktion till inbäddningar med OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Klassificeringsuppgifter

 

Tilldela etiketter till objekt

  • Kategorisering
    • Exempel: rubriker efter ämne
  • Sentimentanalys

 

En tabell med ämnen som kan användas för att kategorisera artiklar.

Introduktion till inbäddningar med OpenAI API

Klassificeringsuppgifter

 

Tilldela etiketter till objekt

  • Kategorisering
    • Exempel: rubriker efter ämne
  • Sentimentanalys
    • Exempel: klassificera recensioner som positiva eller negativa

 

Inbäddningar fångar semantisk betydelse

 

En tabell med ett glatt och ett ledset ansikte, för kategorisering efter sentiment.

Introduktion till inbäddningar med OpenAI API

Klassificering med inbäddningar

  • Zero-shot-klassificering:
    • Använder ingen märkt data

 

Process:

  1. Bädda in klassbeskrivningar

Inbäddade klassbeskrivningar i vektorrummet.

Introduktion till inbäddningar med OpenAI API

Klassificering med inbäddningar

  • Zero-shot-klassificering:
    • Använder ingen märkt data

 

Process:

  1. Bädda in klassbeskrivningar
  2. Bädda in objektet som ska klassificeras
  3. Beräkna cosinusavstånd

Inbäddade klassbeskrivningar i vektorrummet, med en okänd vektor.

Introduktion till inbäddningar med OpenAI API

Klassificering med inbäddningar

  • Zero-shot-klassificering:
    • Använder ingen märkt data

 

Process:

  1. Bädda in klassbeskrivningar
  2. Bädda in objektet som ska klassificeras
  3. Beräkna cosinusavstånd
  4. Tilldela den mest liknande etiketten

Inbäddade klassbeskrivningar i vektorrummet, med en okänd vektor tilldelad etiketten Tech.

Introduktion till inbäddningar med OpenAI API

Bädda in klassbeskrivningar

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Introduktion till inbäddningar med OpenAI API

Bädda in objektet som ska klassificeras

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]
Introduktion till inbäddningar med OpenAI API

Beräkna cosinusavstånd

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)
Introduktion till inbäddningar med OpenAI API

Extrahera den mest liknande etiketten

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

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

Begränsning:

  • Klassbeskrivningarna saknade tillräcklig detalj
Introduktion till inbäddningar med OpenAI API

Mer detaljerade beskrivningar

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
Introduktion till inbäddningar med OpenAI API

Nu kör vi en övning!

Introduktion till inbäddningar med OpenAI API

Preparing Video For Download...