# 分词器,仅保留数据中前10000个最常见的单词作为特征,低频单词将被舍弃
tokenizer = text.Tokenizer(num_words=max_features)
tokenizer.fit_on_texts(list(X_train) + list(X_test))
# 将评论数据的单词转换成速数形式,如:[1,0,3,,2,0]
X_train = tokenizer.texts_to_sequences(X_train)
X_test = tokenizer.texts_to_sequences(X_test)
# 统一长度,长度为200
X_train = sequence.pad_sequences(X_train, maxlen=maxlen)
X_test = sequence.pad_sequences(X_test, maxlen=maxlen)
# word_index是一个将单词映射为整数索引的字典(word,int)
word_index = tokenizer.word_index
# 之前我们是要保留数据中前10000个最常见的单词作为特征,但也有可能存在数据中所有的单词总量都不到10000个,所以之前我们要判断特征数是多少
num_words = min(max_features, len(word_index))
# 创建一个零矩阵,矩阵大小为(单词数,300),300是因为所用到的预训练词向量的张量就是300
embedding_matrix = np.zeros((num_words, embed_size))
# 从预训练词向量中获取单词对应的词向量,并保存在上面创建的零矩阵中
for word, i in word_index.items():
# 当num_words = max_features时,说明len(word_index) > max_features,即len(word_index) > num_words,此时的i会超出len(embedding_matrix),所以需要continue
if i >= max_features:continue
embedding_vector = embeddings_index.get(word) # 获取单词的词向量
if embedding_vector is not None: # 判断预训练的词向量中是否存在该单词的词向量
embedding_matrix[i] = embedding_vector# 以矩阵的索引作为单词的索引,并保存词向量
# X_train,X_test,embedding_matrix就是训练集和测试集的词袋以及总数据的词向量。
nlp之词向量转换
最新推荐文章于 2024-02-28 01:08:57 发布