Comment est calculée la méthode de .similarité dans SpaCy?


13

Je ne sais pas si c'est le bon site de pile, mais voilà.

Comment fonctionne la méthode .similiarity?

Wow spaCy est super! Son modèle tfidf pourrait être plus simple, mais w2v avec une seule ligne de code?!

Dans son didacticiel en 10 lignes sur spaCy andrazhribernik nous montre la méthode .similarity qui peut être exécutée sur des jetons, des sents, des blocs de mots et des documents.

Après nlp = spacy.load('en')et doc = nlp(raw_text) nous pouvons faire des requêtes de similitude entre les jetons et les morceaux. Cependant, qu'est-ce qui est calculé dans les coulisses de cette .similarityméthode?

SpaCy a déjà l'incroyablement simple .vector, qui calcule le vecteur w2v comme formé à partir du modèle GloVe (à quel point une .tfidfou une .fasttextméthode serait-elle cool ?).

Le modèle calcule-t-il simplement la similitude cosinus entre ces deux vecteurs w2v, .vector, ou compare-t-il une autre matrice? Les détails ne sont pas clairs dans la documentation ; toute aide appréciée!


1
"Comment serait cool une méthode .tfidf ou .fasttext?" les documents fournissent un exemple de remplacement des vecteurs GloVe par FastText. Ce n'est peut-être pas exactement la même chose que de les avoir ensemble. Github
Carl G

Réponses:


12

J'ai trouvé la réponse, bref, c'est oui:

Lien vers le code Souce

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

Cela ressemble à sa formule pour calculer la similitude des cosinus et les vecteurs semblent avoir été créés avec SpaCy, .vectordont la documentation indique qu'ils sont formés à partir du modèle w2v de GloVe.


6

Par défaut, c'est la similitude cosinus, avec des vecteurs en moyenne sur le document pour les mots manquants.

Vous pouvez également personnaliser cela en définissant un crochet sur doc.user_hooks['similarity']. Ce composant de pipeline englobe les fonctions de similitude, ce qui facilite la personnalisation de la similitude:

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


Techniquement, vous semblez être lié à la SentenceSegmenterstratégie.
Carl G
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.