在nlp任务中,计算机不会直接处理文本信息,而是需要先将句子转化为矩阵进行处理。通常,先将句子划分为单词,每个单词用一个固定维数的向量表示(比如300),而句子的维数也会固定为一个常值(max_len),并进行补齐。
词嵌入矩阵就是将单词从one-shot形式转化为固定维数的向量时所需的转换矩阵。
英文单词的oneshot
形式可由tokenizer.word_index
直接获得,它是一个字典,内容如下:
'the':1 'to':2 'and':3 .....
而词向量可以从各种预训练文件获得:
其中的内容类似:
词嵌入矩阵可以看作词向量依据对应单词的重排列。
获取词嵌入矩阵的示例代码如下:
num_words=len(word_index)+1
embedding_matrix=np.zeros((num_words,100))
for word,i in tqdm(word_index.items()):
if i > num_words:
continue
emb_vec=embedding_dict.get(word)
if emb_vec is not None:
embedding_matrix[i]=emb_vec
上面的num_words
加1是因为单词编号是从1开始的。