gensim doc2vec - Как сделать вывод о метке

Я использую реализацию gensim doc2vec, и у меня есть несколько тысяч документов, помеченных четырьмя метками.

yield TaggedDocument(text_tokens, [labels])

Я тренирую модель Doc2Vec со списком этих TaggedDocument s. Однако я не уверен, как определить тег для документа, который не был виден во время обучения. Я вижу, что есть метод infer_vector, который возвращает вектор встраивания. Но как я могу получить наиболее вероятный ярлык от этого?

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

2 ответа

Решение

Я нашел решение:

model.docvecs['my_tag']

дает мне вектор для данного тега. Легко

infer_vector() Метод подготовит вектор документа для нового текста, который должен быть списком токенов, которые были предварительно обработаны, как и учебные тексты).

И, как вы заметили, model.docvecs['my_tag'] получит предварительно обученный вектор документа для одного из тегов, известных во время обучения.

Проверка сходства нового вектора с векторами для всех известных тегов - это разумный базовый способ узнать, на какие существующие теги похож новый документ. Ближайший тег или несколько ближайших тегов могут быть разумными метками для неизвестного документа, как своего рода подход "ближайшего соседа".

Но обратите внимание, что оригинал / обычный Doc2Vec Подход заключается в том, чтобы дать каждому документу уникальный идентификатор и позволить каждому ID-тегу получить свой собственный вектор. И затем, возможно, использовать эти векторы с известными метками, чтобы обучить некоторый другой классификатор, который отображает векторы на метки. (В некоторых случаях это может работать лучше, если "области векторного пространства документов", которые люди связывают с определенной меткой , не являются точными радиусами вокруг одной точки центроида для каждой метки.)

Ваш подход использования или добавления известных меток в качестве тегов doc часто может помочь. Но также обратите внимание, что если вы используете только 4 уникальных тега для тысяч документов, это функционально очень похоже на простую тренировку модели с 4 гигантскими документами - что может быть не очень удобно для размещения этих 4 векторов в большом пространстве (>4 измерения), потому что не так много разнообразных / тонких контрастов, которые необходимы, чтобы подтолкнуть обученные векторы к полезным действиям. (Типичный опубликован Doc2Vec В работе используются от десятков тысяч до миллионов уникальных документов и тегов документов.)

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