用于分类任务的嵌入

使用 OpenAI API 的 Embeddings 入门

Emmanuel Pire

Senior Software Engineer, DataCamp

分类任务

 

为项目分配标签

  • 分类
    • 示例:按主题给标题分组
  • 情感分析

 

一个可用于对文章分类的主题表。

使用 OpenAI API 的 Embeddings 入门

分类任务

 

为项目分配标签

  • 分类
    • 示例:按主题给标题分组
  • 情感分析
    • 示例:将评论判为正面或负面

 

嵌入捕捉_语义_含义

 

一个包含笑脸和哭脸的表,可用于按情感分类。

使用 OpenAI API 的 Embeddings 入门

用嵌入做分类

  • 零样本分类
    • 不用标注数据

 

流程:

  1. 对类别描述做嵌入

在向量空间中的类别描述嵌入。

使用 OpenAI API 的 Embeddings 入门

用嵌入做分类

  • 零样本分类
    • 不用标注数据

 

流程:

  1. 对类别描述做嵌入
  2. 对待分类项做嵌入
  3. 计算余弦距离

在向量空间中的类别描述嵌入,以及一个未知向量。

使用 OpenAI API 的 Embeddings 入门

用嵌入做分类

  • 零样本分类
    • 不用标注数据

 

流程:

  1. 对类别描述做嵌入
  2. 对待分类项做嵌入
  3. 计算余弦距离
  4. 赋予最相似的标签

在向量空间中的类别描述嵌入,一个未知向量被分配为 Tech 标签。

使用 OpenAI API 的 Embeddings 入门

对类别描述做嵌入

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

class_descriptions = [topic['label'] for topic in topics]
class_embeddings = create_embeddings(class_descriptions)
使用 OpenAI API 的 Embeddings 入门

对待分类项做嵌入

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]
使用 OpenAI API 的 Embeddings 入门

计算余弦距离

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)
使用 OpenAI API 的 Embeddings 入门

提取最相似的标签

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

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

局限

  • 类别描述不够详细
使用 OpenAI API 的 Embeddings 入门

更详细的描述

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
使用 OpenAI API 的 Embeddings 入门

Passons à la pratique !

使用 OpenAI API 的 Embeddings 入门

Preparing Video For Download...