Đồ án tốt nghiệp Công nghệ thông tin: 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

66 5 0
Đồ án tốt nghiệp Công nghệ thông tin: 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

Đ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

Đồ án 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 trình bày những nội dung về: mô hình BERT trình bày về mô hình BERT và các khái niệm liên quan; mô hình PhoBERT trình bày về các tìm hiểu cho mô hình PhoBERT; ứng dụng Pho oBERT cho bài toán phân loại bình luận tiếng Việt trong đó... Đề tài Hoàn thiện công tác quản trị nhân sự tại Công ty TNHH Mộc Khải Tuyên được nghiên cứu nhằm giúp công ty TNHH Mộc Khải Tuyên làm rõ được thực trạng công tác quản trị nhân sự trong công ty như thế nào từ đó đề ra các giải pháp giúp công ty hoàn thiện công tác quản trị nhân sự tốt hơn trong thời gian tới.

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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca Sinh viên : Nguyễn Thành Long e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 Lớp : CT2101C 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 Giảng Viên Hướng Dẫn: Ths.Nguyễn Thị Xuân Hương 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 Hải Phòng – 2021 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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 TOÁ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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b Sinh Viên : Nguyễn Thành Long f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b Lớp : CT2101C Giảng Viên Hướng Dẫn : Ths.Nguyễn Thị Xuân Hương 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e Sinh viên: Nguyễn Thành Long Mã SV : 1712111008 e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 Lớp : CT2101C 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc Ngành : Công nghệ thông tin c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 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 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b bình luận tiếng Việt f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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 sĩ Cơ quan công tác : Trường Đại học Quản lý 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 luậ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 Đã nhận nhiệm vụ ĐTTN Đã giao nhiệm vụ ĐTTN 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e Giảng viên hướng dẫn Sinh viên e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b Hải Phòng, ngày tháng năm 2021 fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b TRƯỞNG KHOA f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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ọ 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ý Cơng nghệ Hải Phịng Họ 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 Đạt Không đạt Điểm:…………………… Hải Phòng, ngày tháng 10 năm 2021 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 Giảng viên hướng dẫn (Ký ghi rõ họ tên) df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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ọ 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ý Cơng nghệ Phịng Họ tên sinh viên: Ngũn Thành Long Hải Ngành: Công nghệ thông tin Đề 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ế 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 Ý kiến giảng viên chấm phản biện fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b Được bảo vệ Không bảo vệ Điểm:…………………… fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b Hải Phòng, ngày tháng 10 năm 2021 f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 Giảng viên chấm phản biện 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b (Ký ghi rõ họ tên) 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 MỤC LỤC MỤC LỤC 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 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b 1.3.10 Mơ hình ngơn ngữ đánh dấu MLM (Masked Language Model) 12 1.4 Ngữ cảnh (Contextual) vai trò NLP 13 1.5 Tiếp cận nông 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 encoder-decoder attention ( phương pháp transformer ) 18 1.7 Mô hình BERT 20 dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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 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 ḷn 50 3.3.5 Tách dữ liệu thành tập train validation theo tỉ lệ 90:10 51 3.3.6 Tạo mask gồm 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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ý Cơng nghệ Hải Phịng, 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 thầy, cô Khoa Công nghệ thông tin, Trường Đại học Quản lý 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 tinh thần giúp em có thể thể hồ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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc Nguyễn Thành Long c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 Ví dụ bình luận tiêu cực: “ quá thất vọng”, “sản phẩm quá đắt mà chất lượng bình thường” 3.2.2 Công cụ và môi trường thực nghiệm: ❖ Công cụ Ngôn ngữ lập trình Python Python Guido van Rossum phát triển vào cuối những năm tám mươi và đầu những năm chín mươi tại Viện nghiên cứu quốc gia về toán học khoa học máy tính Hà Lan Python ngôn ngữ lập trình hướng đối tượng, cấp cao, mạnh mẽ, tạo Guido van Rossum Nó dễ dàng để tìm hiểu và lên những ngơn ngữ lập trình nhập mơn tốt cho người lần đầu tiếp xúc với ngôn ngữ lập trình Python hồn tồn tạo kiểu động sử dụng chế cấp phát nhớ tự động Python có cấu trúc dữ liệu cấp cao mạnh mẽ cách tiếp cận đơn giản hiệu đối với lập trình hướng đối tượng Cú pháp lệnh của Python là điểm cộng vơ lớn sự rõ ràng, dễ hiểu cách gõ linh động làm cho nhanh chóng trở thành ngơn ngữ lý tưởng để viết script phát triển ứng dụng nhiều lĩnh vực, hầu hết nền tảng Tính chính của Python : 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a • • • Ngơn ngữ lập trình đơn giản, dễ học: Python có cú pháp đơn giản, rõ ràng Nó dễ đọc viết nhiều so sánh với những ngôn ngữ lập trình khác C++, Java, C# Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào những giải pháp khơng phải cú pháp Miễn phí, mã nguồn mở: Bạn có thể tự sử dụng phân phối Python, thậm chí dùng cho mục đích thương mại Vì mã nguồn mở, bạn khơng những có thể sử dụng phần mềm, chương trình viết Python mà cịn có thể thay đổi mã nguồn của Python có cộng đồng rộng lớn, khơng ngừng cải thiện lần cập nhật Khả di chuyển: Các chương trình Python có thể di chuyển từ nền tảng sang nền tảng khác chạy mà khơng có thay đổi Nó chạy liền mạch hầu hết tất nền tảng Windows, macOS, Linux 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 46 • Khả mở rộng có thể nhúng: Giả sử ứng dụng đòi hỏi sự phức tạp lớn, bạn có thể dễ dàng kết hợp phần code C, C++ những ngơn ngữ khác (có thể gọi từ C) vào code Python Điều cung cấp cho ứng dụng của bạn những tính tốt khả scripting mà những ngơn ngữ lập trình khác khó có thể làm • Ngơn ngữ thơng dịch cấp cao: Không giống C/C++, với Python, bạn lo lắng những nhiệm vụ khó khăn quản lý nhớ, dọn dẹp những dữ liệu vô nghĩa, Khi chạy code Python, tự động chuyển đổi code sang ngơn ngữ máy tính có thể hiểu Bạn không cần lo lắng về hoạt động cấp thấp • • Thư viện tiêu chuẩn lớn để giải nhiệm vụ phổ biến: Python có số lượng lớn thư viện tiêu chuẩn giúp cho cơng việc lập trình của bạn trở nên dễ thở nhiều, đơn giản khơng phải tự viết tất code Ví dụ: Bạn cần kết nối sở dữ liệu MySQL Web server? Bạn có thể nhập thư viện MySQLdb sử dụng Những thư viện này kiểm tra kỹ lưỡng và sử dụng hàng trăm người Vì vậy, bạn có thể chắn khơng làm hỏng code hay ứng dụng của Hướng đối tượng: Mọi thứ Python đều là hướng đối tượng Lập trình hướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp cách trực quan Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ cách tạo các đối tượng 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b Thư viện mã nguồn mở Tensorflow f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b Tensorflow thư viện mã nguồn mở cung cấp khả xử lí tính tốn số học dựa biểu đồ mô tả sự thay đổi của dữ liệu, node phép tính tốn học cạnh biểu thị luồng dữ liệu Trong tesorflow có vài khái niệm sau dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b Tensor cấu trúc dữ liệu tensorflow đại diện cho tất loại dữ liệu Nói cách khác, tất kiểu dữ liệu đưa vào tensorflow thì đều gọi Tensor Vậy nên có thể hiểu Tensorflow thư viện mơ tả, điều chỉnh dịng chảy của Tensor Tensor có thuộc tính rank, shape type: fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e Rank số bậc của tensor Ví dụ Tensor = [1] có rank = 1, Tensor = [[3,4],[5,6]] có rank = Việc phân rank quan trọng vì đồng thời giúp phân loại dữ liệu của Tensor Khi các rank đặc biệt cụ thể, Tensor có những tên gọi riêng sau: 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 47 • Scalar: Khi Tensor có rank • Véc tơ: Véc tơ 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 NTensor • Shape 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 elements Tensor Vì Tensor có thuộc tính Type nên từ suy là có kiểu Type cho tồn elements có Tensor tại Thư viện Transformers : Là project của huggingface hỗ trợ huấn luyện model dựa kiến trúc transformer BERT, GPT-2, RoBERTa, XLM, DistilBert, XLNet, T5, CTRL,… phục vụ cho tác vụ xử lý ngôn ngữ tự nhiên nền tảng pytorch tensorflow Thư viện fastBPE : Là package hỗ trợ tokenize từ (word) thành từ phụ (subwords) theo phương pháp mới áp dụng cho 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ợ nghiên cứu dự án liên 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 quan đến model seq2seq 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b Thư viện VnCoreNLP : Là package xử lý ngôn ngữ tự nhiên Tiếng Việt, hỗ trợ tokenize tác vụ xử lý ngôn ngữ khác f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca PhoBERT huấn luyện trước e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b ❖ Môi trường thực nghiệm: fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b - 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 f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 3.3 Các bước thực 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 48 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/ 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a Để 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: 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca 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') e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e text = "Đại học Bách Khoa Hà Nội." 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 word_segmented_text = rdrsegmenter.tokenize(text) print(word_segmented_text) 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 49 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) 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e # Load the dictionary vocab = Dictionary() e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 vocab.add_from_file("/content/drive/My 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b Drive/BERT/SA/PhoBERT_base_transformers/dict.txt") 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca 3.3.4 Tải liệu thi Phân tích sắc thái bình luận e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 Ta tiến hành đọc dữ liệu và dữ liệu test 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 import re 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 train_path = '/content/drive/My Drive/BERT/SA/train.crash' test_path = '/content/drive/My Drive/BERT/SA/test.crash' df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e train_id, train_text, train_label = [], [], [] test_id, test_text = [], [] 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 with open(train_path, 'r') as f_r: data = f_r.read().strip() 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 50 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 = text text text splits[0] = ' '.join(splits[1:])[1:-1] = rdrsegmenter.tokenize(text) = ' '.join([' '.join(x) for x in text]) 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a test_id.append(id) 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 test_text.append(text) 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc 3.3.5 Tách liệu thành tập train validation theo tỉ lệ 90:10 c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 from sklearn.model_selection import train_test_split 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 train_sents, val_sents, train_labels, val_labels = train_test_split(train_text, train_labels, test_size=0.1) 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 Sử dụng bpe load để đưa text đầu vào dưới dạng subword ánh xạ subword về dạng index từ điển 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 from tensorflow.keras.preprocessing.sequence import pad_sequences MAX_LEN = 125 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a train_ids = [] 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 51 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] 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a val_masks.append(mask) 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc Sử dụng DataLoader của torch để tạo dataloader c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 from torch.utils.data import TensorDataset, DataLoader, RandomSampler, SequentialSampler import torch 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 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) df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 train_data = TensorDataset(train_inputs, train_masks, train_labels) train_sampler = SequentialSampler(train_data) 52 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e 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} ] e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 optimizer = AdamW(optimizer_grouped_parameters, lr=1e-5, correct_bias=False) 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e for epoch_i in range(0, epochs): print('======== Epoch {:} / {:} ========'.format(epoch_i + 1, epochs)) print('Training ') 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 total_loss = BERT_SA.train() 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 53 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() 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 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)) 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 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): fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b batch = tuple(t.to(device) for t in batch) 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 b_input_ids, b_input_mask, b_labels = batch 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 with torch.no_grad(): outputs = BERT_SA(b_input_ids, 54 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 55 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 56 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 cô 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 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 thầy và các bạn để đồ án của em trở lên hoàn thiện 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 57 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 visualaided 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 58 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 59 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 bidirectional 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 6f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 6e0cf7 b60da 52f6cf66 b5ff294 1e747 e e1b11a9 32da b860 f81 b6f9bdc32 ecac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f8 932dab860 f81b6f9 bdc32e cac7776e 0cf7b6 0da5 2f6 cf66b5ff2 941e 747e6 f87e 1b1 1a 860f8 1b6 f9bdc32eca c77 76e0 cf7 b60 da52 f6cf66 b5ff29 41e74 7e6f87e1 b11a9 32da b f81b6f9 bdc32e cac7 776e0 cf7b6 0da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b86 6f9bdc3 2eca c77 76e0 cf7 b60 da52 f6cf66 b5ff294 1e74 7e6f87e1 b11a9 32dab860 f81 b dc32e cac7776 e0cf7b60da5 2f6 cf66b5ff2941e 747e 6f87 e1b1 1a932 dab8 60f81b6 f9 b 32eca c7776 e0cf7 b60da 52f6cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc c7776 e0cf7b60da 52f6 cf66b5ff2941 e747e 6f8 7e1b11a932 dab8 60f81b6 f9 bdc32e ca e0cf7b60 da52 f6 cf6 6b5ff2 941e7 47e6 f87e 1b11a 932da b860 f81 b6 f9bdc3 2eca c777 fc3a3 f93a 08582 6d66a 60f835 d2406 ea15 f7e7 b88cbf5e9cb78 cc9e16 d1072 e24 c3ee4 7d0800 c6a8 0136 f54 da448 1c2 b397 7f6 f33 e0be 8a4b3 d678 cc5b77 828 cc3 7ae38 f66a4 9c84a7 1dc1cb825a 4f1 d7c732fb9a4 e5765 f83 10c1984 f96 1e06 cf3 fc71f185b5ad74 b fac7b7b2 0dfcfdcdf1 cf4 2b2 fc6 b5a c1e9 c4a51ae fef5b7 de7f4b3 cc9e5d780d33d5 94 9e3f2 1bf4656 147e4 1c5 63d1 76a97 9e946 6be8 9c63 c0e 2907 0df0e654 8e28 c32 c6 f8f7 7ea8e433 c9 f051 8c9 06b9a 684d9d02 5cb598 854db148 3a8024 9bc348 7e1be 4646 2d7a b f21d145b5b08 b8e1 f8 c76 f42 b4ce 759fb93 c48 e7f8a41e7 8571e 64a2 f48b0e5 c8d4 bb8 df3 fa34df8 f2c9de ba5dcb1e e30bc7d67cb1d4163 72d9 47cdab0 1c5 76b2 b2efb3 c49a2 08d258 539 bc6 96d5a 3b1a4 c49 7180 bae30 dc4 4793a3 dc5d19 4ad09 3cb5c3f9 9f2 02398 30ff2d29 b07 f39 d69e d7d2 e358bfca d25b40c5434 0e68a b4ee2 b76e0 b2a8 65300 be6e 95f4 fcb5fd1f4 934 f29e7 ee6d7cfa 31ddc0 5b49 f94 3c1 e22 f3b5 c0e4a d46 2e7c96fc5b 3f9 f11 c9f0 8a6db91a1 7118e 3de6 3e7a02 f9 c1d19137 7d0a7a 34d40ff5b8 453 f6f4e0e 59e15a9 f853 8397 40b3 e9ac33e6fc51 7d8 b739 3a5076 c67 d16e 7cc03df1 b1f0b9 fc0 46 3a67e368 0a4d3d50 cf8d5 f476 8201 e328 cbbba50 c741 ebd4f6 b2e1 0316e d218 e1d2 918 0d4204 90efb3ab05fb73 c76 f04 f402 4609 30bbbd8c70 8725 e74dc8 cf9a 5b23 c6 ce52 6d 5a2ffad28c03f5ddc8 b5b1 9f6 5a9a4 f8ff22e 5e28b515a6 e2baff25 e0185 e7457 d94 b3 6e74e1a5 eb8e 6a6629 e94dc3 b8533 4599 8a334 c325 5d17 f25 1a9f0fc09d15d4 76fc381 14dd4 024 c2f27f32d2 1896e 863 d2798 93b4 5fb87d4d3 b709a d32bf1 f855 3822 14eb1 0a 4a2b893 e6f264e6 3adfe30c144aa d9ad6 d154a 23f6b2 be48 d55b74c3677 f31a2 6752 77 60

Ngày đăng: 25/12/2023, 00:05

Tài liệu cùng người dùng

Tài liệu liên quan