Análisis Semántico: Buscar Textos con Sentence Transformers
Clase 10 de 26 • Curso de Embeddings y Bases de Datos Vectoriales para NLP
Resumen
¿Cómo realizar una búsqueda semántica vectorial con Sentence Transformers?
La capacidad de convertir texto en espacios vectoriales ha revolucionado el análisis de datos textuales, permitiendo búsquedas semánticas más precisas y efectivas. En este contexto, utilizamos el dataset de diálogos de Avatar que ya hemos transformado a embeddings, lo que nos permite aplicarle una búsqueda semántica vectorial de manera eficiente.
¿Qué es la búsqueda semántica vectorial?
La búsqueda semántica vectorial utiliza representaciones en forma de vectores de los datos textuales para identificar similitudes semánticas entre términos de búsqueda y el contenido del dataset. Al utilizar Sentences Transformers, podemos aplicar métricas de similitud, como el coseno, para encontrar los resultados más similares a un término de búsqueda dado.
¿Cómo se implementa con Sentences Transformers?
Para implementar esta técnica, añadimos una nueva columna en nuestro dataset donde calcularemos la similitud usando la métrica de coseno. Aquí, te explicamos cómo hacerlo paso a paso:
-
Agregar una nueva columna de similitud:
df_avatar['Similarity'] = df_avatar.embeddings.apply( lambda x: utils.cossim(x, query_embedding[0]) )
En este paso, 'utils.cossim' calcula la similitud entre los embeddings del dataset y nuestro 'query_embedding'.
-
Definir el término de búsqueda:
Antes de calcular la similitud, debemos definir nuestro término de búsqueda:
query_embedding = model.encode('teach me please')
Aquí,
model.encode
transforma el término de búsqueda en un vector de espacio, lo cual es fundamental para comparar su similitud con los datos. -
Obtener los resultados más similares:
Una vez calculadas las similitudes, podemos ordenar los datos para mostrar los diálogos más cercanos semánticamente al término de búsqueda:
df_avatar_sorted = df_avatar.sort_values(by='Similarity', ascending=False).head(10)
Este paso muestra los 10 resultados más relevantes, basados en una búsqueda de "teach me please".
¿Qué resultados podemos esperar?
El término de búsqueda "teach me please" reveló resultados como "yes, yes, I will teach you" o preguntas que tienen un significado contextual cercano, lo que demuestra la efectividad de la búsqueda semántica más allá de un simple match de palabras.
¿Qué otros retos y experimentos podemos realizar?
Además del ejemplo anterior, puedes explorar otras funcionalidad de Sentence Transformers aplicándolo a míltiples datasets. Aquí te dejamos algunas sugerencias para motivarte a seguir aprendiendo:
- Prueba con diferentes términos de búsqueda: No te limites a frases simples como "teach me please". Experimenta con frases más complejas.
- Utiliza diferentes datasets: Usa otros datasets disponibles en la sección de recursos para diversificar la experiencia de búsqueda semántica.
- Busca frases específicas de capítulos: Si tienes un capítulo o una escena en mente, inserta una frase clave y utiliza la búsqueda semántica para encontrar ese diálogo en el dataset.
La búsqueda semántica vectorial abre un abanico de posibilidades, permitiéndote ir más allá de las búsquedas convencionales basadas en coincidencias exactas. ¡Anímate a seguir explorando el fascinante mundo del procesamiento de lenguaje natural!