单词 ngrams 的最大长度与上下文窗口大小之间的差异

Aki*_*gun 1 python nlp fasttext

在用于训练监督模型的python https://github.com/facebookresearch/fastText/tree/master/python的 fasttext 库的描述中,有不同的参数,其中包括:

  • ws:上下文窗口的大小
  • wordNgrams: 单词 ngram 的最大长度。

如果我理解正确,他们两个都有责任考虑到单词周围的单词,但是它们之间的明显区别是什么?

Anw*_*vic 12

首先,我们使用train_unsupervisedAPI 创建Word-Representation Model。我们可以使用两种技术,skipgramcbow。另一方面,我们使用train_supervisedAPI 来创建文本分类模型。你问的是train_supervisedAPI,所以我会坚持下去。

文本分类在 fasttext 中的工作方式是首先默认使用 skipgram 表示单词。然后,使用从 skipgram 模型中学习到的这些词向量对输入文本进行分类。您询问的两个参数 (wswordNgrams) 与 skipgram/cbow 模型有关。

下图包含了我们如何使用输入文本来训练 skipgram 模型的简化说明。在这里,我们将ws参数定义为 2 和wordNgrams1。

在此处输入图片说明

如我们所见,我们的训练数据中只有一个文本,即The quick brown fox jumps over the lazy dog. 我们将上下文窗口定义为两个,这意味着我们将创建一个窗口,其中心为center word并且窗口内的下一个/前两个单词为target words。然后,我们一次移动这个窗口一个字。窗口大小越大,模型的训练样本越多,在给定小数据样本的情况下,模型越过拟合。

那是我们的第一个论点ws。根据第二个参数wordNgrams,如果我们设置wordNgrams为 2,它将考虑如下图所示的双词对。(ws下图中的为简单起见)

在此处输入图片说明

参考

  • 检查此链接,其中包含该train_supervised方法的源代码。

  • skipgram 和 cbow 之间的主要区别可以总结为下图:

skipgram 与 cbow

  • 多谢!一个令人惊奇的解释。 (2认同)