【问题标题】:How to combine two pre-trained Word2Vec models?如何结合两个预训练的 Word2Vec 模型?
【发布时间】:2018-09-02 05:15:24
【问题描述】:

我成功地遵循了关于 Word2Vec 的 deeplearning4j.org 教程,因此我能够加载已经训练的模型或基于一些原始文本训练一个新模型(更具体地说,我使用的是 GoogleNews-vectors-negative300Emoji2Vec 预训练模型)。

但是,我想将上述两个模型结合起来,原因如下:有一个句子(例如,来自 Instagram 或 Twitter 的评论,由 emoji 组成),我想识别句子中的 emoji,然后将其映射到与之相关的单词。为了做到这一点,我打算遍历句子中的所有单词并计算接近度(表情符号和单词在向量空间中的距离)。

found the code 如何提升现有模型。但是,提到在这种情况下不会添加新单词,并且只会根据新的文本语料库更新现有单词的权重。

对于我遇到的问题,如果有任何帮助或想法,我将不胜感激。提前致谢!

【问题讨论】:

  • 欢迎加入 gitter 上的 DL4J 开发支持社区:gitter.im/deeplearning4j/deeplearning4j
  • 谢谢!我加入了 Gitter 社区,然而,还没有人能回答我的问题。也许我需要重组它。

标签: java nlp emoji word2vec deeplearning4j


【解决方案1】:

在我最熟悉的 word2vec 库中,结合使用不同语料库训练的两个模型并不是一项简单且受支持的操作。

特别是,即使同一个词出现在两个语料库中,即使在相似的上下文中,该算法在初始化和训练期间使用的随机化,以及多线程训练注入的额外随机化,也意味着该词可能出现在完全不同的地方地方。只有相对于其他词的相对距离/方向应该大致相似,而不是特定的坐标/旋转。

因此,要合并两个模型,需要将一个坐标转换为另一个。这本身通常涉及从一个空间到另一个空间的学习投影,然后将独特的单词从源空间移动到幸存空间。我不知道 DL4J 是否为此内置了例程; Python gensim 库在最近的版本中有一个 TranslationMatrix 示例类,它可以做到这一点,其动机是使用词向量进行语言到语言的翻译。

【讨论】:

  • 有道理。谢谢!
  • 取决于向量已经有多大。如果它们仍然足够兼容,则可以轻松地将每个单词的两个空间的向量连接起来,并根据连接的向量执行相似性或操作,即如果模型 1 的词嵌入大小为 300,模型 2 的嵌入大小为 200 ,那么组合模型将只是每个单词的连接,并且每个单词的嵌入大小为 300+200。
猜你喜欢
  • 2015-08-09
  • 1970-01-01
  • 2017-06-26
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-12
相关资源
最近更新 更多