【问题标题】:Merging a word embedding trained on a specialized topic to pre trained word embeddings将在特定主题上训练的词嵌入合并到预训练的词嵌入
【发布时间】:2017-11-02 03:33:10
【问题描述】:

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

Glove (200d) 有 400 万个术语,其中大约 10% 也在我自己的嵌入(也是 200d)中找到。我想知道创建一个将向量从 Glove 空间映射到我自己的嵌入空间的神经网络是否会有所帮助,而不是像连接两者这样简单的东西(这会导致很多 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)

结果很差,不知道是因为方法不正确还是模型没有调好。

【问题讨论】:

    标签: keras word2vec


    【解决方案1】:

    未一起训练的词向量集彼此之间没有本质关系——距离和方向只能在相关约束下开发的向量集内解释。 (作为一个简单的例子:如果你要取一组词向量并否定它们的所有坐标,每个集合在寻找相关词或解决类比等方面都同样擅长。但是词之间的距离/方向在备用集合中几乎没有意义。)

    在两者之间设计一个映射转换是一个合理的想法,这在 Word2Vec 的一篇原始论文(“Exploiting Similarities between Languages for Machine Translation”)和“Skip-Thought Vectors”论文第 2.2 节(“词汇扩展”)。

    在这些情况下,学习了线性变换矩阵 - 而不是您的代码摘录似乎暗示的多层映射。

    用于处理单词向量的gensim 库最近在TranslationMatrix 类中添加了用于学习和应用此类转换的工具。使用 10% 的词汇重叠,它可能适合您的目的。

    【讨论】:

      猜你喜欢
      • 2019-12-30
      • 1970-01-01
      • 2019-07-11
      • 2016-06-20
      • 2019-03-02
      • 2019-10-27
      • 2019-07-17
      • 1970-01-01
      相关资源
      最近更新 更多