Embeddings para tarefas de classificação

Introdução aos embeddings com o OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Tarefas de classificação

 

Atribuir rótulos a itens

  • Categorização
    • Exemplo: manchetes por tópico
  • Análise de sentimento

 

Uma tabela de tópicos que podemos usar para categorizar artigos.

Introdução aos embeddings com o OpenAI API

Tarefas de classificação

 

Atribuir rótulos a itens

  • Categorização
    • Exemplo: manchetes por tópico
  • Análise de sentimento
    • Exemplo: classificar avaliações como positivas ou negativas

 

Embeddings capturam significado semântico

 

Uma tabela com um rosto sorridente e um triste, que pode ser usada para categorizar por sentimento.

Introdução aos embeddings com o OpenAI API

Classificação com embeddings

  • Classificação zero-shot:
    • Sem usar dados rotulados

 

Processo:

  1. Criar embeddings das descrições das classes

Descrições de classes incorporadas no espaço vetorial.

Introdução aos embeddings com o OpenAI API

Classificação com embeddings

  • Classificação zero-shot:
    • Sem usar dados rotulados

 

Processo:

  1. Criar embeddings das descrições das classes
  2. Criar embedding do item a classificar
  3. Calcular distâncias cosseno

Descrições de classes incorporadas no espaço vetorial, com um vetor desconhecido.

Introdução aos embeddings com o OpenAI API

Classificação com embeddings

  • Classificação zero-shot:
    • Sem usar dados rotulados

 

Processo:

  1. Criar embeddings das descrições das classes
  2. Criar embedding do item a classificar
  3. Calcular distâncias cosseno
  4. Atribuir o rótulo mais similar

Descrições de classes incorporadas no espaço vetorial, com um vetor desconhecido recebendo o rótulo Tech.

Introdução aos embeddings com o OpenAI API

Criar embeddings das descrições de classe

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Introdução aos embeddings com o OpenAI API

Criar embedding do item a classificar

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]
Introdução aos embeddings com o OpenAI API

Calcular distâncias cosseno

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)
Introdução aos embeddings com o OpenAI API

Extrair o rótulo mais similar

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

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

Limitação:

  • As descrições das classes tinham pouco detalhe
Introdução aos embeddings com o OpenAI API

Descrições mais detalhadas

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
Introdução aos embeddings com o OpenAI API

Vamos praticar!

Introdução aos embeddings com o OpenAI API

Preparing Video For Download...