Keras是否学习未包含在您指定的词汇表中的单词的嵌入



很抱歉,如果这是一个noob问题,尽管我还没有找到类似的线程。。。我正在尝试学习如何使用推特的大型数据集来创建单词嵌入,以进行情感分类。我使用Keras TextVectorizer将推文转换为序列。我注意到,如果一个单词不在指定的词汇表中,它总是映射到整数1。这难道不意味着该模型还将学习词汇表中没有的单词的权重吗?如果是,你如何避免这种情况?

这里有一个片段:

vectorizer = tfl.TextVectorization(
#ax_tokens=vocab_size,
output_mode='int',
output_sequence_length=50,
standardize=std,
vocabulary=vocab)
test = np.array(['dogs are very cute wordnotinvocabulary'])
vectorizer(test)

输出:<tf.Tensor:shape=(1,50(,dtype=int64,numpy=阵列([[42584252874305572514379,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]],dtype=int64(>

KerasTextVectorization层将为词汇表外(OOV(单词保留一个令牌。这意味着该层确实会学习不在词汇表中的单词的权重,但它只会学习词汇表外所有可能单词的单个权重。我不知道你为什么要避免这种情况。它不会占用太多额外的空间,因为你只需要学习一个额外的单词嵌入,而且它仍然向模型传达了一些信息,即单词存在。

如果你想删除它,你可能会用0替换这个层输出中的所有1,就像这里的答案一样。

最新更新