Получение тегов для вектора в модели 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])

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

Другие вопросы по тегам