23 votos

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

No estoy seguro de si este es el sitio de la pila derecha, 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 sólo una línea de código?!

En su tutorial de 10 líneas sobre spaCy andrazhribernik nos muestra el método .similarity que puede ejecutarse en tokens, sents, trozos de palabras y docs.

En nlp = spacy.load('en') y doc = nlp(raw_text) podemos hacer consultas de similitud entre tokens y chunks. Sin embargo, lo que se está calculando entre bastidores en este .similarity ¿método?

SpaCy ya cuenta con el increíblemente sencillo .vector que calcula el vector w2v entrenado a partir del modelo GloVe (qué guay sería un .tfidf o .fasttext ).

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

19voto

SuB Puntos 429

La respuesta, en pocas palabras, es sí:

Enlace al código fuente

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

Esto parece que es la fórmula para calcular similitud coseno y los vectores parecen creados con SpaCy's .vector que la documentación dice que está entrenado a partir del modelo w2v de GloVe.

6voto

lafaillette Puntos 33

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

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

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X