Word2Vec с POS не дает ожидаемых результатов?

Я пытаюсь оценить влияние части речевой информации с помощью вложений Word2Vec, но не получаю ожидаемых результатов.

Я ожидал, что POS, включающий в себя вложения word2vec, будет лучше работать в задаче машинного перевода, но на самом деле он работает хуже.

Я создаю два набора встраивания из одного корпуса с помощью Gensim, один - это обычный Word2Vec, другой, я меняю токены на «[WORD] __ [POS]».

Я оцениваю различия в производительности, используя вложения в задаче машинного перевода Seq2Seq. Я оцениваю два подхода с помощью BLEU

Вот как я тренирую вложения word2vec + POS с помощью SpaCy:

sentences = []
    for sent in doc.sents:
        tokens = []
        for t in sent:
            tokens += ["{}__{}".format(t.text, t.pos_)]
        sentences += tokens
    pos_train += [sentences]

Это моя эталонная модель машинного перевода с Keras + Tensorflow:

encoder_inputs = Input(shape=(None, num_encoder_tokens))
encoder = LSTM(LATENT_DIM, return_state=True)
_, state_h, state_c = encoder(encoder_inputs)
encoder_states = [state_h, state_c]

decoder_inputs = Input(shape=(None, num_decoder_tokens))
decoder_lstm = LSTM(LATENT_DIM, return_sequences=True, return_state=True)
decoder_outputs, _, _ = decoder_lstm(decoder_inputs, initial_state=encoder_states)
decoder_dense = Dense(num_decoder_tokens, activation='softmax')
decoder_outputs = decoder_dense(decoder_outputs)

model = Model([encoder_inputs, decoder_inputs], decoder_outputs)

С BLEU подход Word2Vec + POS стабильно набирает те же баллы, что и Word2Vec, или на 0,01–0,02 балла ниже обычных вложений Word2Vec.

Кто-нибудь знает, почему это может происходить? Есть ли пробелы в моих рассуждениях или ожиданиях?


person Andrew Xia    schedule 26.05.2019    source источник


Ответы (1)


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

  • возможно, теги POS не очень точны в отношении одного из языков, или есть некоторые другие аномальные проблемы, характерные для ваших данных

  • возможно, метод создания составных токенов с внутренним __ в некоторых случаях мешает оценке - например, если исходный корпус сохраняет какие-либо токены, в которых уже было __

  • возможно, в некоторых случаях недостаточности данных столкновение гомографов схожего значения различных частей речи на самом деле помогает сгладить более расплывчатый перевод значения в значение. (Например, возможно, учитывая семантическую близость shop_NOUN и shop_VERB, лучше иметь 100 конфликтующих примеров shop, чем 50 каждого.)

Некоторые идеи по отладке (в дополнение к очевидной «перепроверьте все»):

  • внимательно посмотрите на те тестовые примеры, в которых подходы «простой против POS» различаются по количеству баллов; посмотреть, есть ли какие-либо шаблоны - например, странные знаки препинания, нестандартная грамматика и т. д. - дающие ключи к тому, где __POS украшения вредят

  • попробуйте другие языковые пары и другие (частные или общедоступные) наборы данных соответствия, чтобы узнать, помогает ли где-либо (или в целом) POS-тегирование, и есть ли что-то особенное в вашем конкретном наборе данных / языковой паре

  • Учтите, что умножение токенов (путем разделения омографов на варианты, специфичные для POS) изменило размер модели и распределение слов таким образом, чтобы это могло взаимодействовать с другими ограничениями (например, min_count, max_vocab_size и т. д.) таким образом, чтобы изменить обучение. В частности, возможно, POS-модель с большим словарным запасом должна получить больше эпох обучения или большую размерность слово-вектор, чтобы отразить ее больший словарный запас с меньшим средним числом вхождений слов.

Удачи!

person gojomo    schedule 29.05.2019