首页 > 解决方案 > H2O Word2Vec 不一致向量

问题描述

我有一个关于特定主题的一般性问题。

我正在使用 Word2Vec 生成的向量作为特征输入到我的分布式随机森林模型中,以对一些记录进行分类。我有数百万条记录,并且每天都会收到新记录。由于有新记录进来,我希望新记录使用与以前记录相同的向量模型进行编码。这意味着“AT”这个词现在和将来都是同一个向量。我知道 Word2Vec 使用随机种子为语料库中的单词生成向量,但我想将其关闭。我需要设置种子,以便如果我今天在数据的一部分上训练模型,然后在未来再次在相同的数据上训练,我希望它为每个单词生成具有完全相同向量的相同模型。生成新模型然后进行编码的问题在于,对这些记录进行编码需要花费大量时间,除此之外,我的 DRF 分类模型不再适用,因为单词的向量已经改变。所以我必须重新训练一个新的 DRF。通常这不会是一个问题,因为我可以只训练一个模型,然后永远使用它;但是我知道一个好的做法是定期更新你的包。这对于 h2o 来说是一个问题,因为一旦您更新,就没有与在先前版本上生成的模型的向后可比性。通常这不会是一个问题,因为我可以只训练一个模型,然后永远使用它;但是我知道一个好的做法是定期更新你的包。这对于 h2o 来说是一个问题,因为一旦您更新,就没有与在先前版本上生成的模型的向后可比性。通常这不会是一个问题,因为我可以只训练一个模型,然后永远使用它;但是我知道一个好的做法是定期更新你的包。这对于 h2o 来说是一个问题,因为一旦您更新,就没有与在先前版本上生成的模型的向后可比性。

是否有任何关于如何在 Python 中为 h2o 的 Word2Vec 模型设置种子的资料?我正在使用 Python 版本 3 和 h2o 版本 3.18

标签: pythonword2vech2o

解决方案


h2o-3 中的 word2vec 使用 hogwild 实现 - 模型参数从多个线程同时更新,并且无法保证此实现中的可重复性。

你的文本语料库有多大?以模型训练速度减慢为代价,您可以通过将算法限制为仅使用单个线程(h2o 启动参数-nthread)来获得可重复的结果。


推荐阅读