Как рассчитывается метод сходства в 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, векторами или сравнением некоторой другой матрицы? Специфика не ясна в документации ; любая помощь приветствуется!


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.


6

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

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

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


Технически, вы, кажется, связаны со SentenceSegmenterстратегией.
Карл Г
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.