nlp之詞向量轉換

# 分詞器,僅保留數據中前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就是訓練集和測試集的詞袋以及總數據的詞向量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章