Вы можете попробовать добавить кодировщик LSTM/RNN
перед вашей фактической нейронной сетью и заполнить ее нейронной сетью, используя скрытые состояния вашего кодировщика (которые будут действовать как представления документа).
Преимущество этого - ваш документвложения будут обучены для вашей конкретной задачи обобщения текста.
Я не знаю, какую платформу вы используете, иначе вы могли бы помочь с некоторым кодом для начала работы.
РЕДАКТИРОВАТЬ 1:Добавить фрагмент кода
word_in = Input(shape=("<MAX SEQ LEN>",))
emb_word = Embedding(input_dim="<vocab size>", output_dim="<embd_dim>",input_length="<MAX SEQ LEN>", mask_zero=True)(word_in)
lstm = LSTM(units="<size>", return_sequences=False,
recurrent_dropout=0.5, name="lstm_1")(emb_word)
Добавить любой тип плотного слоя, который принимает векторы в качестве входных данных.
LSTM
принимает входные данные формы batch_size * sequence_length * word_vector_dimension
и создает выходные данные формы batch_size * rnn_size
;который вы можете использовать как вложения документа.