По умолчанию spaCy вычисляет косинусное сходство. Сходство определяется путем сравнения векторов слов или вложений слов, многомерных смысловых представлений слова.
It возвращает return (numpy.dot(self.vector, other.vector) / (self_norm * other_norm))
text1 = 'How can I end violence?'
text2 = 'What should I do to be a peaceful?'
doc1 = nlp(text1)
doc2 = nlp(text2)
print("spaCy :", doc1.similarity(doc2))
print(np.dot(doc1.vector, doc2.vector) / (np.linalg.norm(doc1.vector) * np.linalg.norm(doc2.vector)))
Вывод:
spaCy : 0.916553147896471
0.9165532
Похоже, что метод spaCy .vector
создал векторы. Документация говорит, что модели spaCy обучаются по векторам GloVe.