以 word2vec 中的CBOW模型为例
CBOW模型原理通过训练上游任务达到训练embedding的效果。
我们可以通过 代码示例, 和 数据流的 shape 的变化把握该模型究竟如何工作的。
上游任务 通过句子中的上下文 预测中心词。
首先对数据进行预处理;
#Create windows
# 将向量压平 变成一个一维列表
flatten = lambda outer_list: [item for inner_list in outer_list for item in inner_list]
# 句子结构: windows_size target_word window_size
windows = flatten([list(nltk.ngrams([MASK_TOKEN]*args.window_size + sentence.split(' ') + \
[MASK_TOKEN] * args.window_size, args.window_size * 2 + 1)) \
for sentence in tqdm(cleaned_sentences)])
# Create cbow dat