单词 ngram 的最大长度与上下文大小之间的差异 window
Difference between max length of word ngrams and size of context window
在用于 python https://github.com/facebookresearch/fastText/tree/master/python 训练监督模型的 fasttext 库的描述中有不同的论点,其中包括:
ws
:上下文的大小window
wordNgrams
: ngram 单词的最大长度。
如果我没理解错的话,两者都是负责考虑单词周围的词,但是它们之间明显的区别是什么?
首先,我们使用train_unsupervised
API创建一个Word-Representation模型。我们可以使用两种技术,skipgram and cbow。另一方面,我们使用 train_supervised
API 创建 文本分类模型 。你问的是train_supervised
API,那我就坚持吧。
文本分类在 fasttext 中的工作方式是首先默认使用 skipgram 表示单词。然后,使用从 skipgram 模型中学习到的 word-vectors 对输入文本进行分类。您询问的两个参数(ws
和 wordNgrams
)与 skipgram/cbow 模型有关。
下图包含我们如何使用输入文本训练 skipgram 模型的简化说明。在这里,我们定义 ws
参数为 2,wordNgrams
为 1。
正如我们所见,我们的训练数据中只有一个文本,即 The quick brown fox jumps over the lazy dog
。我们定义上下文window为二,也就是说我们会创建一个window,其中心是center word
,window中的next/previous两个词是target words
。然后,我们一次移动这个 window 一个单词。 window 大小越大,模型的训练样本越多,在给定少量数据样本的情况下,模型就越过度拟合。
这是我们的第一个参数 ws
。根据第二个参数 wordNgrams
,如果我们将 wordNgrams
设置为 2,它将像下图那样考虑 two-word 对。 (下图中的ws
为简单起见)
参考
检查此 link,其中包含 train_supervised
方法的源代码。
skipgram 和 cbow 之间的主要区别可以总结为下图:
在用于 python https://github.com/facebookresearch/fastText/tree/master/python 训练监督模型的 fasttext 库的描述中有不同的论点,其中包括:
ws
:上下文的大小windowwordNgrams
: ngram 单词的最大长度。
如果我没理解错的话,两者都是负责考虑单词周围的词,但是它们之间明显的区别是什么?
首先,我们使用train_unsupervised
API创建一个Word-Representation模型。我们可以使用两种技术,skipgram and cbow。另一方面,我们使用 train_supervised
API 创建 文本分类模型 。你问的是train_supervised
API,那我就坚持吧。
文本分类在 fasttext 中的工作方式是首先默认使用 skipgram 表示单词。然后,使用从 skipgram 模型中学习到的 word-vectors 对输入文本进行分类。您询问的两个参数(ws
和 wordNgrams
)与 skipgram/cbow 模型有关。
下图包含我们如何使用输入文本训练 skipgram 模型的简化说明。在这里,我们定义 ws
参数为 2,wordNgrams
为 1。
正如我们所见,我们的训练数据中只有一个文本,即 The quick brown fox jumps over the lazy dog
。我们定义上下文window为二,也就是说我们会创建一个window,其中心是center word
,window中的next/previous两个词是target words
。然后,我们一次移动这个 window 一个单词。 window 大小越大,模型的训练样本越多,在给定少量数据样本的情况下,模型就越过度拟合。
这是我们的第一个参数 ws
。根据第二个参数 wordNgrams
,如果我们将 wordNgrams
设置为 2,它将像下图那样考虑 two-word 对。 (下图中的ws
为简单起见)
参考
检查此 link,其中包含
train_supervised
方法的源代码。skipgram 和 cbow 之间的主要区别可以总结为下图: