pytorch_word2vec
pytorch_word2vec copied to clipboard
构建训练数据时,上下文词选择问题
您好,在学习您的代码时发现以下代码似乎有点小问题,
for i, u in enumerate(word_ids):
for j, v in enumerate(word_ids[max(i - window_size, 0):i + window_size]):
assert u < self.word_count
assert v < self.word_count
if i == j:
continue
这里的i和j都是从下标零开始的,因此不能保证后面的i==j时,它们所指向的词就是中心词本身。此外,在word2vec源码中,有一个操作是生成一个随机数,然后利用这个数对窗口进行缩减,于是我将您的代码修改成了下面这样,不知道这样是否正确?
for i, u in enumerate(word_ids):
b = np.random.randint(0, window_size)
a1=max(i-window_size+b,0)
an=i+window_size+1-b
num_index=range(a1,an,1)
# 依次获取窗口左边和窗口右边的词语
for j, v in zip(num_index,word_ids[a1:an]):
# 判断这些id号是否超过词汇表的最大长度
assert u < self.word_count
assert v < self.word_count
if i == j:
continue