You are on page 1of 3

Mẫu: 1a_ĐTTL

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP ĐỀ THI CUỐI KỲ


THÀNH PHỐ HỒ CHÍ MINH
Môn thi :Xử lý ngôn ngữ tự nhiên
KHOA CÔNG NGHỆ THÔNG TIN Lớp/Lớp học phần: DHKHMT 14
Ngày thi: 08/06/2021.
Thời gian làm bài: 60 phút
(Không kể thời gian phát đề)

Họ và tên thí sinh ………………….…………………; MSSV: ………………

Câu 1: (3.0 điểm).


Cho một cell GRU có công thức tổng quát như sau hình a) và mô hình mạng như hình b).

a) b)
Trong đó  là hàm sigmoid xt có là vector có chiều dài là dx , ht là vector có chiều dài
là dh. Wi(z), Ui(z), Wi(r), Ui(r), Wi, và Ui là các ma trận trọng số ở lớp i, trong đó ht có chiều
i

dài vector là dh .
a. Anh/chị viết công thức tính đó h2t dựa theo hình a).
~2
ht =( z t ∘h t−1 + ( 1−z t ) ∘ ht )
2

b. Anh/chị hãy tính kích thước của ma trận W2(z), U2(z), W2(r), U2(r), W2, và U2.
x t có độ dài là d x ( x t shape :1∗d x )  W có shape là d x∗1
Câu 2: (3.0 điểm)
Cho bài toán phân loại văn bản với 8 lớp. Tập dữ liệu đã được tiền xử lý. Kích thước từ điển
được tạo ra từ tập dữ liệu là 92547 từ. Cho chiều dài câu dài nhất là 100. Anh/chị hãy:

a. Viết đoạn code sử dụng kỹ thuật word embedding để tạo với kích thước vector từ là
100.
Embedding(input_dim=92547, output_dim = 100,input_length = 100)

b. Viết đoạn code xây dựng kiến trúc mô hình bao gồm 2 lớp tích chập với 128 kernel,
kích thước (5x5), hàm kích hoạt Relu ,1 lớp LSTM gồm 128 cell và 1 lớp GRU gồm
64 cell.
model = Sequential()
model.add(Embedding(92547,100, 100))
model.add(Conv1D(filters=2, kernel_size=128, activation='relu', in
put_shape=(5, 5)))
model.add(LSTM(128, return_sequences=True))
model.add(GRU(64))
model.add(Dense(8, activation='softmax'))
Mẫu: 1a_ĐTTL
model.summary()

Câu 3: (4.0 điểm)


Cho bài toán trả lời câu hỏi cho tiếng Việt. Tập dữ liệu bao gồm 92549 câu hỏi và câu trả lời.
Tập dữ liệu đã được tiền xử lý. Anh/chị hãy:
a. Viết đoạn codel xây dựng từ điển cho bài toán.

word2id = dict() #từ điển


max_words = 0 #Độ dài câu dài nhất
for sentences in input_sentences:
  for word in sentences:
    if word not in word2id:
      word2id[word] = len(word2id)
id2word = {v: k for k, v in word2id.items()}

b. Giả sử kích thước từ điển được tạo ra là 6749 từ. Chiều dài dài nhất của câu hỏi là 50
từ, Chiều dài dài nhất của câu trả lời là 100 từ. Sử dụng word embedding với kích
thước chiều dài từ là 300. Anh/chị hãy viết đoạn code xây dựng mô hình sequence-to -
sequence cho mô hình trên với encoder có 2 lớp LSTM gồm 128 cell, decoder có 1 lớp
BiLSTM có 64 cell.
class Decoder(tf.keras.Layer):
    def __init__(self):
        super().__init__()
        self.bi_lstm = tf.keras.layers.Bidirectional(tf.keras.laye
rs.LSTM(64, return_sequences = True), merge_mode='concat')

    def call(self, emb, enc_output):
        x = self.bi_lstm(emb)
        x = tf.concat([x, enc_output], axis=1)
        return x

class Encoder(tf.keras.Layer):
    def __init__(self):
        super().__init__()
        self.lstm_1 = tf.keras.layers.LSTM(128, return_sequences=T
rue)
        self.lstm_2 = tf.keras.layers.LSTM(128, return_sequences=T
rue)

    def call(self, emb):
        x = self.lstm_1(emb)
        x = self.lstm_2(x)
        return x
        
class Seq2seq(tf.keras.Model):
    def __init__(self):
        super().__int__()
        self.ebedding = tf.keras.layers.Embedding(6749, 300)
        self.encoder = Encoder()
        self.decoder = Decoder()
        self.flatten = tf.keras.layers.Flatten()
        self.fc = tf.keras.layers.Dense(6749, activation = 'softma
x')
    def call(self, x, y):
Mẫu: 1a_ĐTTL
        x = self.embedding(x)
        y = self.embedding(y)
        enc_output = self.encoder(x)
        dec_output = self.flatten(y, enc_output)
        out = self.flatten(dec_output)
        out = self.fc(out)
        return out

------------------------- Hết ------------------------------

Lưu ý: - Cán bộ coi thi không giải thích gì thêm.

You might also like