Вбудовування для задач класифікації

Вступ до Embeddings з OpenAI API

Emmanuel Pire

Senior Software Engineer, DataCamp

Задачі класифікації

 

Присвоєння елементам ярликів

  • Категоризація
    • Приклад: заголовки за темами
  • Аналіз тональності

 

Таблиця тем, за якими можна категоризувати статті.

Вступ до Embeddings з OpenAI API

Задачі класифікації

 

Присвоєння елементам ярликів

  • Категоризація
    • Приклад: заголовки за темами
  • Аналіз тональності
    • Приклад: класифікація відгуків як позитивних чи негативних

 

Вбудовування відображають семантичний зміст

 

Таблиця зі смайлом і сумним обличчям для класифікації за тональністю.

Вступ до Embeddings з OpenAI API

Класифікація з вбудовуваннями

  • Zero-shot класифікація:
    • Без використання розмічених даних

 

Процес:

  1. Вбудувати описи класів

Вбудовані описи класів у векторному просторі.

Вступ до Embeddings з OpenAI API

Класифікація з вбудовуваннями

  • Zero-shot класифікація:
    • Без використання розмічених даних

 

Процес:

  1. Вбудувати описи класів
  2. Вбудувати елемент для класифікації
  3. Обчислити косинусні відстані

Вбудовані описи класів у векторному просторі з показаним невідомим вектором.

Вступ до Embeddings з OpenAI API

Класифікація з вбудовуваннями

  • Zero-shot класифікація:
    • Без використання розмічених даних

 

Процес:

  1. Вбудувати описи класів
  2. Вбудувати елемент для класифікації
  3. Обчислити косинусні відстані
  4. Призначити найближчий ярлик

Вбудовані описи класів у векторному просторі; невідомому вектору призначено мітку Tech.

Вступ до Embeddings з OpenAI API

Вбудовування описів класів

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
Вступ до Embeddings з OpenAI API

Вбудовування елемента для класифікації

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]
Вступ до Embeddings з OpenAI API

Обчислення косинусних відстаней

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)
Вступ до Embeddings з OpenAI API

Витягнути найближчий ярлик

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

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

Обмеження:

  • Описів класів було недостатньо
Вступ до Embeddings з OpenAI API

Детальніші описи

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
Вступ до Embeddings з OpenAI API

Давайте потренуємось!

Вступ до Embeddings з OpenAI API

Preparing Video For Download...