如果我没有预定义的单词词典,如何将单词转换为向量(单词嵌入)?大多数词嵌入实现,如Word2vec和GloVe都有一个固定的词词典。神经网络的输入是单热编码的,隐藏层的大小也取决于词汇的大小,这使得以后在不重新训练所有向量的情况下添加一个新词是不可能的。我需要一个为任意单词输入输出固定维度向量的网络。但是如何将“单词”输入到网络中呢?一种热编码是不可能的,因为我没有固定的单词词典。
将单词转换为三元向量或二元向量是否有效?三元向量已被用于句子嵌入(使用长短期记忆网络的深度句子嵌入),但我怀疑它是否同样适用于词嵌入,因为两种网络架构都发生了变化(词嵌入使用浅层网络而句子嵌入使用 RNN)和辅助任务。请帮忙。
笔记:
通过“转换为三元向量”,我的意思是:
- 让输入单词为“CAT”在开头和结尾添加#s:“#CAT#”
- 列出所有可能的三元组:#CA、CAT、AT#
- 每个三元组都被转换为维度为 NxNxN 的一个热编码向量,其中 N 是我的字符集大小。例如,E("#CA") = {0,0,0,0,0,...,0, 1 ,0,0,0}
- 将单词的每个三元组的一个热编码向量相加,得到单词的“三元组向量”。例如,trigram_vec("CAT") = {0,0,0,0,...0, 1 ,0,0,...0,0, 1 ,0,...0,0, 1 ,0 ,0,0,0}
提前感谢您的帮助!