Machine learning 如何使用经过训练的模型创建模型?

Machine learning 如何使用经过训练的模型创建模型?,machine-learning,nlp,deep-learning,gensim,word2vec,Machine Learning,Nlp,Deep Learning,Gensim,Word2vec,我使用gensim word2vec创建了两个模型。现在我想合并这两个模型,以得到这两个模型的并集 例如: 1.模型一有以下词汇 2.模型2有以下词汇表 现在我想使用这两个模型并创建一个新模型,该模型将具有以下词汇表 {"Hi", "Hello", "World", "King", "Human"} word2vec模型将为您提供单词的矢量表示(在词汇表中)。向量表示使得向量之间的距离对于相似的词(语义上)是最小的 您有两个在两个不同语料库上训练的模型(因此您有两个不同的词汇表)。要将

我使用gensim word2vec创建了两个模型。现在我想合并这两个模型,以得到这两个模型的并集

例如:

    1.模型一有以下词汇
    2.模型2有以下词汇表
现在我想使用这两个模型并创建一个新模型,该模型将具有以下词汇表

{"Hi", "Hello", "World", "King", "Human"}

word2vec模型将为您提供单词的矢量表示(在词汇表中)。向量表示使得向量之间的距离对于相似的词(语义上)是最小的

您有两个在两个不同语料库上训练的模型(因此您有两个不同的词汇表)。要将两个模型结合为一个模型,就必须失去代表性力量(即相似的词以向量形式彼此接近)


唯一的方法是获取两个语料库,附加它们并训练一个新的word2vec模型

通用word2vec库,如gensim,不提供用于合并模型的工具。从本质上讲,a模型中的单词坐标仅在距离和方向上与同一模型中的其他单词具有可比性——只有通过将经过增量训练的单词组合在一起,它们才能被推到有意义的相对位置

正如@mujiga的回答所表明的,最直接的方法是将包含所有所需单词的两个训练小体组合起来,并在组合文本上训练一个新模型。(理想情况下,您可以将两个小体混洗在一起,而不是简单地将它们串联起来,这样就不会有单词出现在整个文本集的开头或结尾。)

当有很多重叠的单词时,可以采用更复杂的方法。你可以从两个“空格”中选择一个作为你想要保留的坐标系——可能是一个包含更多单词的,经过更多文本的训练。称之为“参考”模型

您将获取两个模型之间共享的大量单词(可能全部),并学习“翻译”操作,该操作将较小模型中这些单词的坐标投影到参考模型中这些相同单词的大致正确位置。(这本身就是一个典型的数学优化问题。)最后,您可以对非共享单词使用该转换操作,将较小模型的坐标转换为参考模型坐标空间,然后构建一个新的数据结构,其中包括所有原始参考向量,以及转换后的向量

这是用于机器翻译的技术。在中还提到,当本地语料库中没有出现来自其他来源的单词时,它是一种利用这些单词的方法。gensim目前(2017年8月)有一个新版本,但尚未完全测试/记录,也未成为任何正式版本的一部分


但事实上:安全而简单的方法是在一个公共语料库上训练一个新模型

创建合并模型的一种方法是使用在线Word2vec扩展一个经过培训的模型。假设您训练有素的word2vec模型的词汇表中有以下单词:

{“你好”,“你好”,“世界”}

现在在模型中加入新单词

model.build\u vocab(新句子,update=True)
模型训练(新句子)

使用
model.Save(model\u name)
保存模型并加载以进一步训练

{"Hi", "King", "Hello", "Human"}
{"Hi", "Hello", "World", "King", "Human"}