训练词嵌入时进行二次采样

问题描述 投票:0回答:1

NLP 新手,有一个关于词嵌入的问题。作为学习练习,我正在尝试训练自己的基于 word2vec 的一组词嵌入。我已经下载并清理了一个英语句子语料库,我想我对训练应该如何进行有很好的了解,但有些东西我仍然不太明白。

正如人们可能想象的那样,语料库包含更多常见单词的实例,例如“the”、“and”等。词频分布是一个相当极端的幂律,这是有道理的。我的问题是:当我生成样本来训练单词嵌入时,处理这个问题的最佳实践是什么?

我可以看到一些选项:

  1. 当我生成训练样本时,根据数据集中输入标记的频率进行某种概率采样。我的新手直觉是,这有一定道理,但我不是 100% 确定采样应该如何工作。
  2. 有一定概率,从词汇表中完全删除最常见的单词,并且根本不学习它们的嵌入。我在网上看到了一些指南(以及在原始的 word2vec 论文中),建议这样做,并在查找嵌入时将它们视为 OOV 标记,但感觉……很奇怪。毕竟,我确实想要嵌入“the”这个词,即使它出现得非常频繁。
  3. 只要坚持下去并接受这样一个事实,即我将为“the”一词提供比“pernickety”一词更多的训练样本。这将使训练周期花费更长的时间。

有人可以在这里给我一些指导吗?人们通常如何应对这种不平衡?

pytorch nlp word-embedding torchtext
1个回答
0
投票

我想我找到了答案,但我不是 100% 确定(因为我对这件事还很陌生)。请大家不吝指正。

我认为我最初的问题是基于对原始word2vec论文的误解:我不认为你应该从词汇表中完全删除常用单词,我认为你应该忽略它们当你'重新生成训练对(在我的例子中,是skipgrams)。这些单词保留在词汇表中,但是当您以某种概率制作训练数据时,您(咳咳)会跳过它们。

所以答案(根据论文)是选项 1。

© www.soinside.com 2019 - 2024. All rights reserved.