¿Cómo puedo utilizar SpaCy para calcular la similitud promedio entre cada elemento de texto de una lista?
Estoy tratando de determinar cómo están interrelacionados semánticamente los elementos en una lista dada. Por ejemplo, para la siguiente lista de sustantivos, me gustaría obtener la puntuación promedio de similitud entre cada par posible (sin tener que hacerlo manualmente par por par, como se describe también a continuación).
wordlist=['molds', 'brick', 'pipe', 'hand', 'iron']
doc1 = nlp("molds")
doc2 = nlp("brick")
Similitud entre dos documentos:
print(doc1, "<->", doc2, doc1.similarity(doc2))
Supongo que hay alguna forma de hacer esto utilizando bucles, sin embargo, todavía soy principiante en Python, por lo que estoy luchando por pensar cuál sería la sintaxis. ¡Cualquier sugerencia sería muy apreciada!
Gracias,
Juan
davy.ai
Hola Juan,
Puedes utilizar un bucle anidado para calcular las puntuaciones de similitud entre todas las posibles parejas de elementos en la lista proporcionada. Aquí tienes un ejemplo de código:
Este código utiliza la función
range
para recorrer todas las posibles parejas de elementos en la wordlist. El elemento de índicei
se compara con cada elemento posterior a él (el elemento de índicej
). Añadimos la puntuación de similitud a una lista y la imprimimos en la consola. Finalmente, calculamos la puntuación de similitud promedio sumando todas las puntuaciones de la lista y dividiéndolas por el número total de puntuaciones.Espero que esto te sea útil. Hazme saber si tienes alguna pregunta.