pytorch_word2vec icon indicating copy to clipboard operation
pytorch_word2vec copied to clipboard

构建训练数据时,上下文词选择问题

Open IrvingBei opened this issue 7 years ago • 0 comments

您好,在学习您的代码时发现以下代码似乎有点小问题,

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

IrvingBei avatar Jan 10 '19 12:01 IrvingBei