【问题标题】:Adding additional words in word2vec or Glove (maybe using gensim)在 word2vec 或 Glove 中添加额外的单词(可能使用 gensim)
【发布时间】:2019-01-07 04:26:14
【问题描述】:

我有两个预训练的词嵌入:Glove.840b.300.txtcustom_glove.300.txt

一个是斯坦福预训练的,另一个是我训练的。 两者都有不同的词汇集。为了减少oov,我想将file1中没有出现但确实出现在file2中的单词添加到file1中。 我如何轻松做到这一点?

这就是我在 gensim 3.4.0 中加载和保存文件的方式。

from gensim.models.keyedvectors import KeyedVectors

model = KeyedVectors.load_word2vec_format('path/to/thefile')
model.save_word2vec_format('path/to/GoogleNews-vectors-negative300.txt', binary=False)

【问题讨论】:

    标签: nlp gensim word2vec glove


    【解决方案1】:

    我不知道简单的方法。

    特别是,没有一起共同训练的词向量不会有兼容/可比较的坐标空间。 (一个词没有一个合适的位置——与同一模型中的其他词相比,它只是一个相对较好的位置。)

    因此,您不能只是从另一个模型中附加缺失的单词:您需要将它们转换为兼容的位置。幸运的是,使用两个词向量集中都存在的一些共享锚词集来学习转换似乎是有效的——然后应用你想要移动的词。

    在 gensim 中有一个类 [TranslationMatrix][1]demo notebook 展示了语言翻译的这个过程(原始 word2vec 论文中提到的一个应用程序)。您可以使用它,结合append extra vectors to a gensim KeyedVectors 实例的功能,使用您的任一源模型中的单词的超集创建一组新的向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-11
      • 1970-01-01
      • 2017-09-21
      • 1970-01-01
      • 2016-06-06
      • 1970-01-01
      • 2019-07-02
      相关资源
      最近更新 更多