Получение тегов для вектора в модели Doc2Vec
Я пытаюсь реализовать KNN без использования функции KNN. Как только я обучу модель Doc2vec, есть ли метод, который возвращает список кортежей каждой формы (вектор, тег), потому что я установил тег во время обучения, чтобы он был классом? Я делаю это для того, чтобы можно было вычислить косинусное сходство для вектора тестового примера и каждого вектора в обучающем наборе и отсортировать на его основе, принимая k максимальных значений, а также иметь тег, доступный для голосования большинством.
Из того, что я искал, я могу получить вектор для слова, но не тег для обученного вектора. И я использовал метод most_simil, который несколько возвращает результат, который мне нужен, но он делает это, используя среднее значение данных, тогда как я просто хочу, чтобы разница между векторами в обучающем наборе и тестовых данных в качестве критерия сортировки, а также наличие ярлыков.
1 ответ
Если у тебя есть 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])
Если вам нужно что-то еще, пожалуйста, будьте более ясны в отношении формы ваших тренировочных данных. (Например, каждый из ваших документов содержит только один идентификатор, или повторные метки классов, или оба?)