Классификация тональности отзывов
Теперь, когда эмбеддинги вычислены, пора рассчитать косинусные расстояния и извлечь наиболее похожую метку.
Для этого вы определите функцию find_closest(), которая сравнивает эмбеддинги одного вектора с несколькими другими и возвращает наименьшее расстояние и его индекс. Затем вы пройдёте по всем отзывам и с помощью find_closest() найдёте ближайшее расстояние для каждого из них, извлекая классифицированную метку по индексу.
Объекты class_embeddings и review_embeddings, созданные в предыдущем упражнении, уже доступны вам для использования, как и reviews и sentiments.
Это упражнение является частью курса
Введение в эмбеддинги с OpenAI API
Инструкции к упражнению
- Определите функцию
find_closest(), которая возвращает расстояние и индекс наиболее похожего эмбеддинга дляquery_vector. - Используйте
find_closest(), чтобы найти ближайшее расстояние между эмбеддингами каждого отзыва иclass_embeddings. - Используйте
'index'изclosest, чтобы обратиться к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}')