Как рассчитывается метод сходства в SpaCy?

13

Не уверен, что это правильный сайт стека, но здесь идет.

Как работает метод .similiarity?

Wow spaCy это здорово! Его модель tfidf может быть проще, но w2v только с одной строкой кода ?!

В своем 10-строчном уроке по spaCy andrazhribernik показывает нам метод сходства, который можно использовать для токенов, отправлений, кусков слов и документов.

После nlp = spacy.load('en')и doc = nlp(raw_text) мы можем выполнять запросы на сходство между токенами и порциями. Однако что рассчитывается за кулисами в этом .similarityметоде?

SpaCy уже имеет невероятно простую систему .vector, которая вычисляет вектор w2v, полученный на основе модели GloVe (насколько классным будет метод .tfidfили .fasttextметод?).

Является ли модель простым вычислением косинусного сходства между этими двумя w2v, .vector, векторами или сравнением некоторой другой матрицы? Специфика не ясна в документации ; любая помощь приветствуется!

whs2k
источник
1
"Каким классным будет метод .tfidf или .fasttext?" то документы дают пример замены векторов перчатки с FastText. Возможно, это не совсем то же самое, что иметь их вместе. Github
Карл G

Ответы:

12

Нашел ответ, короче говоря это да

Ссылка на Souce Code

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

Похоже, это формула для вычисления косинусного сходства, и векторы, похоже, создаются с помощью SpaCy, в .vectorдокументации которого говорится, что он обучен по модели w2v GloVe.

whs2k
источник
6

По умолчанию это косинусное сходство с векторами, усредненными по документу для пропущенных слов.

Вы также можете настроить это, установив хук на doc.user_hooks['similarity']. Этот конвейерный компонент объединяет функции сходства, облегчая настройку сходства:

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

силлогизм_
источник
Технически, вы, кажется, связаны со SentenceSegmenterстратегией.
Карл Г