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

我是NLP新手,目前正在构建一个特定领域的NLP系统。在我的文档上训练了word2vec和fasttext模型后,我发现嵌入效果不太好,因为我没有提供足够数量的文档(例如,嵌入无法识别“bar”和“pub”之间有很强的相关性,因为“pub”在文档中只出现了几次)。后来,我在网上找到一个基于该特定领域语料库构建的word2vec模型,其嵌入效果显然更好(因此“pub”与“bar”更加相关)。有什么方法可以使用我找到的模型来改进我的词嵌入吗?谢谢!


回答:

Word2Vec(及其类似模型)确实需要大量多样的数据来创建强有力的向量。

但同样,模型的向量通常只有在与同一会话中一起训练的其他向量一起时才有意义。这是因为该过程包括一些随机性,并且向量只有通过与所有其他向量和模型训练中的其他方面进行拉锯战,才能获得有用的位置。

因此,像“bar”这样的词并没有标准的位置——只是在某个模型中,根据训练数据和模型参数以及模型中共存的其他词,有一个好的位置。

这意味着将来自不同模型的向量混合起来是非 trivial 的。有方法可以学习一种“翻译”,将向量从一个模型的空间移动到另一个模型的空间——但这本身就像重新训练一样。你可以用来自别处的向量预初始化一个模型……但是一旦训练开始,你的训练语料库中的所有词都会开始漂移到最适合该数据的位置,并且逐渐远离它们原来的位置,远离与那些未被更新的其他词的纯可比性。

在我看来,最好的方法通常是用更合适的数据扩展你的语料库,以便它对你重要的每个词都有“足够”的例子,并且在足够多样的上下文中。

许多人使用像维基百科文章这样的大型免费文本转储来进行词向量训练,但要注意其写作风格——干燥的、权威的参考文本——可能并不适合所有领域。如果你的问题领域是“商业评论”,你最好找到其他评论文本。如果是小说故事,那就找更多的虚构作品。以此类推。你可以将这些其他文本来源与你的数据混合在一起,以扩展词汇覆盖范围。

你还可以潜在地混入额外重复的本地数据示例,如果你希望它有效地具有相对更多的影响。(一般来说,仅仅重复少量非多样化的示例无法帮助改善词向量:是不同示例的微妙对比有助于改善。但作为一种逐渐提升某些示例影响的方法,当总体上有大量示例时,这样做可能更有意义。)

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中创建了一个多类分类项目。该项目可以对…

发表回复

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