1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Tìm hiểu mô hình ngôn ngữ phobert cho bài toán phân loại quan điểm bình luận tiếng việt

68 64 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ CƠNG NGHỆ HẢI PHỊNG - ĐỒ ÁN TỐT NGHIỆP NGÀNH: CÔNG NGHỆ THÔNG TIN Sinh viên : Nguyễn Thành Long Lớp : CT2101C Giảng Viên Hướng Dẫn: Ths.Nguyễn Thị Xuân Hương Hải Phòng – 2021 TIEU LUAN MOI download : skknchat123@gmail.com BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ CÔNG NGHỆ HẢI PHÒNG - TÌM HIỂU VỀ MƠ HÌNH NGƠN NGƯ PHOBERT CHO BÀI TỐN PHÂN LOẠI QUAN ĐIỂM BÌNH LUẬN TIẾNG VIỆT ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY NGÀNH: CƠNG NGHỆ THÔNG TIN Sinh Viên : Nguyễn Thành Long Lớp : CT2101C Giảng Viên Hướng Dẫn : Ths.Nguyễn Thị Xuân Hương TIEU LUAN MOI download : skknchat123@gmail.com BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC QUẢN LÝ VÀ CÔNG NGHỆ HẢI PHÒNG NHIỆM VỤ ĐỀ TÀI TỐT NGHIỆP Sinh viên: Nguyễn Thành Long Lớp : CT2101C Ngành : Công nghệ thơng tin Mã SV : 1712111008 Tên đề tài: Tìm hiểu mơ hình ngơn ngữ PhoBert cho bài toán phân loại quan điểm bình luận tiếng Việt TIEU LUAN MOI download : skknchat123@gmail.com CÁN BỘ HƯỚNG DẪN ĐỀ TÀI TỐT NGHIỆP Họ tên : Nguy ễn Thị Xuân Hương Học hàm, học vị : Thạc si Cơ quan công tác : Trường Đại học Quản lý và Công nghệ Hải Phòng Nội dung hướng dẫn: + Tìm hiểu về mơ hình ngơn ngữ PhoBert + Tìm hiểu về bài toán phân tích quan điểm người dùng, phân loại quan điểm bình ḷn Tiếng Việt + Tìm hiểu về ngơn ngữ lập trình Python Đề tài tốt nghiệp giao ngày 16 tháng 07 năm 2021 Yêu cầu phải hoàn thành xong trước ngày 03 tháng 10 năm 2021 Đã giao nhiệm vụ ĐTTN Đã nhận nhiệm vụ ĐTTN Giảng viên hướng dẫn Sinh viên Hải Phòng, ngày tháng năm 2021 TRƯỞNG KHOA TIEU LUAN MOI download : skknchat123@gmail.com CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN TỐT NGHIỆP Họ và tên giảng viên: Nguyễn Thị Xuân Hương Đơn vị công tác: Khoa Công nghệ thông tin, Trường Đại học Quản lý và Công nghệ Hải Phòng Họ và tên sinh viên: Nguyễn Thành Long Ngành: Công nghệ thông tin Nội dung hướng dẫn: + Tìm hiểu về mơ hình ngơn ngữ PhoBert + Tìm hiểu về bài toán phân tích quan điểm người dùng, phân loại quan điểm bình luận Tiếng Việt + Tìm hiểu về ngơn ngữ lập trình Python Tinh thần thái độ sinh viên trình làm đề tài tốt nghiệp ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Đánh giá chất lượng đồ án/khóa luận (so với nội dung yêu cầu đề nhiệm vụ Đ.T T.N mặt lý luận, thực tiễn, tính tốn số liệu…) ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… ……………………………………………………………………………………………… Ý kiến giảng viên hướng dẫn tốt nghiệp Điểm:…………………… Khơng đạt Đạt Hải Phịng, ngày tháng 10 năm 2021 Giảng viên hướng dẫn (Ký ghi rõ họ tên) TIEU LUAN MOI download : skknchat123@gmail.com CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN CHẤM PHẢN BIỆN Họ và tên giảng viên: Đỗ Văn Chiểu Đơn vị công tác: Khoa Công nghệ thông tin, Trường Đại học Quản lý và Công nghệ Phòng Họ và tên sinh viên: Nguyễn Thành Long Ngành: Công nghệ thơng tin Hải Đề tài tốt nghiệp: Tìm hiểu mơ hình ngơn ngữ PhoBert cho bài toán phân loại quan điểm bình luận Tiếng Việt Phần nhận xét giảng viên chấm phản biện Những mặt hạn chế Ý kiến giảng viên chấm phản biện Được bảo vệ Không bảo vệ Hải Phòng, ngày tháng 10 năm 2021 Giảng viên chấm phản biện (Ký ghi rõ họ tên) TIEU LUAN MOI download : skknchat123@gmail.com MỤC LỤC MỤC LỤC .1 LỜI CẢM ƠN MỞ ĐẦU DANH MỤC CÁC HÌNH VẼ VÀ CÁC BẢNG BẢNG CÁC TỪ VIẾT TẮT CHƯƠNG MÔ HÌNH BERT .9 1.1 Khái niệm 1.2 Tại lại cần BERT 10 1.3 Một số khái niệm 10 1.3.1 Nhiệm vụ phía sau (Downstream task) 10 1.3.2 Điểm khái quát đánh giá mức độ hiểu ngôn ngữ (GLUE score benchmark) 11 1.3.3 Phân tích cảm xúc (Sentiment Analysis) 11 1.3.4 Hỏi đáp (Question and Answering) 11 1.3.5 Suy luận ngôn ngữ (Natural Language Inference) 11 1.3.6 Quan hệ văn (Textual Entailment) 11 1.3.7 Ngữ cảnh (Contextual) 12 1.3.8 Phương pháp Hiện đại (SOTA) 12 1.3.9 Mơ hình LTR 12 1.3.10 Mô hình ngơn ngữ đánh dấu MLM (Masked Language Model) .12 1.4 Ngữ cảnh (Contextual) và vai trò NLP 13 1.5 Tiếp cận nông và học sâu ứng dụng huấn luyện trước (pre-training) NLP 14 1.5.1 Tiếp cận nông (shallow approach) 14 1.5.2 Học sâu (deep-learning) 15 1.6 Phương pháp TRANSFORMER 16 1.6.1 Encoder và Decoder BERT 16 1.6.2 Các tiến trình self-attention và encoder-decoder attention ( phương pháp transformer ) 18 1.7 Mơ hình BERT 20 TIEU LUAN MOI download : skknchat123@gmail.com 1.7.1 Mô hình BERT tinh chỉnh (Fine-tuning model BERT) 20 1.8 Cách huấn luyện BERT 22 1.8.1 Mơ hình ngơ ngữ đánh dấu (Masked Language Model) 22 1.8.2 Next Sentence Prediction (NSP) 24 1.9 Các kiến trúc mơ hình BERT 26 1.10 RoBerta 27 1.10.1 Khái niệm RoBerta 27 1.10.2 Dữ liệu 27 1.10.3 Extract fearture từ RoBerta 31 1.10.4 Điền từ ( Filling Mask ) 32 1.10.5 Trích suất đặc trưng ( Extract feature ) cho từ 32 CHƯƠNG PHOBERT 33 2.1 Sự đời của PhoBERT 33 2.2 Cấu trúc của PhoBERT 33 2.2.1 Dữ liệu trước huấn luyện 36 2.2.2 Tối ưu hóa 36 2.2.3 Thiết lập thử nghiệm 37 2.2.4 Kết thực nghiệm 38 2.2.5 Kết luận 41 2.3 Ứng dụng của PhoBert 41 CHƯƠNG ỨNG DỤNG PHOBERT VÀO BÀI TOÁN PHÂN TÍCH QUAN ĐIỂM BÌNH LUẬN TIẾNG VIỆT 42 3.1 Phát biểu bài toán 42 3.2 Dữ liệu và Công cụ, môi trường thực nghiệm: 45 3.2.1 Dữ liệu 45 3.2.2 Công cụ và môi trường thực nghiệm: 46 ❖ Công cụ 46 Ngơn ngữ lập trình Python 46 Thư viện mã nguồn mở Tensorflow 47 Thư viện Transformers 48 Thư viện fastBPE 48 Thư viện fairseq 48 Thư viện VnCoreNLP 48 TIEU LUAN MOI download : skknchat123@gmail.com PhoBERT huấn luyện trước 48 ❖ Môi trường thực nghiệm: 48 3.3 Các bước thực 48 3.3.1 Cài đặt các thư viện cần thiết 49 3.3.2 Cài đặt thư viện vncorenlp 49 3.3.3 Tải về dữ liệu huấn luyện từ trang chủ thi của AIVIVN và pre-trained của PhoBERT 50 3.3.4 Tải về dữ liệu của thi Phân tích sắc thái bình luận .50 3.3.5 Tách dữ liệu thành tập train và validation theo tỉ lệ 90:10 .51 3.3.6 Tạo mask gồm các giá trị 0, để làm đầu vào cho thư viện transformers 52 3.3.7 Huấn luyện mơ hình 53 KẾT LUẬN 57 TÀI LIỆU THAM KHẢO 58 TIEU LUAN MOI download : skknchat123@gmail.com LỜI CẢM ƠN Lời cho em gửi lời cảm ơn sâu sắc đến gia đình, người thân của em động viên, giúp đỡ, cổ vũ, tạo cho em thêm động lực để em có thể hoàn thành đồ án thời gian giao Em xin gửi lời cảm ơn đến Ban Giám Hiệu Trường Đại học Quản lý và Công nghệ Hải Phòng, các Ban, Ngành hỗ trợ hết mức tạo điều kiện tốt để em có thể đăng kí đồ án tốt nghiệp Em xin cảm ơn đến các thầy, các cô Khoa Công nghệ thông tin, Trường Đại học Quản lý và Cơng nghệ Hải Phòng, giúp em có những kiến thức cực kì bổ ích vòng năm vừa qua, giúp em có nền tảng kiến thức vững để em có thẻ thực đồ án Em xin gửi lời cảm ơn chân thành đến cô Ths Nguyễn Thị Xuân Hương, dành nhiều thời gian công sức, về vật chất và tinh thần giúp em có thể thể hoàn thành đồ án cách trơn tru Em xin chân thành cảm ơn! Hải Phòng, ngày tháng năm 2021 Sinh viên Nguyễn Thành Long TIEU LUAN MOI download : skknchat123@gmail.com • Scalar: Khi Tensor có rank • Véc tơ: Véc tơ là Tensor rank • Matrix: Đây là Tensor rank hay mảng hai chiều theo khái niệm của Python • N-Tensor: Khi rank của Tensor tăng lên lớn 2, chúng gọi chung là NTensor • Shape là chiều của tensor Vi dụ Tensor = [[[1,1,1], [178,62,74]]] có Shape = (1,2,3), Tensor = [[1,1,1], [178,62,74]] có Shape = (2,3) Type kiểu dữ liệu của các elements Tensor Vì Tensor có thuộc tính Type nên từ suy là có kiểu Type cho toàn các elements có Tensor tại Thư viện Transformers : Là project của huggingface hỗ trợ huấn luyện các model dựa kiến trúc transformer BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet, T5, CTRL,… phục vụ cho các tác vụ xử lý ngôn ngữ tự nhiên nền tảng pytorch và tensorflow Thư viện fastBPE : Là package hỗ trợ tokenize từ (word) thành các từ phụ (subwords) theo phương pháp mới áp dụng cho các pretrain model xử lý ngôn ngữ tự nhiên đại BERT và các biến thể của BERT Thư viện fairseq : Là project của facebook chuyên hỗ trợ các nghiên cứu và dự án liên quan đến model seq2seq Thư viện VnCoreNLP : Là package xử lý ngôn ngữ tự nhiên Tiếng Việt, hỗ trợ tokenize và các tác vụ xử lý ngôn ngữ khác PhoBERT huấn luyện trước ❖ Môi trường thực nghiệm: - Máy tính Chip: Intel(R) Dual Core I5(R) @ 4300U, Ram: 16.00 GB - Hệ điều hành Ubuntu 20.04 - Công cụ lập trình: Python 3.9 3.3 Các bước thực 48 TIEU LUAN MOI download : skknchat123@gmail.com 3.3.1 Cài đặt thư viện cần thiết pip install transformers pip install fastBPE pip install fairseq 3.3.2 Cài đặt thư viện vncorenlp # Install the vncorenlp python wrapper pip install vncorenlp # Download VnCoreNLP-1.1.1.jar & its word segmentation component (i.e RDRSegmenter) mkdir -p vncorenlp/models/wordsegmenter wget https://raw.githubusercontent.com/vncorenlp/VnCoreNLP/master/VnCoreNLP1.1.1.jar wget https://raw.githubusercontent.com/vncorenlp/VnCoreNLP/master/models/wordsegmenter /vi-vocab wget https://raw.githubusercontent.com/vncorenlp/VnCoreNLP/master/models/wordsegmenter /wordsegmenter.rdr mv VnCoreNLP-1.1.1.jar vncorenlp/ mv vi-vocab vncorenlp/models/wordsegmenter/ mv wordsegmenter.rdr vncorenlp/models/wordsegmenter/ Để chắn cài đặt vncorenlp thành cơng , ta có thể sử dụng để tách từ câu đơn giản theo cách dưới đây: from vncorenlp import VnCoreNLP rdrsegmenter = VnCoreNLP("/Absolute-path-to/vncorenlp/VnCoreNLP-1.1.1.jar", annotators="wseg", max_heap_size='-Xmx500m') # rdrsegmenter = VnCoreNLP("/content/drive/My Drive/BERT/SA/vncorenlp/VnCoreNLP-1.1.1.jar", annotators="wseg", max_heap_size='-Xmx500m') text = "Đại học Bách Khoa Hà Nội." word_segmented_text = rdrsegmenter.tokenize(text) print(word_segmented_text) 49 TIEU LUAN MOI download : skknchat123@gmail.com Kết thu là: [['Đại_học', 'Bách_Khoa', 'Hà_Nội', '.']] 3.3.3 Tải liệu huấn luyện từ trang chủ thi AIVIVN pre-trained PhoBERT wget https://public.vinai.io/PhoBERT_base_transformers.tar.gz tar -xzvf PhoBERT_base_transformers.tar.gz Sau ta load model và bpe : from fairseq.data.encoders.fastbpe import fastBPE from fairseq.data import Dictionary import argparse parser = argparse.ArgumentParser() parser.add_argument(' bpe-codes', default="/content/drive/My Drive/BERT/SA/PhoBERT_base_transformers/bpe.codes", required=False, type=str, help='path to fastBPE BPE' ) args, unknown = parser.parse_known_args() bpe = fastBPE(args) # Load the dictionary vocab = Dictionary() vocab.add_from_file("/content/drive/My Drive/BERT/SA/PhoBERT_base_transformers/dict.txt") 3.3.4 Tải liệu thi Phân tích sắc thái bình luận Ta tiến hành đọc dữ liệu và dữ liệu test import re train_path = '/content/drive/My Drive/BERT/SA/train.crash' test_path = '/content/drive/My Drive/BERT/SA/test.crash' train_id, train_text, train_label = [], [], [] test_id, test_text = [], [] with open(train_path, 'r') as f_r: data = f_r.read().strip() 50 TIEU LUAN MOI download : skknchat123@gmail.com data = re.findall('train_[\s\S]+?\"\n[01]\n\n', data) for sample in data: splits = sample.strip().split('\n') id = splits[0] label = int(splits[-1]) text = ' '.join(splits[1:-1])[1:-1] text = rdrsegmenter.tokenize(text) text = ' '.join([' '.join(x) for x in text]) train_id.append(id) train_text.append(text) train_label.append(label) with open(test_path, 'r') as f_r: data = f_r.read().strip() data = re.findall('train_[\s\S]+?\"\n[01]\n\n', data) for sample in data: splits = sample.strip().split('\n') id = splits[0] text = ' '.join(splits[1:])[1:-1] text = rdrsegmenter.tokenize(text) text = ' '.join([' '.join(x) for x in text]) test_id.append(id) test_text.append(text) 3.3.5 Tách liệu thành tập train validation theo tỉ lệ 90:10 from sklearn.model_selection import train_test_split train_sents, val_sents, train_labels, val_labels = train_test_split(train_text, train_labels, test_size=0.1) Sử dụng bpe load để đưa text đầu vào dưới dạng subword và ánh xạ các subword này về dạng index từ điển from tensorflow.keras.preprocessing.sequence import pad_sequences MAX_LEN = 125 train_ids = [] 51 TIEU LUAN MOI download : skknchat123@gmail.com for sent in train_sents: subwords = ' ' + bpe.encode(sent) + ' ' encoded_sent = vocab.encode_line(subwords, append_eos=True, add_if_not_exist=False).long().tolist() train_ids.append(encoded_sent) val_ids = [] for sent in val_sents: subwords = ' ' + bpe.encode(sent) + ' ' encoded_sent = vocab.encode_line(subwords, append_eos=True, add_if_not_exist=False).long().tolist() val_ids.append(encoded_sent) train_ids = pad_sequences(train_ids, maxlen=MAX_LEN, dtype="long", value=0, truncating="post", padding="post") val_ids = pad_sequences(val_ids, maxlen=MAX_LEN, dtype="long", value=0, truncating="post", padding="post") 3.3.6 Tạo mask gồm giá trị 0, để làm đầu vào cho thư viện transformers train_masks = [] for sent in train_ids: mask = [int(token_id > 0) for token_id in sent] train_masks.append(mask) val_masks = [] for sent in val_ids: mask = [int(token_id > 0) for token_id in sent] val_masks.append(mask) Sử dụng DataLoader của torch để tạo dataloader from torch.utils.data import TensorDataset, DataLoader, RandomSampler, SequentialSampler import torch train_inputs = torch.tensor(train_ids) val_inputs = torch.tensor(val_ids) train_labels = torch.tensor(train_labels) val_labels = torch.tensor(val_labels) train_masks = torch.tensor(train_masks) val_masks = torch.tensor(val_masks) train_data = TensorDataset(train_inputs, train_masks, train_labels) train_sampler = SequentialSampler(train_data) 52 TIEU LUAN MOI download : skknchat123@gmail.com train_dataloader = DataLoader(train_data, sampler=train_sampler, batch_size=32) val_data = TensorDataset(val_inputs, val_masks, val_labels) val_sampler = SequentialSampler(val_data) val_dataloader = DataLoader(val_data, sampler=val_sampler, batch_size=32) Load model PhoBert from transformers import RobertaForSequenceClassification, RobertaConfig, AdamW config = RobertaConfig.from_pretrained( "/content/drive/My Drive/BERT/SA/PhoBERT_base_transformers/config.json", from_tf=False, num_labels = 2, output_hidden_states=False, ) BERT_SA = BertForSequenceClassification.from_pretrained( "/content/drive/My Drive/BERT/SA/PhoBERT_base_transformers/model.bin", config=config ) 3.3.7 Huấn luyện mơ hình import random from tqdm import tqdm_notebook device = 'cpu' epochs = 10 param_optimizer = list(BERT_SA.named_parameters()) no_decay = ['bias', 'LayerNorm.bias', 'LayerNorm.weight'] optimizer_grouped_parameters = [ {'params': [p for n, p in param_optimizer if not any(nd in n for nd in no_decay)], 'weight_decay': 0.01}, {'params': [p for n, p in param_optimizer if any(nd in n for nd in no_decay)], 'weight_decay': 0.0} ] optimizer = AdamW(optimizer_grouped_parameters, lr=1e5, correct_bias=False) for epoch_i in range(0, epochs): print('======== Epoch {:} / {:} ========'.format(epoch_i + 1, epochs)) print('Training ') total_loss = BERT_SA.train() 53 TIEU LUAN MOI download : skknchat123@gmail.com train_accuracy = nb_train_steps = train_f1 = for step, batch in tqdm_notebook(enumerate(train_dataloader)): b_input_ids = batch[0].to(device) b_input_mask = batch[1].to(device) b_labels = batch[2].to(device) BERT_SA.zero_grad() outputs = BERT_SA(b_input_ids, token_type_ids=None, attention_mask=b_input_mask, labels=b_labels) loss = outputs[0] total_loss += loss.item() logits = outputs[1].detach().cpu().numpy() label_ids = b_labels.to('cpu').numpy() tmp_train_accuracy, tmp_train_f1 = flat_accuracy(logits, label_ids) train_accuracy += tmp_train_accuracy train_f1 += tmp_train_f1 nb_train_steps += loss.backward() torch.nn.utils.clip_grad_norm_(BERT_SA.parameters(), 1.0) optimizer.step() avg_train_loss = total_loss / len(train_dataloader) print(" Accuracy: {0:.4f}".format(train_accuracy/nb_train_steps)) print(" F1 score: {0:.4f}".format(train_f1/nb_train_steps)) print(" Average training loss: {0:.4f}".format(avg_train_loss)) print("Running Validation ") BERT_SA.eval() eval_loss, eval_accuracy = 0, nb_eval_steps, nb_eval_examples = 0, eval_f1 = for batch in tqdm_notebook(val_dataloader): batch = tuple(t.to(device) for t in batch) b_input_ids, b_input_mask, b_labels = batch with torch.no_grad(): outputs = BERT_SA(b_input_ids, 54 TIEU LUAN MOI download : skknchat123@gmail.com token_type_ids=None, attention_mask=b_input_mask) logits = outputs[0] logits = logits.detach().cpu().numpy() label_ids = b_labels.to('cpu').numpy() tmp_eval_accuracy, tmp_eval_f1 = flat_accuracy(logits, label_ids) eval_accuracy += tmp_eval_accuracy eval_f1 += tmp_eval_f1 nb_eval_steps += print(" Accuracy: {0:.4f}".format(eval_accuracy/nb_eval_steps)) print(" F1 score: {0:.4f}".format(eval_f1/nb_eval_steps)) print("Training complete!") Kết thực ======== Epoch / 10 ======== Training Accuracy: 0.8370 F1 score: 0.8262 Average training loss: 0.3511 Running Validation Accuracy: 0.9118 F1 score: 0.9087 ======== Epoch / 10 ======== Training Accuracy: 0.9071 F1 score: 0.9025 Average training loss: 0.2348 Running Validation Accuracy: 0.9167 F1 score: 0.9131 ======== Epoch / 10 ======== Training Accuracy: 0.9261 F1 score: 0.9223 Average training loss: 0.1954 Running Validation Accuracy: 0.9148 F1 score: 0.9113 ======== Epoch / 10 ======== Training Accuracy: 0.9390 F1 score: 0.9358 Average training loss: 0.1662 Running Validation 55 TIEU LUAN MOI download : skknchat123@gmail.com Accuracy: 0.9167 F1 score: 0.9138 ======== Epoch / 10 ======== Training Accuracy: 0.9510 F1 score: 0.9482 Average training loss: 0.1443 Running Validation Accuracy: 0.9148 F1 score: 0.9113 ======== Epoch / 10 ======== Training Accuracy: 0.9587 F1 score: 0.9566 Average training loss: 0.1271 Running Validation Accuracy: 0.9167 F1 score: 0.9127 ======== Epoch / 10 ======== Training Accuracy: 0.9645 F1 score: 0.9625 Average training loss: 0.1099 Running Validation Accuracy: 0.9142 F1 score: 0.9103 56 TIEU LUAN MOI download : skknchat123@gmail.com KẾT LUẬN Trong thời gian làm đồ án này, kiến thức học trường cùng với sự hướng dẫn tận tình của các thầy và bạn bè, giúp em vận dụng và hoàn thành đề tài và đồ án tốt nghiệp thời gian quy định Trong quá trình thực đề tài em học hỏi và tìm hiểu những khái niệm về xử lý ngơn ngữ tự nhiên, mơ hình ngơn ngữ BERT, PhoBer, ngơn ngữ lập trình Python, sử dụng các thư viện Tensorflow Đồ án cài đặt thử nghiệm bài toán phân tích quan điểm bình luận Tiếng Việt dựa mơ hình ngơn ngữ PHoBERT huấn luyện trước và công cụ phân loại văn Keras Dữ liệu cho bài toán thực nghiệm là các bình luận thu thập từ thi Phân tích quan điểm bình luận Tiếng Việt Bộ dữ liệu gồm 16087 câu bình luận gắn nhãn, dữ liệu đánh giá gồm 10981 câu bình luận sử dụng để đánh giá chất lượng của mơ hình học Bộ dữ liệu gồm bình luận và nhãn của bình luận Bình luận tích cực gắn nhãn 0, còn bình luận tiêu cực gắn nhãn Trong thời gian 12 tuần thực đề tài, kiến thức còn hạn hẹp, nên đồ án tốt nghiệp của em khơng thể tránh khỏi những thiếu sót, em mong nhận những đóng góp của các thầy và các bạn để đồ án của em trở lên hoàn thiện 57 TIEU LUAN MOI download : skknchat123@gmail.com TÀI LIỆU THAM KHẢO Python Machine Learning By Example by Yuxi Liu, 2017 Neural Network Embeddings Explained by Will Koehrsen, 2018 Deep Learning: Recurrent Neural Networks in Python: LSTM, GRU, and more RNN machine learning architectures in Python and Theano, 2016 Andrew Ng, Machine Learning course, 2020 https://viblo.asia/ Christopher Olah (2015), Understanding LSTM networks in Colah’s blog RoBERTa: A Robustly Optimized BERT Pretraining Approach by Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, Veselin Stoyanov Attention Is All You Need by Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N Gomez, Lukasz Kaiser, Illia Polosukhin How to Fine-Tune BERT for Text Classification? by Chi Sun, Xipeng Qiu, Yige Xu, Xuanjing Huang 10 Yiming Cui, Wanxiang Che, Ting Liu, Bing Qin, Ziqing Yang, Shijin Wang, and Guoping Hu 2019 Pre-Training with Whole Word Masking for Chinese BERT arXiv preprint, arXiv:1906.08101 11 Wietse de Vries, Andreas van Cranenburgh, Arianna Bisazza, Tommaso Caselli, Gertjan van Noord, and Malvina Nissim 2019 BERTje: A Dutch BERT Model arXiv preprint, arXiv:1912.09582 12 Byte-Pair encoding (BPE) methods (Sennrich et al., 2016; Kudo and Richardson, 2018) 13 Xuan-Son Vu, Thanh Vu, Son Tran, and Lili Jiang 2019 ETNLP: A visual- aided systematic approach to select pre-trained embeddings for a downstream task In Proceedings of RANLP, pages 1285–1294 14 Louis Martin, Benjamin Muller, Pedro Javier Ortiz Suárez, Yoann Dupont, Laurent Romary, Éric Villemonte de la Clergerie, Djamé Seddah, and Benoˆıt Sagot 2020 CamemBERT: a Tasty French Language Model In Proceedings of ACL, pages 7203– 7219 58 TIEU LUAN MOI download : skknchat123@gmail.com 15 Dat Quoc Nguyen, Dai Quoc Nguyen, Son Bao Pham, Phuong-Thai Nguyen, and Minh Le Nguyen 2014b From Treebank Conversion to Automatic Dependency Parsing for Vietnamese In Proceedings of NLDB 16 Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pier-ric Cistac, Tim Rault, R’emi Louf, Morgan Funtowicz, and Jamie Brew 2019 HuggingFace’s Transformers: State-of-theart Natural Language Processing 17 Thanh Vu, Dat Quoc Nguyen, Dai Quoc Nguyen, Mark Dras, and Mark Johnson 2018 VnCoreNLP: A Vietnamese Natural Language Processing Toolkit In Proceedings of NAACL: Demonstrations 18 Myle Ott, Sergey Edunov, Alexei Baevski, Angela Fan, Sam Gross, Nathan Ng, David Grangier, and Michael Auli 2019 fairseq: A Fast, Extensible Toolkit for Sequence Modeling In Proceedings of NAACL-HLT 2019: Demonstrations 19 Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova 2019 BERT: Pre-training of deep bidirectional transformers for language understanding In Proceedings of NAACL, pages 4171– 4186 20 Alexis Conneau and Guillaume Lample 2019 Crosslingual Language Model Pretraining In Proceedings of NeurIPS, pages 7059–7069 21 Dat Quoc Nguyen, Dai Quoc Nguyen, Thanh Vu, Mark Dras, and Mark Johnson 2018 A Fast and Accurate Vietnamese Word Segmenter In Proceedings of LREC, pages 2582–2587 22 Huyen Nguyen, Quyen Ngo, Luong Vu, Vu Tran, and Hien Nguyen 2019a VLSP Shared Task: Named Entity Recognition Journal of Computer Science and Cybernetics, 34(4):283–294 23 Thomas Wolf, Lysandre Debut, Victor Sanh, Julien Chaumond, Clement Delangue, Anthony Moi, Pierric Cistac, Tim Rault, R’emi Louf, Morgan Funtowicz, and Jamie Brew 2019 HuggingFace’s Transformers: State-of-theart Natural Language Processing arXiv preprint, arXiv:1910.03771 24 Myle Ott, Sergey Edunov, Alexei Baevski, Angela Fan, Sam Gross, Nathan Ng, David Grangier, and Michael Auli 2019 fairseq: A Fast, Extensible Toolkit for Sequence Modeling In Proceedings of NAACL-HLT 2019: Demonstrations, pages 48–53 59 TIEU LUAN MOI download : skknchat123@gmail.com 25 Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov 2019 RoBERTa: A Robustly Optimized BERT Pretraining Approach arXiv preprint, arXiv:1907.11692 26 Thanh Vu, Dat Quoc Nguyen, Dai Quoc Nguyen, Mark Dras, and Mark Johnson 2018 VnCoreNLP: A Vietnamese Natural Language Processing Toolkit In Proceedings of NAACL: Demonstrations, pages 56–60 27 Dat Quoc Nguyen, Thanh Vu, Dai Quoc Nguyen, Mark Dras, and Mark Johnson 2017 From word segmentation to POS tagging for Vietnamese In Proceedings of ALTA, pages 108–113 28 Xuezhe Ma and Eduard Hovy 2016 End-to-end sequence labeling via bi- directional LSTM-CNNsCRF In Proceedings of ACL, pages 1064–1074 29 Alexis Conneau and Guillaume Lample 2019 Crosslingual Language Model Pretraining In Proceedings of NeurIPS, pages 7059–7069 60 TIEU LUAN MOI download : skknchat123@gmail.com ... ĐẠI HỌC QUẢN LÝ VÀ CƠNG NGHỆ HẢI PHỊNG - TÌM HIỂU VỀ MƠ HÌNH NGƠN NGƯ PHOBERT CHO BÀI TỐN PHÂN LOẠI QUAN ĐIỂM BÌNH ḶN TIẾNG VIỆT ĐỒ ÁN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY NGÀNH: CÔNG... Nội dung hướng dẫn: + Tìm hiểu về mơ hình ngơn ngữ PhoBert + Tìm hiểu về bài toán phân tích quan điểm người dùng, phân loại quan điểm bình luận Tiếng Việt + Tìm hiểu về ngơn ngữ... hình PhoBert cho bài toán phân loại quan TIEU LUAN MOI download : skknchat123@gmail.com điểm bình luận Tiếng Việt ”nhằm tìm hiểu các phương pháp mới biểu diễn cho ngôn ngữ tiếng Việt

Ngày đăng: 01/08/2022, 15:33

Xem thêm:

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w