Как spaCy генерирует векторы для фраз? - PullRequest
0 голосов
/ 10 апреля 2020

Средние и большие словари spaCy могут генерировать векторы для слов и фраз. Давайте рассмотрим следующий пример:

import spacy

nlp = spacy.load("en_core_web_md")
tokens = nlp("apple cat sky")

print(tokens.text, tokens.vector[:3], tokens.vector_norm) #just only first three conmponents of vector 

for token in tokens:
    print(token.text, token.vector[:3], token.vector_norm)

Вывод:

apple cat sky [-0.06734333  0.03672066 -0.13952099] 4.845729844425328
apple [-0.36391  0.43771 -0.20447] 7.1346846
cat [-0.15067  -0.024468 -0.23368 ] 6.6808186
sky [ 0.31255  -0.30308   0.019587] 6.617719

Понятно, что словарь содержит векторы для каждого слова, но как генерируется вектор для всей фазы? Как видно, это не просто сумма векторов.

1 Ответ

0 голосов
/ 10 апреля 2020

По умолчанию вектор Doc представляет собой среднее значение векторов токенов, ср https://spacy.io/usage/vectors-similarity:

Модели, поставляемые со встроенными векторы слов делают их доступными в качестве атрибута Token.vector. У c .vector и Span.vector по умолчанию будет среднее значение их векторов токенов.

...