Я совсем недавно изучаю doc2vec и у меня есть вопросы о векторе документа. Я пытаюсь получить векторную фразу вроде «кошачье млекопитающее». Итак, что я пробовал до сих пор, используя предварительно обученную модель doc2vec, я пробовал код ниже
import gensim.models as g
model = "path/pre-trained doc2vec model.bin"
m = g. Doc2vec.load(model)
oneword = 'cat'
phrase = 'cat like mammal'
oneword_vec = m[oneword]
phrase_vec = m[phrase_vec]
Когда я попробовал этот код, я смог получить вектор для одного слова «кошка», но не «кошачье млекопитающее». Потому что word2vec предоставляет вектор только для одного слова, например «кошка», верно? (Если я ошибаюсь, пожалуйста, поправьте меня) Итак, я поискал и нашел infer_vector () и попробовал код ниже
phrase = phrase.lower().split(' ')
phrase_vec = m.infer_vector(phrase)
Когда я пробовал этот код, я мог получить вектор, но каждый раз я получаю другое значение, когда пробовал строку_vec = m.infer_vector (фраза), потому что infer_vector имеет «шаги».
Когда я устанавливаю step = 0, я всегда получаю один и тот же вектор. фраза_век = m.infer_vector (фраза, шаги = 0)
Однако я также обнаружил, что вектор документа получается из усреднения слов в документе. например, если документ состоит из трех слов, «кошачье млекопитающее», добавьте три вектора «кошка», «подобное», «млекопитающее», а затем усредните их, это будет вектор документа. (Если я ошибаюсь, пожалуйста, поправьте меня)
Итак, вот несколько вопросов.
- Правильно ли использовать infer_vector () с 0 шагами для получения вектора фразы?
- Если это правильный вектор усреднения слов для получения вектора документа, разве нет необходимости использовать infer_vector ()?
- Для чего нужен файл model.docvecs?