Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras
David Cecchini
Data Scientist
Ưu điểm:
one_hot = np.array((N, 100000))
embedd = np.array((N, 300))
king - man + woman = queenNhược điểm:
Trong keras:
from tensorflow.keras.layers import Embeddingmodel = Sequential() # Dùng làm lớp đầu tiên model.add(Embedding(input_dim=100000,output_dim=300,trainable=True,embeddings_initializer=None,input_length=120))
Học chuyển giao cho mô hình ngôn ngữ
Trong keras:
from tensorflow.keras.initializers import Constantmodel.add(Embedding(input_dim=vocabulary_size, output_dim=embedding_dim,embeddings_initializer=Constant(pre_trained_vectors))
Trang chính: https://nlp.stanford.edu/projects/glove/
# Lấy các vector GloVE def get_glove_vectors(filename="glove.6B.300d.txt"): # Lấy tất cả vector từ mô hình tiền huấn luyện glove_vector_dict = {} with open(filename) as f: for line in f:values = line.split()word = values[0] coefs = values[1:]glove_vector_dict[word] = np.asarray(coefs, dtype='float32')return glove_vector_dict
# Lọc vector GloVE cho tác vụ cụ thể def filter_glove(vocabulary_dict, glove_dict, wordvec_dim=300):# Tạo ma trận lưu vector embedding_matrix = np.zeros((len(vocabulary_dict) + 1, wordvec_dim))for word, i in vocabulary_dict.items(): embedding_vector = glove_dict.get(word)if embedding_vector is not None: # từ không có trong glove_dict sẽ là vector 0 embedding_matrix[i] = embedding_vectorreturn embedding_matrix
Mạng nơ-ron hồi quy (RNN) cho Mô hình ngôn ngữ với Keras