如何使用已训练的模型创建新模型?

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

例如:

    1. 第一个模型的词汇如下
{"Hi", "Hello", "World"}
    2. 第二个模型的词汇如下
{"Hi", "King", "Hello", "Human"}

现在我想使用这两个模型创建一个新模型,其词汇如下

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

回答:

常见的word2vec库,如gensim,并不提供合并模型的功能。从本质上讲,模型内单词的坐标只能与同模型内的其他单词在距离和方向上进行比较——只有通过一起进行增量训练,它们才能被推动到有意义的相对位置。

最直接的方法是,如@隐藏人名所建议的,将包含所有所需词汇的两个训练语料库合并,并在合并后的文本上训练一个新模型。(理想情况下,你应该将两个语料库混合在一起,而不是简单地连接它们,这样可以避免某些词汇只出现在完整文本集的开始或结束部分。)

当有大量重叠的词汇时,可以采用更复杂的方法。你可以选择其中一个“空间”作为你希望保留的坐标系统——可能是那个包含更多词汇、基于更多文本训练的模型。称之为“参考”模型。

你可以选择大量(可能是所有)在两个模型中共享的词汇,并学习一个“翻译”操作,将这些词汇在较小模型中的坐标投影到参考模型中这些词汇的相应位置。(这本身通常是一个数学优化问题。)最后,你可以将该翻译操作应用于非共享词汇,将较小模型的坐标转换到参考模型的坐标空间中——然后构建一个新的数据结构,包括所有原始的参考向量以及翻译后的向量。

这是最初的word2vec论文之一用于机器翻译的技术。它也在skip-thoughts论文的第2.2节中提到,作为在本地语料中没有出现时利用来自其他来源的词汇的方法。目前(2017年8月)gensim中正在进行一些工作以添加学习翻译的功能,但它尚未完全测试/记录或成为任何正式版本的一部分。

但实际上:安全且直接的做法是,在一个共同的语料库上训练一个新模型。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注