Keras 将专门主题上训练的单词嵌入合并到预先训练的单词嵌入
我有两个单词嵌入。一只经过训练的手套和一只我接受过医学相关文件培训的手套。预训练向量包含更多的单词,但我的单词向量对医学术语有更好的表示。我要融合两组嵌入 手套(200d)有400万个术语,其中大约10%也在我自己的嵌入(也是200d)中找到。我想知道,创建一个神经网络,将一个向量从手套空间映射到我自己的嵌入空间,是否会有所帮助,而不是像将两者连接起来这样简单的事情(这将导致大量的0)。特别是:Keras 将专门主题上训练的单词嵌入合并到预先训练的单词嵌入,keras,word2vec,Keras,Word2vec,我有两个单词嵌入。一只经过训练的手套和一只我接受过医学相关文件培训的手套。预训练向量包含更多的单词,但我的单词向量对医学术语有更好的表示。我要融合两组嵌入 手套(200d)有400万个术语,其中大约10%也在我自己的嵌入(也是200d)中找到。我想知道,创建一个神经网络,将一个向量从手套空间映射到我自己的嵌入空间,是否会有所帮助,而不是像将两者连接起来这样简单的事情(这将导致大量的0)。特别是: from keras.models import Sequential from keras.lay
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential()
model.add(Dense(units=100, input_dim=200))
model.add(Activation('sigmoid'))
model.add(Dense(units=50))
model.add(Activation('sigmoid'))
model.add(Dense(units=100))
model.add(Activation('sigmoid'))
model.add(Dense(units=200))
model.add(Activation('linear'))
model.compile(optimizer='rmsprop',
loss='mse')
model.fit(x_train, y_train, epochs=10, batch_size=32)
结果比较差,,我想知道这是因为方法不正确还是模型没有正确调整。没有一起训练的词向量集彼此之间没有基本关系–距离和方向只能在相关约束下开发的向量集内解释。(举一个简单的例子:如果你要取一组单词向量,并对它们的坐标求反,那么每一组在查找相关单词或解决类比等方面都同样出色。但是,交替集合中单词之间的距离/方向几乎毫无意义。) 设计两者之间的映射转换是一个合理的想法,这在Word2Vec的一篇原始论文(“利用语言之间的相似性进行机器翻译”)和“跳过思维向量”论文第2.2节(“词汇扩展”)中提到 在这些情况下,将学习线性变换矩阵,而不是您的代码摘录所建议的多层映射
最近,用于处理单词向量的
gensim
库增加了一个工具,用于在类中学习和应用此类转换。有10%的词汇重叠,这可能适合你的目的 未一起训练的词向量集彼此之间没有基本关系–距离和方向只能在相关约束下开发的向量集内解释。(举一个简单的例子:如果你要取一组单词向量,并对它们的坐标求反,那么每一组在查找相关单词或解决类比等方面都同样出色。但是,交替集合中单词之间的距离/方向几乎毫无意义。)
设计两者之间的映射转换是一个合理的想法,这在Word2Vec的一篇原始论文(“利用语言之间的相似性进行机器翻译”)和“跳过思维向量”论文第2.2节(“词汇扩展”)中提到
在这些情况下,将学习线性变换矩阵,而不是您的代码摘录所建议的多层映射
最近,用于处理单词向量的gensim
库增加了一个工具,用于在类中学习和应用此类转换。有10%的词汇重叠,这可能适合你的目的