如何将单词嵌入和pos嵌入结合在一起以构建分类器

时间:2018-07-26 11:10:28

标签: nlp word2vec word-embedding pos

您知道POS类似于“ NP”,“ VERB”。如何将这些功能结合到word2vec?

就像跟随向量吗?

keyword    V1         V2          V3         V4            V5         V6   
corruption 0.07397  0.290874    -0.170812   0.085428     'VERB'    'NP' 
people      ..............................................................
budget      ...........................................................

2 个答案:

答案 0 :(得分:4)

第一个简单的解决方案是将嵌入向量与一个表示POS标签的热编码向量连接起来。

但是,如果您想做一些更出色的事情,则应该找到权衡这些不同功能的正确方法。

例如,您可以使用XGboost:给定一组未标准化的功能(在您的情况下为嵌入+ POS),可以根据特定任务为每个功能分配权重。

作为替代方案,您可以使用神经网络将这些特征组合成唯一的有意义的隐藏表示形式。

假设每个单词的上下文在您的任务中都很重要,则可以执行以下操作:

  • 计算单词嵌入(N维)
  • 计算pos(1个热编码向量)
  • 在pos上运行LSTM或类似的循环层。
  • 为每个单词创建一个表示形式,包括单词嵌入和LSTM层的相应输出。
  • 使用完全连接的图层来创建一致的隐藏表示。

P.S。请注意,使用递归层不是强制性的,您也可以尝试将pos连接并直接嵌入,然后应用完全连接的层。

答案 1 :(得分:0)

如果要将POS标签作为功能添加到嵌入矢量中,则可以简单地add them to the numpy arrays表示单词矢量。但是,我猜想,这种技巧不应该起作用,因为单词向量的维数很高,而且单个添加功能的影响也很低。

使用POS标签扩展单词向量是一个好习惯(例如,因为它可以处理多义性),但是通常POS标签是以不同的方式添加的。首先,您应该使用POS标签注释您的训练语料库,然后您可以在该语料库上训练模型(vectors.nlpl存储库中的模型是通过这种方式训练的)。结果,您应该获得如下内容:

keyword            V1       V2           V3         V4             
corruption_NOUN  0.07397  0.290874    -0.170812   0.085428    
people_NOUN      .........................................
budget_NOUN      .........................................