Не уверен, что это правильный сайт стека, но здесь идет.
Как работает метод .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, векторами или сравнением некоторой другой матрицы? Специфика не ясна в документации ; любая помощь приветствуется!
Ответы:
Нашел ответ, короче говоря это да
Ссылка на Souce Code
Похоже, это формула для вычисления косинусного сходства, и векторы, похоже, создаются с помощью SpaCy, в
.vector
документации которого говорится, что он обучен по модели w2v GloVe.источник
По умолчанию это косинусное сходство с векторами, усредненными по документу для пропущенных слов.
Вы также можете настроить это, установив хук на
doc.user_hooks['similarity']
. Этот конвейерный компонент объединяет функции сходства, облегчая настройку сходства:https://github.com/explosion/spaCy/blob/develop/spacy/pipeline.pyx#L50
источник
SentenceSegmenter
стратегией.