使用另一个建立在更大语料库上的模型添加词汇并改进词嵌入

Adding vocabulary and improve word embedding with another model that was built on bigger corpus

我是 NLP 新手。我目前正在特定领域构建 NLP 系统。在我的文档上训练 word2vec 和 fasttext 模型后,我发现嵌入不是很好,因为我没有提供足够数量的文档(例如,嵌入看不到 "bar" 和 "pub"彼此之间有很强的相关性,因为 "pub" 在文档中只出现了几个)。后来,我在网上找到了一个建立在特定领域语料库上的 word2vec 模型,它肯定有更好的嵌入方式(所以 "pub" 与 "bar" 更相关)。有什么方法可以使用我找到的模型来改进我的词嵌入吗?谢谢!

Word2Vec(和类似)模型确实需要大量不同的数据来创建强大的向量。

而且,模型的向量通常仅与在同一会话中一起训练的其他向量一起才有意义。这既是因为该过程包含一些随机性,并且向量仅通过 war 与所有其他向量和训练模型的方面的拔河来获得它们的有用位置。

因此,像 'bar' 这样的词没有标准位置 - 只是在特定模型中的一个好位置,给定训练数据和模型参数以及共同填充模型的其他词。

这意味着混合来自不同模型的向量是非常重要的。有一些方法可以学习将向量从一个模型的 space 移动到另一个模型的 'translation'——但这本身很像重新训练。您可以使用来自其他地方的向量预初始化模型……但是一旦训练开始,训练语料库中的所有单词都会开始漂移到该数据的最佳对齐方式,并逐渐远离它们的原始位置,并远离与未更新的其他词的纯粹可比性。

在我看来,最好的方法通常是使用更合适的数据来扩展您的语料库,这样它就有 "enough" 个对您来说很重要的单词的示例,在充分不同的上下文中。

许多人使用大型自由文本转储(如维基百科文章)进行词向量训练,但war它的写作风格——枯燥、权威的参考文本——可能并非对所有领域都是最佳的。如果您的问题区域是 "business reviews",您可能最好找到其他评论文本。如果是虚构的故事,更多的是虚构的写作。等等。您可以将这些其他文本源与您的数据混在一起,以扩大词汇范围。

您还可以在 extra 中混入您自己本地数据的重复示例,如果您想让它有效地产生相对更大的影响。 (一般来说,仅仅重复少量不变的例子并不能帮助提高词向量:不同例子的微妙对比会有所帮助。但是作为一种逐步提升某些例子影响力的方法,当有很多总体而言,它可以更有意义。)