【发布时间】:2020-12-24 03:06:43
【问题描述】:
在为 CBOW 构建训练数据时,Mikolov et al. 建议使用上下文窗口中心的单词。在句子的开头/结尾捕获单词的“最佳”方法是什么(我把最好的放在引号中,因为我确信这取决于任务)。我在网上看到的实现是这样的:
for i in range(2, len(raw_text) - 2):
context = [raw_text[i - 2], raw_text[i - 1],
raw_text[i + 1], raw_text[i + 2]]
我发现这种方法会产生两个问题。
- 问题 1: 该方法将不平衡的焦点放在句子的中间。例如,句子的第一个词只能出现在 1 个上下文窗口中,并且永远不会作为目标词出现。将此与句子中的第 4 个单词进行比较,该单词将出现在 4 个上下文窗口中,并且也是目标词。这将是一个问题,因为某些单词经常出现在句子的开头(即然而,因此等)。这种方法不会尽量减少它们的使用吗?
- 问题2:完全忽略4个或更少单词的句子,将短句的重要性降到最低。例如,一个 5 个单词的句子只能贡献一个训练样本,而一个长度为 8 的句子将贡献 4 个训练样本。
谁能提供关于这些问题对结果的影响程度或构建训练数据的任何替代方法的见解? (我考虑让第一个词作为目标词,并使用接下来的 N 个词作为上下文,但这会产生它自己的问题)。
关于 Stack Exchange 的相关问题: Construct word2vec (CBOW) training data from beginning of sentence
【问题讨论】:
标签: neural-network nlp text-mining word2vec word-embedding