Zacznij terazZacznij za darmo

Osadzanie bardziej szczegółowych opisów

Jedna z ostatnio przewidzianych etykiet nie wydawała się odpowiednio reprezentować recenzji – prawdopodobnie wynikało to z niewystarczającej ilości informacji uchwytywanych podczas osadzania samych etykiet klas. Tym razem zamiast etykiet zostaną osadzone opisy każdej klasy, dzięki czemu model lepiej „zrozumie", że klasyfikujesz recenzje restauracji.

Do dyspozycji masz następujące obiekty:

sentiments = [{'label': 'Positive',
               'description': 'A positive restaurant review'},
              {'label': 'Neutral',
               'description':'A neutral restaurant review'},
              {'label': 'Negative',
               'description': 'A negative restaurant review'}]

reviews = ["The food was delicious!",
           "The service was a bit slow but the food was good",
           "The food was cold, really disappointing!"]

To ćwiczenie jest częścią kursu

Wprowadzenie do osadzeń z OpenAI API

Zobacz kurs

Instrukcje do ćwiczenia

  • Wyodrębnij listę zawierającą opisy sentymentów i osadź je.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

# Extract and embed the descriptions from sentiments
class_descriptions = ____
class_embeddings = ____
review_embeddings = create_embeddings(reviews)

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"])

for index, review in enumerate(reviews):
  closest = find_closest(review_embeddings[index], class_embeddings)
  label = sentiments[closest['index']]['label']
  print(f'"{review}" was classified as {label}')
Edytuj i uruchom kod