Clasificar el sentimiento de las opiniones
Ahora que has calculado las incrustaciones, es el momento de calcular las distancias coseno y extraer la etiqueta más similar.
Lo harás definiendo una función llamada find_closest()
, que puede utilizarse para comparar las incrustaciones entre un vector y otros múltiples, y devolver la distancia más cercana y su índice. A continuación, harás un bucle sobre las reseñas y y utilizarás find_closest()
para encontrar la distancia más cercana para cada reseña, extrayendo la etiqueta clasificada utilizando el índice.
Los objetos class_embeddings
y review_embeddings
que creaste en el último ejercicio están disponibles para que los utilices, así como los objetos reviews
y sentiments
.
Este ejercicio forma parte del curso
Introducción a las incrustaciones con la OpenAI API
Instrucciones del ejercicio
- Define una función llamada
find_closest()
que devuelva la distancia y el índice de la incrustación más similar a laquery_vector
. - Utiliza
find_closest()
para encontrar la distancia más cercana entre las incrustaciones de cada revisión y elclass_embeddings
. - Utiliza el
'index'
declosest
para subconjuntarsentiments
y extraer el'label'
.
Ejercicio interactivo práctico
Prueba este ejercicio completando el código de muestra.
# 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}')