¿Cómo se calcula el método .similarity en SpaCy?

13

No estoy seguro si este es el sitio de pila correcto, pero aquí va.

¿Cómo funciona el método .similiarity?

Wow SpaCy es genial! ¡Su modelo tfidf podría ser más fácil, pero w2v con solo una línea de código ?!

En su tutorial de 10 líneas sobre spaCy andrazhribernik nos muestra el método de similitud que se puede ejecutar en tokens, sents, fragmentos de palabras y documentos.

Después nlp = spacy.load('en')y doc = nlp(raw_text) podemos hacer consultas de similitud entre tokens y fragmentos. Sin embargo, ¿qué se calcula entre bastidores en este .similaritymétodo?

SPACY ya tiene el increíblemente simple .vector, que calcula el vector w2v como entrenado a partir del modelo de guante (cómo sería un lugar fresco .tfidfo .fasttextser método?).

¿El modelo simplemente calcula la similitud del coseno entre estos dos vectores w2v, .vector o compara alguna otra matriz? Los detalles no están claros en la documentación ; Cualquier ayuda apreciada!

whs2k
fuente
1
"¿Qué tan genial sería un método .tfidf o .fasttext?" los documentos proporcionan un ejemplo de reemplazo de los vectores GloVe con FastText. Tal vez no sea exactamente lo mismo que tenerlos juntos. Github
Carl G

Respuestas:

12

Encontré la respuesta, en resumen, es sí:

Enlace al Código Souce

return numpy.dot(self.vector, other.vector) / (self.vector_norm * other.vector_norm)

Parece que es la fórmula para calcular la similitud del coseno y parece que los vectores se crearon con SpaCy, .vectorque según la documentación está entrenada a partir del modelo w2v de GloVe.

whs2k
fuente
6

Por defecto es la similitud del coseno, con vectores promediados sobre el documento para las palabras que faltan.

También puede personalizar esto configurando un gancho en doc.user_hooks['similarity']. Este componente de canalización envuelve funciones de similitud, lo que facilita la personalización de la similitud:

https://github.com/explosion/spaCy/blob/develop/spacy/pipeline.pyx#L50

silogismo_
fuente
Técnicamente, pareces estar vinculado a la SentenceSegmenterestrategia.
Carl G