代码之家  ›  专栏  ›  技术社区  ›  aerin

在word2vec或Glove中添加额外的单词(可能使用gensim)

  •  0
  • aerin  · 技术社区  · 8 年前

    我有两个预先准备好的单词嵌入: Glove.840b.300.txt custom_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)
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   gojomo    7 年前

    我不知道 容易的 太好了。

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

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

    有一节课, [TranslationMatrix][1] ,和 demo notebook 在gensim中显示了语言翻译的这个过程(在最初的word2vec文件中提到的一个应用程序)。你可以很好地利用这个,再加上 append extra vectors to a gensim KeyedVectors 例如,创建一组新向量,其中包含任一源模型中单词的超集。

    推荐文章