Klasyfikacja wydźwięku recenzji
Masz już obliczone osadzenia – czas teraz wyliczyć odległości cosinusowe i wyodrębnić najbardziej podobną etykietę.
W tym celu zdefiniujesz funkcję find_closest(), która porównuje osadzenia jednego wektora z wieloma innymi i zwraca najmniejszą odległość wraz z jej indeksem. Następnie przejdziesz pętlą po recenzjach i użyjesz find_closest(), aby dla każdej z nich znaleźć najbliższą odległość i wyodrębnić sklasyfikowaną etykietę na podstawie indeksu.
Do dyspozycji masz obiekty class_embeddings i review_embeddings utworzone w poprzednim ćwiczeniu, a także listy reviews i sentiments.
To ćwiczenie jest częścią kursu
Wprowadzenie do osadzeń z OpenAI API
Instrukcje do ćwiczenia
- Zdefiniuj funkcję
find_closest(), która zwraca odległość i indeks osadzenia najbardziej podobnego doquery_vector. - Użyj
find_closest(), aby znaleźć najmniejszą odległość między osadzeniami każdej recenzji aclass_embeddings. - Skorzystaj z
'index'zmiennejclosest, aby zindeksowaćsentimentsi wyodrębnić wartość'label'.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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}')