序列预处理
maxlen:None或整数,为序列的最大长度。大于此长度的序列将被截短,小于此长度的序列将在后部填0.
dtype:返回的numpy array的数据类型
padding:‘pre’或‘post’,确定当需要补0时,在序列的起始还是结尾补
truncating:‘pre’或‘post’,确定当需要截断序列时,从起始还是结尾截断
value:浮点数,此值将在填充时代替默认的填充值0
返回形如(nb_samples,nb_timesteps)
的2D张量
skipgrams将一个词向量下标的序列转化为下面的一对tuple:
对于正样本,转化为(word,word in the same window)
【Tips】根据维基百科,n-gram代表在给定序列中产生连续的n项,当序列句子时,每项就是单词,此时n-gram也称为shingles。而skip-gram的推广,skip-gram产生的n项子序列中,各个项在原序列中不连续,而是跳了k个字。例如,对于句子:
“the rain in Spain falls mainly on the plain”
其 2-grams为子序列集合:
the rain,rain in,in Spain,Spain falls,falls mainly,mainly on,on the,the plain
其 1-skip-2-grams为子序列集合:
the in, rain Spain, in falls, Spain mainly, falls on, mainly the, on plain.
更多详情请参考Efficient Estimation of Word Representations in Vector Space
sequence:下标的列表,如果使用sampling_tabel,则某个词的下标应该为它在数据库中的顺序。(从1开始)
negative_samples:大于0的浮点数,等于0代表没有负样本,等于1代表负样本与正样本数目相同,以此类推(即负样本的数目是正样本的倍)
shuffle:布尔值,确定是否随机打乱样本
categorical:布尔值,确定是否要使得返回的标签具有确定类别
sampling_table:形如
(vocabulary_size,)
的numpy array,其中sampling_table[i]
代表没有负样本或随机负样本。等于1为与正样本的数目相同采样到该下标为i的单词的概率(假定该单词是数据库中第i常见的单词)
函数的输出是一个(couples,labels)
的元组,其中:
couples
是一个长为2的整数列表:[word_index,other_word_index]
labels
是一个仅由0和1构成的列表,1代表other_word_index
在的窗口,0代表other_word_index
是词典里的随机单词。如果设置
categorical
为True
,则标签将以one-hot的方式给出,即1变为[0,1],0变为[1,0]
该函数用以产生skipgrams
中所需要的参数sampling_table
。这是一个长为size
的向量,sampling_table[i]
代表采样到数据集中第i常见的词的概率(为平衡期起见,对于越经常出现的词,要以越低的概率采到它)
sampling_factor:此值越低,则代表采样时更缓慢的概率衰减(即常用的词会被以更低的概率被采到),如果设置为1,则代表不进行下采样,即所有样本被采样到的概率都是1。