Keras 带POS的Word2Vec未产生预期结果?

Keras 带POS的Word2Vec未产生预期结果?,keras,nlp,word2vec,word-embedding,seq2seq,Keras,Nlp,Word2vec,Word Embedding,Seq2seq,我试图用Word2Vec嵌入来衡量词性信息的影响,但没有得到预期的结果 我期望POS包含word2vec嵌入在机器翻译任务中表现更好,但实际上表现更差 我使用Gensim在同一个语料库上创建了两组嵌入,一个是普通的Word2Vec,另一个是将标记改为“[WORD]\uu POS]” 我通过在Seq2Seq机器翻译任务中使用嵌入来测量性能差异。我正在与BLEU评估这两种方法 这就是我如何使用SpaCy培训word2vec+POS嵌入: sentences = [] for sent in

我试图用Word2Vec嵌入来衡量词性信息的影响,但没有得到预期的结果

我期望POS包含word2vec嵌入在机器翻译任务中表现更好,但实际上表现更差

我使用Gensim在同一个语料库上创建了两组嵌入,一个是普通的Word2Vec,另一个是将标记改为“[WORD]\uu POS]”

我通过在Seq2Seq机器翻译任务中使用嵌入来测量性能差异。我正在与BLEU评估这两种方法

这就是我如何使用SpaCy培训word2vec+POS嵌入:

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相同,或比正常的Word2Vec嵌入低0.01-0.02分


有人知道为什么会这样吗?我的推理或期望有差距吗?

我也希望准确的词性信息能够提高翻译水平,但我不知道是否有其他人报告了这样的提高。一些(未提供信息的)猜测,原因可能是:

  • 可能词性标记对于其中一种语言不是很准确,或者对于您的数据存在其他一些异常挑战

  • 可能在某些情况下,使用内部
    \uuuu
    创建复合标记的方法会干扰评估–例如,如果原始语料库保留了任何已经包含
    \uuuu
    的标记

  • 也许在某些数据不足的情况下,不同词类中相似的同形异义词的碰撞实际上有助于将模糊的意义变厚为意义翻译。(例如,考虑到
    shop\u名词
    shop\u动词
    的语义关联性,最好有100个
    shop
    的冲突示例,而不是50个。)

一些调试想法(除了明显的“仔细检查所有内容”):

  • 仔细观察那些普通方法和POS方法在评分上不同的测试用例;看看是否有任何模式——比如奇怪的标记/标点符号、非标准语法等——提供了
    \u POS
    装饰的线索

  • 尝试其他语言对和其他(私有或公共)一致性数据集,看看词性标记在其他地方(或一般情况下)是否有帮助,以及特定数据集/语言对是否有额外的挑战

  • 考虑到标记的乘法(通过将同形词拆分为特定于词性的变体)改变了模型大小和单词分布,其方式可能与其他限制(如
    min\u count
    max\u vocab\u size
    等)相互作用,从而修改了训练。特别是,也许词汇量较大的词性模型应该获得更多的训练时间,或者更大的词向量维度,以反映其词汇量较大且平均单词出现次数较低的情况


祝你好运

我也希望准确的词性信息能够提高翻译水平,但我不知道是否有其他人报告了这样的提高。一些(未提供信息的)猜测,原因可能是:

  • 可能词性标记对于其中一种语言不是很准确,或者对于您的数据存在其他一些异常挑战

  • 可能在某些情况下,使用内部
    \uuuu
    创建复合标记的方法会干扰评估–例如,如果原始语料库保留了任何已经包含
    \uuuu
    的标记

  • 也许在某些数据不足的情况下,不同词类中相似的同形异义词的碰撞实际上有助于将模糊的意义变厚为意义翻译。(例如,考虑到
    shop\u名词
    shop\u动词
    的语义关联性,最好有100个
    shop
    的冲突示例,而不是50个。)

一些调试想法(除了明显的“仔细检查所有内容”):

  • 仔细观察那些普通方法和POS方法在评分上不同的测试用例;看看是否有任何模式——比如奇怪的标记/标点符号、非标准语法等——提供了
    \u POS
    装饰的线索

  • 尝试其他语言对和其他(私有或公共)一致性数据集,看看词性标记在其他地方(或一般情况下)是否有帮助,以及特定数据集/语言对是否有额外的挑战

  • 考虑到标记的乘法(通过将同形词拆分为特定于词性的变体)改变了模型大小和单词分布,其方式可能与其他限制(如
    min\u count
    max\u vocab\u size
    等)相互作用,从而修改了训练。特别是,也许词汇量较大的词性模型应该获得更多的训练时间,或者更大的词向量维度,以反映其词汇量较大且平均单词出现次数较低的情况

祝你好运