レビューの感情を分類する
すでに埋め込みを計算したので、次はコサイン距離を求めて、最も近いラベルを取り出します。
これを行うために、1つのベクトルと複数のベクトルの埋め込みを比較し、最小距離とそのインデックスを返すfind_closest()という関数を定義します。続いて、レビューをループして各レビューについてfind_closest()で最小距離を見つけ、インデックスを使って分類されたラベルを抽出します。
前の演習で作成したclass_embeddingsとreview_embeddingsのオブジェクトに加えて、reviewsとsentimentsも利用できます。
この演習はコースの一部です
OpenAI API ではじめる Embeddings 入門
演習の手順
find_closest()という関数を定義し、query_vectorに最も類似する埋め込みの距離とインデックスを返してください。- 各レビューの埋め込みと
class_embeddingsとの最小距離をfind_closest()で見つけてください。 closestの'index'を使ってsentimentsを部分抽出し、'label'を取り出してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Define a function to return the minimum distance and its index
def find_closest(query_vector, embeddings):
distances = []
for index, embedding in enumerate(embeddings):
dist = distance.cosine(____, ____)
distances.append({"distance": dist, "index": index})
return ____(distances, key=lambda x: x["distance"])
for index, review in enumerate(reviews):
# Find the closest distance and its index using find_closest()
closest = ____(review_embeddings[____], ____)
# Subset sentiments using the index from closest
label = ____
print(f'"{review}" was classified as {label}')