分類タスクへの埋め込みの活用

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 入門

では、練習しましょう!

OpenAI API ではじめる Embeddings 入門

Preparing Video For Download...