Получение тегов для вектора в модели Doc2Vec - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь реализовать KNN без использования функции KNN.Как только я обучу модель Doc2vec, есть ли метод, который возвращает список кортежей каждой формы (вектор, тег), потому что я установил тег во время обучения, чтобы он был классом?Я делаю это для того, чтобы можно было вычислить косинусное сходство для вектора тестового примера и каждого вектора в обучающем наборе и отсортировать на его основе, принимая k максимальных значений, а также иметь тег, доступный для голосования большинством.

Из того, что я искал, я могу получить вектор для слова, но не тег для обученного вектора. И я использовал метод most_simil, который несколько возвращает результат, который мне нужен, но он делает это, используясреднее значение для данных, в то время как я просто хочу, чтобы разница между векторами в обучающем наборе и тестовом примере данных использовалась в качестве критерия сортировки, при этом также были доступны метки.

1 Ответ

0 голосов
/ 29 января 2019

Если у вас есть Doc2Vec модель d2v_model, вы можете получить список (строк) тегов, которые он изучил во время обучения:

d2v_model.docvecs.index2entity

Для любого данного тега вы можете получить еготочный вектор через:

vec = d2v_model.docvecs[tag]

Если вы хотите найти теги, векторы которых близки к определенному целевому вектору, вы можете использовать метод most_similar() со списком с одним необработанным target_vec в качестве егоpositive параметр:

nearest = d2v_model.docvecs.most_similar(positive=[target_vec])

Если вам нужно что-то еще, пожалуйста, будьте более ясны в отношении формы ваших тренировочных данных.(Например, каждый из ваших документов содержит только один идентификатор, или повторные метки классов, или оба?)

...