리뷰 감성 분류하기
이제 임베딩을 계산했으니, 코사인 거리를 구하고 가장 유사한 레이블을 추출해 볼 차례예요.
이를 위해 하나의 벡터를 여러 벡터와 비교해 가장 가까운 거리와 그 인덱스를 반환하는 find_closest() 함수를 정의할 거예요. 그런 다음 리뷰를 반복하며 각 리뷰에 대해 find_closest()로 가장 가까운 거리를 찾고, 해당 인덱스를 사용해 분류된 레이블을 추출합니다.
이전 연습 문제에서 만든 class_embeddings와 review_embeddings 객체가 준비되어 있으며, reviews와 sentiments도 함께 사용할 수 있어요.
이 연습은 강의의 일부입니다
OpenAI API로 시작하는 임베딩 Introduction
연습 안내
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}')