NLP - 嵌入选择句子标记的“开始”和“结束”

时间:2017-11-07 00:51:14

标签: machine-learning nlp deep-learning word2vec word-embedding

假设我们正在训练神经网络模型来学习从以下输入到输出的映射,其中输出为Name Entity(NE)。

输入:欧盟拒绝德国呼吁抵制英国羔羊。

输出:ORG O MISC O O O MISC O O

创建一个滑动窗口以捕获上下文信息,并将其结果作为model_input提供给训练模型。滑动窗口生成如下结果:

 [['<s>', '<s>', 'EU', 'rejects', 'German'],\
 ['<s>', 'EU', 'rejects', 'German', 'call'],\
 ['EU', 'rejects', 'German', 'call', 'to'],\
 ['rejects', 'German', 'call', 'to', 'boycott'],\
 ['German', 'call', 'to', 'boycott', 'British'],\
 ['call', 'to', 'boycott', 'British', 'lamb'],\
 ['to', 'boycott', 'British', 'lamb', '.'],\
 ['boycott', 'British', 'lamb', '.', '</s>'],\
 ['British', 'lamb', '.', '</s>', '</s>']]

<s>表示句子标记的开头,</s>表示句子结尾标记,每个滑动窗口对应输出中的一个NE。

为了处理这些令牌,使用预训练的嵌入模型将单词转换为向量(例如,手套),但那些预先训练的模型不包括诸如<s></s>的标记。我认为<s></s>的随机初始化在这里不是一个好主意,因为这种随机结果的规模可能与其他Glove嵌入不一致。

问题: 为<s></s>设置嵌入有什么建议?为什么?

1 个答案:

答案 0 :(得分:3)

通常,答案取决于您打算如何在任务中使用嵌入。

我怀疑使用<s></s>令牌是由LSTM或其他递归神经网络决定的,这是在嵌入图层之后。如果您要自己训练单词嵌入,我建议您简单地删除这些标记,因为它们不会添加任何值。启动和停止令牌在LSTM中很重要(虽然并非总是如此),但是它们的单词嵌入可以是任意的,小的随机数也可以,因为这个向量将与所有&#34;正常&#34;相同。载体

如果您不想使用预先训练过的GloVe向量,我建议您冻结嵌入层。例如,在tensorflow中,这可以通过嵌入查找后的tf.stop_gradient操作来实现。通过这种方式,网络不会学习<s>和其他单词之间的任何关系,但它完全没问题,任何现有的关系都不会发生变化。