何时使用不同的 Word2Vec 训练方法?

数据挖掘 Python 张量流 word2vec 词嵌入 gensim
2021-10-06 02:09:49

所以我是第一次学习 Word2Vec,我的问题很基本:如何知道使用什么方法?即,Tensorflow 中的 Word2Vec还是使用 Gensim 训练的 Word2Vec

在什么情况下通过更手动的第一种方法来实现它比第二种方法有用?如果已经有一种更简单的方法来使用 gensim 训练 word2vec 模型,那为什么不总是使用呢?

此外,使用像谷歌新闻数据集这样的预训练模型有什么好处当新闻数据集中没有包含单词时会发生什么?

对不起,如果这个问题是基本的,我只是想更清楚地了解整体情况。

2个回答

使用预训练向量的优势在于能够从比您可能访问的更大的语料库中注入知识:word2vec的词汇表包含 300 万个单词和短语,这些单词和短语是在包含约 1000 亿个标记的谷歌新闻数据集上训练的,并且没有培训时间的成本。

此外,它们快速且易于使用,只需加载嵌入并查找它们。替换不同的预训练向量集(fastTextGloVe等)很简单,因为其中一个可能更适合特定用例。

但是,当您的词汇表在 word2vec 中没有条目时,默认情况下,您最终会在嵌入层中得到一个空条目(取决于您如何处理它)。您需要考虑规模/影响以及如何解决它(保留/放弃/考虑在线培训)。正如雅智所说,必须决定如何处理词汇外的单词。

从您自己的语料库中学习词向量的优势在于它们可以从您的数据集中派生,因此如果您有理由相信您的数据的组成与用于预训练向量的语料库有很大不同,那么这可能会导致在更好的下游性能。然而,这是以训练您自己的向量表示所花费的时间为代价的。

Tensorflow 有一组机器学习算法的实现,所以如果你的应用程序需要在 word2vec 之上构建一些东西,它应该会很舒服。Gensim 主要用于主题建模技术,但作为其主要工作非常强大。

如果您想清楚地了解算法的工作原理,那么手动实现是有意义的。否则,只需使用其中一种实现即可。

谷歌 word2vec 模型相当不错,涵盖了大部分英文单词。如果您没有计算能力或时间来训练模型,请使用它。手动训练让您可以自由选择特定领域的数据集、窗口大小、cbow 或 sg、向量长度。如果有 Out of words (OOV) 单词,它会抛出一个错误。