Keras 将专门主题上训练的单词嵌入合并到预先训练的单词嵌入

Keras 将专门主题上训练的单词嵌入合并到预先训练的单词嵌入,keras,word2vec,Keras,Word2vec,我有两个单词嵌入。一只经过训练的手套和一只我接受过医学相关文件培训的手套。预训练向量包含更多的单词,但我的单词向量对医学术语有更好的表示。我要融合两组嵌入 手套(200d)有400万个术语,其中大约10%也在我自己的嵌入(也是200d)中找到。我想知道,创建一个神经网络,将一个向量从手套空间映射到我自己的嵌入空间,是否会有所帮助,而不是像将两者连接起来这样简单的事情(这将导致大量的0)。特别是: from keras.models import Sequential from keras.lay

我有两个单词嵌入。一只经过训练的手套和一只我接受过医学相关文件培训的手套。预训练向量包含更多的单词,但我的单词向量对医学术语有更好的表示。我要融合两组嵌入

手套(200d)有400万个术语,其中大约10%也在我自己的嵌入(也是200d)中找到。我想知道,创建一个神经网络,将一个向量从手套空间映射到我自己的嵌入空间,是否会有所帮助,而不是像将两者连接起来这样简单的事情(这将导致大量的0)。特别是:

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%的词汇重叠,这可能适合你的目的