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 .similarity
méthode?
SpaCy a déjà l'incroyablement simple .vector
, qui calcule le vecteur w2v comme formé à partir du modèle GloVe (à quel point une .tfidf
ou une .fasttext
mé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!
Réponses:
J'ai trouvé la réponse, bref, c'est oui:
Lien vers le code Souce
Cela ressemble à sa formule pour calculer la similitude des cosinus et les vecteurs semblent avoir été créés avec SpaCy,
.vector
dont la documentation indique qu'ils sont formés à partir du modèle w2v de GloVe.la source
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
la source
SentenceSegmenter
stratégie.