Đề tài nghiên cứu của trường đại học Budi Luhur ở Indonesia Đề tài [17] là công trình nghiên cứu phân loại khóa luận của trường đại học Budi Luhur ở Indonesia của tác giả Achmad Solichin
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HQC CONG NGHE THONG TIN
KHOA MANG MAY TINH VA TRUYEN THONG
DON KHANH DUY
NGUYEN ĐÌNH TUẦN ANH
KHOA LUAN TOT NGHIEP
UNG DUNG MAY HỌC VÀO HE THONG LƯU TRU
VA CHIA SE LUAN VAN CHO SINH VIEN UIT
Implementing machine learning in UIT theses storage and
sharing system
KY SƯ NGÀNH MẠNG MAY TINH VA TRUYEN THONG DU LIEU
TP HO CHÍ MINH, 2022
Trang 2ĐẠI HỌC QUỐC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYÈN THÔNG
ĐÔN KHÁNH DUY - 18520032
NGUYEN ĐÌNH TUAN ANH - 18520251
KHÓA LUẬN TÓT NGHIỆP
ỨNG DỤNG MÁY HỌC VÀO HỆ THÓNG LƯU TRỮ
VÀ CHIA SẺ LUẬN VĂN CHO SINH VIÊN UIT
Implementing machine learning in UIT theses storage and
sharing system
KY SƯ NGANH MẠNG MAY TINH VA TRUYEN THONG DU LIEU
GIANG VIEN HUONG DAN
TRAN TUAN DUNG
TP HO CHÍ MINH, 2022
Trang 3THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng châm khóa luận tốt nghiệp, thành lập theo Quyết định số
"——— ngày của Hiệu trưởng Trường Đại hoc Công nghệ Thông tin.
Trang 4suốt thời gian học vừa qua.
Đặc biệt, nhóm xin cảm ơn sâu sắc đến thầy ThS.Trần Tuấn Dũng, người đã tận tình hướng dẫn, giúp đỡ cũng như định hướng, góp ý và cung cấp nhiều kiến
thức cần thiết cho nhóm trong suốt thời gian thực hiện khóa luận tốt nghiệp.
Kết quả khóa luận tốt nghiệp là quá trình cố gắng và nỗ lực của nhóm, tuy
nhiên với điều kiện thời gian cũng như kinh nghiệm còn hạn chế của nhóm thì
những thiết sót là điều không thể tránh khỏi, vì vậy nhóm rất mong nhận được
những ý kiến đánh giá khách quan, những góp ý chân thành từ quý thầy cô đề từ đó
nhóm có thể rút ra những kinh nghiệm quý báu cho bản thân và hoàn thành khóa
luận tốt nghiệp với kết quả tốt nhất.
Sinh viên thực hiện
Đôn Khánh Duy
Nguyễn Đình Tuấn Anh
Trang 5MỤC LỤC
Chương 1 TONG QUAN DE TÀI 2-22 2SE2E2EE2EE2EEEEEEEEEEEEEEEEEEerrerrkervee 2
1.2 Mục tiÊU 00 S111 TT KH ng 2
1.3 Đối tượng và phạm vi nghiên CỨU -2- 2 2 22 £+££+E£+Ee£EerEeEksrxrrezreee 3
1.3.1 — Đối tượng c 2c TH E122 2112111111111 1x cree 3
1.3.2 _ Phạm vi nghiên CỨU - c3 1 3E 9 1 1 ng tre 3 1.4 Phuong pháp thực hiỆn - 52c 2213211151131 31 11111111 Ekrrrre 3
1.5 Kết quả mong đợi -:-2¿2+¿22+2EE‡EEESEEEEEE2EEE21E271 2112111 re, 4
1.6 Công trình nghiên cứu trước ỞÓ - 5 5 5+ 1k vEEeEeeerreesesserserrre 4
1.6.1 Đề tài nghiên cứu của trường đại học Budi Luhur ở Indonesia 41.6.2 Đề tài nghiên cứu của trường đại học Bumigora ở Malaysia 41.6.3 Dé tài nghiên cứu của trường đại học UIT - s52 5Chương 2 CƠ SỞ LÝ THUYÊTT -. ¿- 2 2S +E8EE+EESEEEEEEEEEEEEEEEEEEEEEErrkrrrrei 7
2.1 Machine LearnIng - - - <1 91H 7 2.2 NUP 7
2.2.1 Ngữ cảnh (Contextual) và vai trò trong NLP - «+52 9 2.2.2 Phân loại nhị phan (Binary classification) -‹++-<+<+ 10 2.2.3 Phân loại đa lớp (Multi-class classification) -‹ -«« <«+ 10 2.2.4 Phân loại đa nhãn (Multi-label classification) ‹ -« ««- 11
“SN 12
2.3.1 Masked MLL - HT Hết 14 2.3.2 Next Sentence Prediction (NSP) cccccccccccsssscccecesessseeeceeeessseeeeeees 15
Các kiến trúc model BERT cccccccccscsssssssscsscsesesvscsvsvsususscscsescsescavaes 16
Trang 62.5 RNN và LSTM LH HH TH HH HH, 17
“na 17
2.5.2 Vấn dé của RNN che 17 "ho 19
2.6 Ng6n ngtt Golang occ a 20
2.6.1 Go-Gin ÍraIm€WOTK - Gà HH HT ng Hệ 21 2.7 PostgreSQL ceccesccessecssceceseesseeesaeesseeceeessaeceseeceeecsaeessaeceseeceeeseeeesaeeeeees 22 2.8 Đi nh 23
2.8.1 Phương tiện có thể lập trình (Programmable Media) 24
2.8.2 Trình tối ưu hóa phương tiện (Media Optimizer) - 24
2.8.3 Quản lý tài sai kỹ thuật số (Digital Asset Management) 24
2.8.4 Video động (Dynamic Video) c5 3c serxeerssereerserrre 24 2.9 ElastICsearch ch HH ng Hư 25 2.9.1 _ Hiệu quả đầu tư nhanh ¿- 5¿©++2+++£x++£x+rxerxeerxesrxee 25 2.9.2 _ Hiệu năng cao HH TH Hệ 26 2.9.3 Hoạt động gần theo thời gian thực -. : :©-sc-c+cs+ecxe+ 26 2.9.4 Phát triển ứng dụng dễ dàng -:- 2 s+cz+E++E+Eerxerxerxrrseree 26 2.9.5 Công cụ và plugin bố sung - ¿+ + s+++E+E+EzEerkerxerxerseree 26 P"J x ^^ = 26
2.10.1 Khái niệm - t9 9H HH HH HH nh nh rư 26 2.10.2 Tinh năng chính - «xxx TH ng HH Hy 27 2.11 Material UÌ - 4 5 1 TH TH HH 28
2.11.1 Khai niệm - kh kg HH re 28
Trang 72.11.2 Tại sao chon Material ĨĨ? << 63 32111122 E+SEEkesseeessexe 28
3.2 Các chức năng của W€SIfC - - c1 nghệ 41
3.2.3 Luận văn - St ST SH HT H11 11 11111111111 1111111 tre 45
3.2.3.1 Hiển thị danh sách ¿©+©+++++Ext2EktEEteExrsrkerrrerkeerxee 453.2.3.2 Hiển thị thông tin chỉ tiẾt -¿- ¿5c +Sx+Ex+EE+E2EEEerEerxerxerkses 45
Trang 83.2.3.3 Trình xem PDE - Ăn TH TH HH HH ng nh n 47 3.2.3.4 Đăng tải luận văn và thêm thông tin - - 5 5= << £+sx+ssss 47
3.2.3.6 Chỉnh sửa thông tin và xóa luận văn -c «2-2 49
3.2.5 Tìm kiếm luận văn -+c+++ttEkkrrttrkrrrtrrirrtrrirrrrrirerrieg 523.2.6 Sắp xếp luận văn -:+cE+2E2EESEEEEEE2112212217121 211.11 53
3.2.7 BoOkmarK ST HH nghệ 55
3.2.7.1 Thêm và xóa bookimarK - - s + EEekkskserseersee 55
3.2.7.2 Hiến thị danh sách bookmark cc.ccsccscscssessesssessessessseesessessessseeseesess 56
Chương 4 KET QUÁ THUC NGHIỆM 2-2¿©5¿22++22E+£x+ezxezrxsrxeee 71
4.1 MMOdelL QC Q51 1kg 55x 7l
Trang 94.1.1 PhoBer( Ặ SG LH HH HH TH 71 4.1.2 LSTM cicceccccccscssssssessessessssssessessesssssssssessessussusssessessesssssessessessessseeseesess 71
' L0 . -1311 72
Chương 5 TONG KET VÀ HƯỚNG PHAT TRIEN 252 5 s+cs2 5+2 74
5.1 Tổng kẾC -2- tt E21 E21211211 1121111101111 11 1111 11a 74
5.1.1 _ Về phần ứng dụng web ¿- ¿+k+Sk+EE+EEEEEEE2E2EEEEEEkerkerkrree 74
5.1.2 Đóng góp chính của khóa luận - server 74
5.2 Khó khăn và hướng khắc phục - 2 2 s+2+£++£++£xezEzE+rserxerxeee 74
5.2.1 Khó khăn -.-5cc E22 E2 2112121212 74
5.2.2 Hướng giải quyết -¿©-cc©cccccccrkrrreerreerkeerxee 755.3 Hướng phát triỀn -:- 2 St9S2+E£2EE+EEEEEEEEEEE 1221112112171 711111 c0 75TÀI LIEU THAM KHẢO 2¿- E5: E23 EE2E9E5E12123851112E5E121511E111515511 1122 cxe2 76
Trang 10Hình 2.4: Điểm F1 của Bert trên bảng xếp hang SQuADI.I - .: 13
Hình 2.5: Mô tả nguyên lý hoạt động của Encoder - -«++«c+s<+sessesses 14 Hình 2.6: Mô hình RNN bình thường - - 5 5 kg HH HH gi nưệt 18
Hình 2.7: Mô hình RNN gặp van đề phụ thuộc từ xa -¿- 2 c5 c+csszszce2 18
Hình 2.8: GOlanng eee 1 11111 E6 TH HH 20 Hình 2.9: Go-Gin Írame€WOTK - ch ST HH kh 21 Hình 2.10: PostgreS(QÌU cọ TH HH nh 22 Hình 2.11: COUÏITIATV G25 15111 211 11 910 E1 1T TH nh HH Hư 23
Hình 2.12: ElastICS€arCH ó- G6 113 19 TH nh TH nh nh gi như 25 Hình 2.13: NeXtJŠ LH TH ng ng HH HH Hư 27 I0) 58)/0i1001 01212 ŨAẠA 28
Hinh 2.15: Ngrok wo ees e 29 Hình 2.16: Bang giá các gói dịch vụ của Ngrok oo eee eeceseeerecneeeneeeneesneeseenneens 29
Hình 3.1: Sơ đồ kiến trúc hệ thống ¿22 2¿©2+2E++EE+2EEt2EEtEEEerxzrxrrrecree 30Hình 3.2: Sơ đồ phân rã chức năng 2-2 5¿+2£+EE+Ex+EE+2EE+EEtrxrrkerrxerrerrrree 31Hình 3.3: Sơ đồ use case người dùng -.-¿- ¿5s SE E2 1211212111111 cre 32Hình 3.4: Sơ đồ use case luận văn cho mọi người dùng ¿5-5 s52 +2 32Hình 3.5: Sơ dé use case luận văn cho người dùng đăng nhập - 33Hình 3.6: Sơ đồ use case bookmiark ¿- +: +: 5¿22++2x+EEt£E+2EE+EEerxrrkerrxerxerrrree 33Hình 3.7: Các mối quan hệ với faCuÌy - ¿2-2 x+S++££+E£+E+E££Eerkerxerxersrree 38
Hình 3.8: Mô hình ERD giữa các thực thể liên quan với faculty 38
Hình 3.9: Các mối quan hệ với uSer - 2-2: 2£ 5£25£+SE+EE£EE+2EE+EEtEEtrkezreerxerxrres 39Hình 3.10: Mô hình ERD giữa các thực thể liên quan với user -: 39
Trang 11Các môi quan hỆ với theSis - - 5 5 + 11 ng ngư 40
Mô hình ERD giữa các thực thé liên quan với thesis .- 40
Man hình trang đăng ký tài khoản - xe seeseeseeseree 41 Man hình trang đăng nhap - - 5 5 + 1n ng ngư 42 Trang chủ khi người dùng đăng nhập thành công 42
Màn hình trang hồ sơ người dùng - 2 252 z+Ee£Eezxerxerxrrszes 43Màn hình trang chỉnh sửa hồ sơ - 2-22 522S+22++2x+ecxzrxrrresres 43Màn hình trang hồ sơ sau khi chỉnh sửa thông tin - 44Danh sách các luận văn được hiền thị - - - c ssvcv£v+EeEerzxerereree 45Thông tin chỉ tiết của luận văn 2-22 5¿22+2z+t£xEvrxezrxrrrerrei 46
Trimh 00390) 111 47
Thêm luận văn từ trang hồ sơ người dùng -. 2 ¿52 szscszz4 47
Màn hình trang đăng tải luận văn - - nen 48 Các luận văn đã được người dùng đăng lên - -5<++s<+<s+++ 49
Xóa hoặc chỉnh sửa luận - - + +22 < E332 3£ *+2EE‡c+eEEezeeeeeezeeeee 49 Lọc luận văn theo tÊH - 75 2 E322 21EE2231 81 2231 251 1 5311 sec, 50
Lọc luận văn theo khoa << <2 23322211 EE‡‡++*evEEEkeeeeseeeeeeeee 50 Lọc luận văn theo năm - - << = + +21 EEE++++#EEEEkeeezzeeeeeee 51
ii 0i0⁄:¡0:1 9á] 0 4 51 Lọc luận văn theo khoa, năm và tag - Le, 52
Tìm kiếm luận văn theo tên tại thanh tìm kiếm - 2z s=++szz 52Tắt cả luận văn tim đđưỢC - c6 SE EEEESEEEEEEEEEEEEkekererkrkerrrrree 53Sắp xếp theo tên đề tai eecececececccscescssessessescsescssessessesseseessestssesseesesseaee 54Sắp xếp theo tag -2:- 2c 2k2 221122121122112111211211111211211 1 1 xe 54Sap 001041 -< 55
Bookmark luận văn - - - -G - c 131111121111 2111118 1111851111 8x tre, 56 Danh sach bookmark n 57 Danh sach 0v:10i)ì 0n ằ - 5
Thống nhất về việc gán nhãn -2- 2: 2£ ©5£+£+£E+EE£E+E+zxerxersez 59
Trang 12Hình 3.40: Tổng hợp các từ được thay thế -¿- 2: 2¿2++22++2x++zx+erxezrxerreeree 61
Hình 3.41: Các layer của model sử dụng Pho Bert s5 «+ se s+eesseeese 62
Hình 3.42: Các layer của model sử dụng LSTM - Ï - 5< << cese 66
Hình 3.43: Các layer của model sử dụng LSTM - 2 - - «se +sseeee 67
Hình 4.1: Biểu đồ so sánh PhoBert va LSTM - labels cssccssessessssssesseeseestesseeseess 72
Hình 4.2: Biểu đồ so sánh PhoBert và LSTM - Score ¿52s ss+e+e+e+e+z+eszsssz 73
Trang 13Bang 1.1:
Bang 1.2:
Bang 1.3:
Bang 3.1:
Bang 3.2:
Bang 3.3:
Bang 3.4:
Bang 3.5:
Bang 3.6:
Bang 3.7:
Bang 4.1:
Bang 4.2:
Bang 4.3:
DANH MUC BANG
Bang đánh gia model của dé tài trường đại hoc Budi Luhur 4
Bảng đánh gia model của trường đại hoc Bumigora với TF-IDF 5
Bảng đánh giá model của trường đại hoc Bumigora không có TF-IDF 5
Bang faculty ee eee 33
Bang MaJOF 0.0 - 34
Bang USEF ố ố.ố 34
r0 35
017) 11177 36
5ã: 58:17 a 37
Bang booKImaFK cece 6 + E21 5E 11 11 31 931 H1 ng 37
Môi trường thực nghiệm trên google colab - ‹- s ss+<<<<sx+se+sxss 71
Bảng kết quả của model PhoBert -.2 s¿- 5+ ©+22s+2£x2zxezx+erxesrxez 71 Bảng kết quả của model LSTM 2-2 +£+++£x++£x++zxezxeerxesrxez 72
Trang 14DANH MỤC TỪ VIET TAT
BERT Bidirectional Encoder Representation
from Transformer
LSTM Long Short Term Memory
ML Machine Learning
NLP Natural Language Processing
RNN Recurrent Neural Network
SOTA State of the Art
UI User Interface
Trang 15TÓM TẮT KHÓA LUẬN
Trong hoàn cảnh đại dịch Covid-19 diễn ra, mọi hoạt động trong cuộc sốngđều chịu ảnh hưởng và bắt buộc phải thay đổi sang hình thức trực tuyến Việc phảicách ly tại nhà đã dẫn đến khá nhiều những bắt cập trong việc học như không có sựtương tác nhiều, việc tiếp thu bài khó, Và một trong số những vấn đề đặc biệt ảnhhưởng đến những sinh viên năm cuối như nhóm tác giả đó là việc làm khóa luận tốtnghiệp Khi làm khóa luận, việc tham khảo những tài liệu của các khóa trước để tìm
ý tưởng là cần thiết Tuy nhiên, do cách ly kéo đài khiến việc tìm kiếm tài liệu trở
nên vô cùng khó khăn Chính điều này đã cho nhóm tác giả ý tưởng xây dựng mộtwebsite để lưu trữ và cho phép đọc luận văn online
Theses Share là một ứng dụng web cho phép mọi sinh viên UIT chia sẻ luận
văn cũng như đọc luận văn của nhau Trang web sẽ cho phép mọi đối tượng tham
khảo, giúp mọi sinh viên đều có thê được đọc những luận văn mới nhất cũng như
hiểu được các chủ đề luận văn xu hướng hiện nay Bên cạnh đó, ứng dụng còn tập
trung vào việc sử dụng máy học dé gán nhãn các đề tài, giúp sinh viên có thé dễ
dàng tìm kiếm những chủ đề mà mình quan tâm Hơn nữa, ứng dụng có khả năng
tương thích tốt với thiết bị điện thoại, giúp tăng trải nghiệm người dùng Những
công nghệ chính được sử dụng trong đề tài bao gồm:
e FE: NextJS, Material UI
e BE: Go, Gin, Elastic Search.
Đề tài này sẽ làm một giải pháp tuyệt vời dé sinh viên có thé tham khảo luậnvăn trong thời điểm cách ly tại nhà Kể cả khi kết thúc giãn cách xã hội, ứng dụng
này vẫn có giá trị của mình khi các bạn sinh viên có thể đọc tài liệu ở nhà, tiết kiệmđược thời gian đi lại và có nhiều thời gian nghiên cứu hơn Hy vọng ứng dụng này
sẽ giúp các bạn sinh viên tiếp cận với khóa luận tốt nghiệp dễ dàng hơn, giúp các
bạn thuận tiện hơn trong việc nghiên cứu cũng như cung cấp vô vàn chủ dé dé các
bạn có thé tham khảo
Trang 16Chương 1 TONG QUAN DE TÀI
Trong chương nay, nhóm sé tap trung trình bay các nội dung sau:
Đặt vấn đề
Mục tiêu.
Đối tượng và phạm vi nghiên cứu
Phương pháp thực hiện.
Kết quả mong đợi
am FF YN PD Các công trình nghiên cứu trước đó.
1.1 Đặt vấn đề
Hầu hết mọi hoạt động của con người hiện nay đều phải diễn ra thông qua
hình thức online do chịu sự ảnh hưởng của đại dịch Covid-19 Ngoài việc học tại
trường, mọi sinh viên — đặt biệt là sinh viên năm cuối — đều có nhu cầu muốn đọc
khóa luận tốt nghiệp Tuy nhiên, do điều kiện không cho phép nên việc tiếp cận đếncác khóa luận là rất khó khăn Trang web thư viện của trường cũng có đăng tải khóaluận nhưng đa số khóa luận đều khá cũ, trang web khó thao tác và khả năng tìm
kiếm cũng còn hạn ché Những khóa luận có thể kiếm được trên mạng cũng rất hạn
chế và những chủ đề cũng không còn mới nữa Điều này dẫn đến nhu cầu tham
khảo những đề tài khóa luận mới nhất của các sinh viên hiện đang và sẽ làm khóa
cách dễ dàng hơn.
1.2 Mục tiêu
Đê tài này với nhăm tới những mục tiêu cụ thê như sau:
Trang 17e Xây dựng một ứng dụng web cho phép mọi sinh viên UIT chia sẻ luận van
cũng như đọc luận văn của nhau Trang web sẽ cho phép mọi đối tượng thamkhảo, giúp mọi sinh viên đều có thể được đọc những luận văn mới nhất cũngnhư hiểu được các chủ đề luận văn xu hướng hiện nay
© Đề tài này sẽ là một giải pháp tuyệt vời dé sinh viên có thể tham khảo luận văn
trong thời điểm hạn chế di chuyên và tiếp xúc khi dai dịch Covid-19 van đang
e Xây dựng nén tảng lưu trữ và chia sẻ luận văn của sinh viên UIT Nền tang
phân quyền chức năng giữa người dùng ấn danh và người dùng đăng ký
e Nghiên cứu hệ thống tự động gán nhãn dựa theo tiêu đề và nội dung văn bản
e Tích hợp hệ thống vào nền tảng dé tối ưu việc phân loại tag
1.3.2 Phạm vi nghiên cứu
se Nền tảng sẽ có những chức năng tìm kiếm, lọc, đọc luận văn cho người dùng
Cung cấp thêm chức năng đánh dấu và chức năng xóa, sửa luận văn đã đăng
tải cho người dùng đăng ký.
e Tìm hiểu về hệ thống tự động gán nhãn dựa trên tiêu đề và nội dung luận văn
Đầu vào là luận văn được người dùng đăng tải và đầu ra là các nhãn liên quan
tới nội dung luận văn.
1.4 Phương pháp thực hiện
e Áp dụng học có giám sát
e Tim hiêu những model liên quan về lĩnh vực xử lí ngôn ngữ tự nhiên.
Trang 18e Chọn lọc và chỉnh sửa các thuật toán dé có tính chính xác cao nhất.
e Tích hợp model vào ứng dung web.
e_ Đánh giá kết quả
1.5 Kết quả mong đợi
e Xây dựng ứng dụng web hoàn chỉnh, giúp cho sinh viên đóng góp luận văn
cho những thế hệ sinh viên trẻ và những người thích nghiên cứu
e_ Tích hợp hệ thống tự động gán nhãn giúp sinh viên dé dàng tìm kiếm thé loại
luận văn mình đang nghiên cứu.
1.6 Công trình nghiên cứu trước đó
1.6.1 Đề tài nghiên cứu của trường đại học Budi Luhur ở Indonesia
Đề tài [17] là công trình nghiên cứu phân loại khóa luận của trường đại học Budi
Luhur ở Indonesia của tác giả Achmad Solichin Đề tài sử dụng ba phương thức
phân loại là Decision Tree, Naive Bayes, k-Nearest Neighbors (KNN) và đạt được
sự đánh giá cao với phương thức kNN.
78,20% 80,32% 96,49%
Tác gia đã có một model có các diém sô với tỉ lệ phân trăm cao Tuy nhiên, bài toán
này thuộc phân loại binary nghĩa là đâu vào là I khóa luận và đâu ra sẽ là đạt hay
không đạt, đây không phải là định hướng bài toán của nhóm.
1.6.2 Đề tài nghiên cứu của trường đại học Bumigora ở Malaysia
Đề tài [23] của nhóm tác giả Hairani Hairani của trưởng đại học Bumigora ở
Malaysia Họ sử dụng naive Bayes với trọng số TF-IDF và không có trọng số
TF-IDF và có kết quả như sau:
Trang 19(accuracy_score) cao như vậy khả năng cao, nhóm tác gia sẽ phân loại khóa luận
theo multi-class, nghĩa là mỗi khóa luận chỉ có 1 topic mà thôi.
1.6.3 Đề tài nghiên cứu của trường đại học UIT
Đề tài [24] của nhóm tác giả Hieu Trung Tran của trường UIT, nhóm tác giả nhìn
thấy vấn đề về các tin tức tuyên dụng rất nhiều và họ muốn phân loại theo nhiều
nhãn (multi-label) bằng 2 ngôn ngữ tiếng Anh và tiếng Việt để ứng cử viên dễ dàngtìm được công việc phù hợp và nhà tuyển dụng cũng tiết kiệm được nhiều thời gianhơn Đề tài sử dụng multi-label cộng với Phobert đúng với hướng nghiên cứu của
nhóm và bên cạnh đó nhóm tác giả sử dụng rất nhiều model để có sự so sánh và lựachọn model phù hợp nhất bao gồm W2V, fastText, Bert_Base, ELMO and
MULTI_WC_F_E_B, Pho2WV, BERT (m-BERT), XLM-R, DistIBERT, và
PhoBERT.
Trang 20Type Pre-trained models Fi-srore TA)
Hình 1.1: Đánh giá các model trong dé tài của trường đại học UIT
Hình 1.2: Số đánh giá đúng/sai lượng label trong đề tài của trường đại học UIT
Model hiện tại của họ sẽ không đoán chính xác những tin tức tuyên dung nào nhiềuhơn 5 nhãn Và nhóm tác giả lựa chọn F1-score dé so sánh vì bài toán multi-label
thường accuracy_score sẽ không cao và hoàn toàn không đúng trong nhiều hoàn
cảnh.
Với dataset bao gồm xấp sỉ 22000 tin tức tuyên dụng thì, model của họ tốt nhất là
BERT (62,2%) cho tiếng Anh và PhoBert (61,29%) cho tiếng Việt Day là một con
số trên mức trung bình nhưng vẫn chưa phải là cao.
Với các công trình nghiên cứu liên quan trên, nhóm đã quyết định chọn PhoBert —
một biến thé tiếng Việt của BERT (một model SOTA ở thời điểm hiện tại trong lĩnhvực NLP) để ứng dụng cho bài toán phân loại khóa luận theo nhiều nhãn Đóng gópcủa nhóm trong khóa luận này chính là một bộ dữ liệu gồm 700 khóa luận đã đượcgán nhãn và áp dụng mô hình có kết quả tốt nhất cho bài toán tự động gán nhãn
Trang 21Chương 2 CƠ SỞ LÝ THUYET
Trong chương này, nhóm sẽ trình bày về cơ sở lý thuyết, các khái niệm cũng như ưuđiểm của những công nghệ đã được nhóm sử dụng trong đề tài
2.1 Machine Learning
Machine learning (ML) hay máy học là một nhánh của trí tuệ nhân tạo (AI), nó là một lĩnh vực nghiên cứu cho phép máy tính có khả năng cải thiện chính bản thân
chúng dựa trên dữ liệu mẫu (training data) hoặc dựa vào kinh nghiệm (những gì đã
được học) Machine learning có thể tự dự đoán hoặc đưa ra quyết định mà không cầnđược lập trình cụ thể
Bài toán machine learning thường được chia làm hai loại là dự đoán (prediction) và phân loại (classification) Các bài toán dự đoán như dự đoán giá nhà, giá xe Các
bài toán phân loại như nhận diện chữ viết tay, nhận diện đồ vật [7]
Machine Learning Workflow
ARTICLE AT
KHIEMLE.DEV
Hình 2.1: Workflow của machine learning
2.2 NLP
Xu lý ngôn ngữ tự nhiên là một nhánh cua trí tuệ nhân tao, tập trung vào việc nghiên
cứu sự tương tác giữa máy tính và ngôn ngữ tự nhiên của con người, dưới dạng tiêng
nói (speech) hoặc văn bản (text) Mục tiêu của lĩnh vực nay là giúp máy tính hiéu và
Trang 22thực hiện hiệu quả những nhiệm vụ liên quan đên ngôn ngữ của con người như: tương
tác giữa người va máy, cải thiện hiệu qua giao tiép giữa con người với con người, hoặc đơn giản là nâng cao hiệu quả xử lý văn bản và lời nói [16]
Các ứng dụng cơ bản của NLP:
1 Chế tạo các hệ thống Máy dịch, ví dụ như Google translation
Xử lý văn bản và ngôn ngữ.
Tìm kiếm thông tin
Trích xuất thông tin
Tóm tắt văn bản
Am FY SN Phan loai van ban.
là Data mining, web mining.
Và nhóm sử dụng NLP cho ứng dụng phân loại văn bản
Multi-class Classifier
K = Total number of classes in the problem statement
€ = Number of classes an item maybe assigned to
Hinh 2.2: Cac dang bai toan phan loai
Trang 232.2.1 Ngữ cảnh (Contextual) và vai tro trong NLP
Ngữ cảnh trong câu có một sự ảnh hưởng rất lớn trong việc giải thích ý nghĩa của
từ Hiểu được vai trò mau chốt đó, các thuật toán NLP SOTA đều cố gắng đưa ngữ
cảnh vào mô hình nhắm tạo ra sự đột phá và cải tiên.
Phân cấp mức độ phát triển của các phương pháp embedding từ trong NLP có thé
e Câu A: Đơn vi tiền tệ của Việt Nam là [đồng]
e_ Câu B: Tôi [đồng] ý với ý kiến của anh
Thi từ “đồng” sẽ mang 2 ý nghĩa khác nhau nên phải có hai biểu diễn từ riêng biệt.Các thuật toán non-context đã không đáp ứng được sự đa dạng về ngữ nghĩa của từ
trong NLP.
Uni-directional (một chiều): Là các thuật toán đã bắt đầu xuất hiện bối cảnh của từ.Các kết quả biểu diễn từ đã có bối cảnh nhưng chỉ được giải thích bởi một chiều từ
trái qua phải hoặc từ phải qua trái Ví dụ:
e Câu C: Hôm nay tôi mang 200 ty [gửi] ở ngân hàng.
e Câu D: Hôm nay tôi mang 200 ty [gui]
Nhu vậy véc tơ biểu diễn của từ “gửi” được xác định thông qua các từ liền trước với
nó Nêu chỉ dựa vào các từ liên trước “Hôm nay tôi mang 200 tỷ” thì ta có thê nghĩ
từ phù hợp ở vi trí hiện tại là cho vay, mua, thanh toán,
ELMo là một ví dụ cho phương pháp một chiều Mặc dù ELMo có kiến trúc dựa
trên một mạng BiLSTM xem xét bối cảnh theo hai chiều từ trái sang phải và từ phải
Trang 24sang trái nhưng những chiều này là độc lập nhau nên ta coi như đó là biểu diễn mộtchiều.
Thuật toán ELMo đã cải tiến hơn so với word2vec và fasttext đó là tạo ra nghĩa của
từ theo bối cảnh Trong ví dụ về từ đồng thì ở mỗi câu A và B chúng ta sẽ có một
biểu diễn từ khác biệt
Bi-directional (hai chiều): Ngữ nghĩa của một từ không chỉ được biểu diễn bởi
những từ liền trước mà còn được giải thích bởi toàn bộ các từ xung quanh Luồng
giải thích tuân theo đồng thời từ trái qua phải và từ phải qua trái cùng một lúc Đại
diện cho các phép biéu diễn từ này là những mô hình sử dụng kỹ thuật transformer
mà chúng ta sẽ tìm hiểu bên dưới Gần đây, những thuật toán NLP theo trường pháibidirectional như BERT, ULMFit, OpenAI GPT đã đạt được những kết quả SOTAtrên hầu hết các tác vụ của GLUE benchmark.[11]
2.2.2 Phân loại nhị phân (Binary classification)
Day là bài toán phân loại theo 2 nhãn (0,1) Trong đó nhãn 1 là tích cực (positive),
nhãn 0 là tiêu cực (negative) Một đầu vào (input) sẽ cho ra output là 0 hay 1 Phan
loại nhị phân thường giải quyết các bài toán:
e Trong lĩnh vực y tế, sẽ phân loại bệnh nhân có bị bệnh ung thư hay
không.
e_ Trong kiểm soát chất lượng công nghiệp, quyết định liệu một đặc
điểm kỹ thuật đã được đáp ứng hay chưa
e Trong truy xuất thông tin, quyết định liệu một trang có nên nằm
trong tập hợp của tìm kiếm hay không [18]
2.2.3 Phân loại đa lớp (Multi-class classification)
Bài toán phân lớp da lớp là quá trình phân lớp dit liệu với số lượng lớp lớn hơn hai
Như vậy với từng dữ liệu phải xem xét và phân lớp chúng vào những lớp khác nhau
chứ không phải là hai lớp như bài toán phân lớp nhị phân Và thực chất bài toán
phân lớp nhị phân là một bai toán đặt biệt của phân lớp đa lớp.[9]
10
Trang 25Với phân loại đa lớp này thi output sẽ là 1 mang dự đoán với phan tử sẽ là con số
threshold thé hiện cái khả năng mà input sẽ thuộc class đó và tổng của các phan tử
trong mảng sẽ là 100% Ví dụ, ta có bài toán phân loại một bình luận là “This food
is delicious” sẽ thuộc vào 4 class: happy, sad, toxic, normal Ta sẽ có output là [0.7;
0.15; 0.1; 0.05] va ta sẽ thay tong output sẽ là 100% = 0.7 + 0.15 + 0.1 + 0.05 và
con số threshold cao nhất là 0.7 ở class happy Vậy câu bình luận “This food is
delicious” sẽ thuộc vào class happy.
2.2.4 Phân loại đa nhãn (Multi-label classification)
Phân loại đa nhãn là quá trình phân loại dữ liệu sẽ thuộc về n class, giải quyết đượcnhiều bài toán thực tế:
e Một bộ phim vừa có thé là phim hành động va lãng mạn, thậm chí
là kinh di
© Một bài báo có thé thuộc lĩnh vực xã hội, chính trị
© Một cái áo có thể có cả loại (T-Shirt, Dress) cũng có cả màu (blue,
red, yellow)
Multi-Class Multi-Label
(001) [100] [010] [101] [010] [111]
Hình 2.3: Sự khác biệt giữa multi-class và multi-label
Với phân loại đa nhãn này thi output sẽ là 1 mang dự đoán với phan tử sẽ là con sốthreshold thể hiện cái khả năng ma input sẽ thuộc class đó và tông của các phần tử
trong mảng sẽ khác 100%, thậm chí lớn hơn là điều bình thường Vì
11
Trang 26các class không loại trừ nhau như bai toán phân loại đa lớp Ví du, ta có bài toán
phân loại một text là “After all, the Java language was created, in part, to address
some of the shortcomings of C++” sẽ thuộc vào 5 class: Java, c++, c#, python,
golang Ta sẽ có output là [0.7; 0.6; 0.2; 0.4;0.3] va ta sẽ thay tong output sẽ là
220% = 0.7 + 0.6 + 0.2 + 0.4 + 0.3 và con số threshold cao nhất là 0.7 ở class java.Nhung lúc này ta không lay threshold cao nhất, ta sẽ có 2 cách chọn dé ra output:
e Cách 1 là chọn một giá tri cho threshold, ví dụ ta chọn lớn hon 0.6
thì text đó sẽ thuộc Java, ta chọn lớn hơn 0.5 thì text đó sẽ thuộc 2 nhãn là Java, c++, ta chọn lớn hơn 0.3 thì text đó sẽ thuộc 3 nhãn là
Java, c++, python
e_ Cách 2 là chọn top n threshold cao nhất, ta chọn top 1 thì text sẽ
thuộc Java, top 2 thì text sẽ thuộc 2 nhãn Java, c++
Đề tài của nhóm sẽ hướng tới sử dụng phân loại đa nhãn, vì một bài luận văn UIT cóthể thuộc nhiều topic khác nhau (iot, web, nhúng, mobile, )
2.3 Bert
BERT là viết tắt của cụm từ Bidirectional Encoder Representation from
Transformer có nghĩa là mô hình biéu diễn từ theo 2 chiều ứng dung kỹ thuật
Transformer BERT được thiết kế để huấn luyện trước các biéu diễn từ (pre-train
word embedding) Điểm đặc biệt ở BERT đó là nó có thé điều hòa cân bằng bối
cảnh theo cả 2 chiều trái và phải [11]
BERT là model biểu diễn ngôn ngữ được Google giới thiệu vào năm 2018
Trong bai báo [11] các tác giả đã nêu ra những cải tiến của model BERT trong các
tác vu:
e Tăng GLUE score (General Language Understanding Evaluation score), một
chỉ số tổng quát đánh giá mức độ hiéu ngôn ngữ lên 80.5%
e Tăng accuracy trên bộ dữ liệu MultiNLI đánh giá tác vụ quan hệ văn ban (text
entailment) lên 86.7%.
12
Trang 27e Tăng accuracy F1 score trên bộ dữ liệu SQUAD v1.1 đánh giá tác vụ question
and answering lên 93.2%.
BERT sử dung Transformer là một mô hình attention (attention mechanism) hoc
môi tương quan giữa các từ (hoặc một phan của từ) trong một van ban Transformer
gôm có hai phân chính: Encoder và Decoder, encoder thực hiện đọc dữ liệu dau vào
và decoder đưa ra dự đoán Ở đây, BERT chỉ sử dụng Encoder
Khác với các mô hình directional (các mô hình chỉ đọc dữ liệu theo một chiều duy
nhất - trai—phai, phải— trái) đọc dữ liệu theo dạng tuần tự, Encoder đọc toàn bộ dữliệu trong 1 lần, việc này làm cho BERT có khả năng huấn luyện dữ liệu theo cả hai
chiều, qua đó mô hình có thể học được ngữ cảnh (context) của từ tốt hơn bang cach
sử dụng những từ xung quanh nó (phải va trai).[11]
13
Trang 28Mô hình encoder
Hình 2.5: Mô tả nguyên lý hoạt động của Encoder.
Theo đó, input đầu vào là một chuỗi các token wl, w2, được biểu diễn thành
chuỗi các vector trước khi đưa vào trong mạng neural Output của mô hình là chuỗi
các vector có kích thước đúng bằng kích thước input
Trong khi huấn luyện mô hình, một thách thức gặp phải là các mô hình
directional truyền thống gặp giới hạn khi học ngữ cảnh của từ Đề khắc phục nhượcđiểm của các mô hình cũ, BERT sử dụng 2 chiến lược training sau: Masked ML,
Next Sentence Prediction [5]
2.3.1 Masked ML
Khi sử dung ngữ cảnh 2 chiều sẽ gây ra một nghịch lý là một từ có thé gián tiếp tựnhìn thấy nó trong một ngữ cảnh nhiều lớp
14
Trang 29Dé đảo tạo một mô hình tìm ra đại diện dựa vào ngữ cảnh 2 chiêu, chúng ta sử dụng một cách tiép cận đơn giản dé che giâu đi một sô token đâu vào một cách ngau
nhiên và sau đó chúng ta chỉ dự đoán các token được giâu di.
Trước khi đưa vào BERT, thì 15% số từ trong chuỗi được thay thế bởi token
[MASK], khi đó mô hình sẽ dự đoán từ được thay thé bởi [MASK] với context là
các từ không bị thay thé boi [MASK] Trên thực tế, con số 15% không phải là cố
định mà có thé thay đổi theo mục đích của bài toán
e Ví dụ với câu: “con_ chó của tôi đẹp quá” Từ được chọn dé mask là
từ “đẹp” Câu sẽ trở thành "con_ chó của tôi [MASK] qua"
e Các từ được chon sẽ được thay thế bởi 1 từ ngẫu nhiên thành
"con_ chó của tôi máy_ tính qua"
Transformer encoder không hề biết được từ nao sé được yêu cầu dự đoán hoặc từ
nao đã được thay thé băng một từ ngẫu nhiên, do đó, nó buộc phải giữ một biểu
diễn theo ngữ cảnh của mối token đầu vào Ngoài ra, do thay thế 15% tất cả các
tokens bằng một từ ngẫu nhiên nên điều này dường như sẽ không làm ảnh hưởng tới
khả năng hiểu ngôn ngữ của mô hình [13]
2.3.2 Next Sentence Prediction (NSP)
Nhiéu nhiệm vụ quan trọng trong xử lý ngôn ngữ tu nhiên như Question Answering
yêu câu sự hiệu biệt dựa trên môi quan hệ giữa 2 câu văn bản, không trực tiép sử
dụng được các mô hình ngôn ngữ.[13]
Đây là một bài toán phân loại học có giám sát với 2 nhãn (hay còn gọi là phân
loại nhị phân) Input đầu vào của mô hình là một cặp câu (pair-sequence) sao cho
50% câu thứ 2 được lựa chọn là câu tiếp theo của câu thứ nhất và 50% được lựa
chọn một cách ngẫu nhiên từ bộ văn bản mà không có mối liên hệ gì với câu thứ
nhất Nhãn của mô hình sẽ tương ứng với IsNext khi cặp câu là liên tiếp hoặc
NotNext nếu cặp câu không liên tiếp.[I 1]
15
Trang 30Chúng ta cần đánh dấu các vị trí đầu câu thứ nhất bằng token [CLS] và vị trí cuối
các câu bằng token [SEP] Các token này có tác dụng nhận biết các vị trí bắt đầu vàkết thúc của từng câu thứ nhất và thứ hai.[11]
Ví dụ:
e Input: [CLS] người đàn ông lam [MASK] tại cửa hàng [SEP]
anh_ta rat [MASK] và than_thién [SEP]
Label: isNext [13]
e Input: [CLS] nguoi đàn ông lam [MASK] tại cửa_hàng [SEP] cô_ ta
dang cầm sting [SEP]
Label: notNext [13]
2.3.3 Các kiến trúc model BERT
Hiện tại có nhiều phiên bản khác nhau của model BERT Các phiên bản đều dựa
trên việc thay đổi kiến trúc của Transformer tập trung ở 3 tham số:
L: số lượng các block sub-layers trong transformer,
H: kích thước của embedding véc tơ (hay còn gọi là hidden size),
A: Số lượng head trong multi-head layer, mỗi một head sẽ thực hiện một
self-attention Tên gọi của 2 kiến trúc bao gồm:
e BERTBASE(L=12,H=768,A=12) : Tổng tham số 110 triệu
e BERTLARGE(L=24,H=1024,A=16): Tổng tham số 340 triệu.
Như vậy ở kiến trúc BERT Large chúng ta tăng gấp đôi số layer, tăng kích thước
hidden size của embedding véc tơ gấp 1.33 lần và tăng số lượng head trong
multi-head layer gấp 1.33 lần [11]
16
Trang 312.4 PhoBert
Day là một pre-trained được huấn luyện monolingual language, tức là chỉ huấn
luyện dành riêng cho tiếng Việt Việc huấn luyện dựa trên kiến trúc và cách tiếp cậngiống RoBERTa của Facebook được Facebook giới thiệu giữa năm 2019
Tương tự như BERT, PhoBERT cũng có 2 phiên bản là PhoBERT {base}
PhoBERTbase với 12 transformers block và PhoBERT {large} PhoBERTlarge với
24 transformers block.
PhoBERT được train trên khoảng 20GB dữ liệu bao gồm khoảng 1GB Vietnamese
Wikipedia corpus và 19GB còn lại lấy từ Vietnamese news corpus Đây là một
lượng dữ liệu khả ôn dé train một mô hình như BERT
Tiếp cận theo tư tưởng của RoBERTa (môt biến thé của BERT), PhoBERT chỉ sử
dụng task Masked Language Model dé train, bỏ di task Next Sentence Prediction
[12]
2.5 RNN va LSTM
2.5.1 RNN
Đối voi mang neural thông thường, chúng ta cho tat ca dit liệu vào cùng một lúc
Nhưng đôi khi, đữ liệu của chúng ta mang ý nghĩa trình tự, tức nếu thay đổi trình tự
dữ liệu, kết quả sẽ khác
Dễ thấy rõ nhất ở dữ liệu văn bản Ví dụ, “Con ăn cơm chưa” và “Con chưa ăn
cơm”, nếu tách mỗi câu theo từ, ta được bộ vocab [ ‘con’, “ăn”, ‘com’, “chưa” ], onehot encoding và cho tat cả vào mang neural, có thé thấy ngay, không có sự phân biệt
nào giữa 2 câu trên Việc đảo thứ tự duyệt các từ làm sai lệch ý nghĩ của câu Mạng
nơ-ron hồi quy (Recurrent Neural Network) sinh ra dé giải quyết van dé đó [10]
2.5.2 Vấn đề của RNN
RNN gap van đề với van đề phụ thuộc từ xa, với khoảng cách các từ càng lớn dan
thì RNN không thê nhớ và học được nữa
17
Trang 32Đôi lúc ta chỉ cần xem lại thông tin vừa có thôi là đủ đề biết được tình huống hiệntại Ví dụ, ta có câu: “các đám mây trên bầu trời” thì ta chỉ cần đọc tới “các đám
mây trên bầu” là đủ biết được chữ tiếp theo là “trời” rồi Trong tình huống này,
khoảng cách tới thông tin có được cần đề dự đoán là nhỏ, nên RNN hoàn toàn có
thé học được
Hình 2.6: Mô hình RNN bình thường
Nhung trong nhiều tình huống ta buộc phải sử dụng nhiều ngữ cảnh hơn dé suy
luận Ví dụ, dự đoán chữ cuối cùng trong đoạn: “I grew up in France I speak
fluent French.” Rõ ràng là các thông tin gần (“I speak fluent”) chỉ có phép ta biếtđược đẳng sau nó sẽ là tên của một ngôn ngữ nảo đó, còn không thể nào biết được
đó là tiếng gì Muốn biết là tiếng gì, thì ta cần phải có thêm ngữ cảnh “I grew up inFrance” nữa mới có thê suy luận được Rõ ràng là khoảng cách thông tin lúc này cóthé đã khá xa rồi.[10]
18
Trang 332.5.3 LSTM
Mạng bộ nhớ dài-ngắn (Long Short Term Memory networks), thường được gọi là
LSTM - là một dạng đặc biệt của RNN, nó có khả năng học được các phụ thuộc xa.
LSTM được thiết kế dé tránh được vấn đề phụ thuộc xa (long-term dependency).Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định của chúng, chứ ta
không cần phải huấn luyện nó đề có thé nhớ được.[10]
19
Trang 342.6 Ngôn ngữ Golang
Golang là 1 ngôn ngữ lập trình mã nguồn mở được thiết kế dựa trên tư duy
lập trình hệ thống Golang được phát triển bởi Robert Griesemer, Rob Pike và Ken
Thompson tại Google vào năm 2007 Nó được kỳ vọng sẽ giúp ngành công nghiệp
phần mềm khai thác nền tảng đa lõi của bộ vi xử lý và hoạt động đa nhiệm tốt hơn
Điểm mạnh của Golang là bộ thu gom rác và hỗ trợ lập trình đồng thời Golang là
một ngôn ngữ biên dịch như C/C++, Java, Pascal, Golang được giới thiệu vào
năm 2009, phiên bản mới nhất ở thời điểm hiện tại là 1.17 phát hành vào năm 2021,
một trong những tính năng mới cập nhật là Generic, giúp giảm thời gian code của
lập trình viên [8]
20
Trang 352.6.1 Go-Gin framework
Hình 2.9: Go-Gin framework
Gin là 1 web framework được viết bằng Go mã nguồn mở được phát triển với
mục đích để xây dựng các ứng dụng web bằng Go với hiệu năng cao Gin là 1 webframework nỗi tiếng và cung cấp nhiều tính năng như [22]:
se Tốc độ nhanh
e Hỗ tro middleware.
e Hỗ trợ xử ly crash va hồi phục, đảm bao server luôn sẵn sàng
¢ Hỗ trợ kiểm tra tính hợp lệ của yêu cầu HTTP
e Định tuyến theo nhóm: Tổ chức định tuyến theo cấu trúc tốt hon mà không
ảnh hưởng lớn đến hiệu năng
e Quan lý lỗi: Gin cung cấp một cách thuận tiện dé thu thập tat cả các lỗi xảy ra
trong 1 yêu cầu HTTP
e Dễ dàng mở rộng.
21
Trang 362.7 PostgreSQL
Hình 2.10: PostgreSQL
PostgreSQL là một hệ thong quan tri cơ sở dir liệu quan hệ - đối tượng
(object-relational database management system), hệ thống cơ sở dữ liệu mã nguồn mở tiên
tiên nhât hiện nay.
Là hệ thống quản lý cơ sở đữ liệu quan hệ đối tượng, PostgreSQL cho phép
thêm vào các tính năng tùy chỉnh được phát triển bằng các ngôn ngữ chương trình
khác nhau như C/C++, Java, [15]
PostgreSQL cung cấp cho người dùng nhiều tính năng hiện đại, khả năng ôn
định cao, tốc độ tuyệt vời, chính vì vậy ma PostgreSQL trở nên phổ biến, có thé dễdàng thấy nhiều dich vụ thiết kế website khách sạn sử dụng nền tảng này dé tạo
web, ngoài ra thì còn có nhiêu ứng dụng khác như:
e Kiểu dữ liệu: nguyên hàm (các nguyên SỐ, boolean, SỐ, chuỗi); cấu trúc (UUID,
Phạm vi, Array, Date/time); Hình học; Tùy chỉnh; Document
e Toàn vẹn dữ liệu: Rang buộc loại từ, Primary Keys, Foreign Keys, UNIQUE,
NOT NULL, Khóa khuyến nghị - Advisory Locks, Khóa hàm số - Explicit
Locks,
e Hiệu suất, đồng quy: Tinh năng lập danh mục, lập danh mục nâng cao, trình
lập kế hoạch, trình tối ưu hóa truy cập phức tạp, thống kê số liệu trên nhiềucột, quét index — only, giao tác — giao tác dang test, điều khiến đồng thời nhiềuphiên bản (MVCC), phân vùng bảng, truy van đọc song song, độ tin cậy, phục
22
Trang 37hồi sau thảm họa, nhật ký ghi trước (Write-ahead Logging — WAL),replication, khôi phục điểm — thời gian, bang
e Chức năng bảo mật: Bảo mật, xác thực (SCRAM-SHA-256, SSPI, LDAP,
GSSAPI, Certificate và các hình thức khác), hệ thống kiểm soát truy cập mạnh
mẽ, bảo mật cấp độ cột — hàng
e Khả năng mở rộng: phương pháp lưu trữ, ngôn ngữ thủ tục (PL/PGSQL,
Python, Perl, và nhiều ngôn ngữ khác), PostGIS, tính năng kết nối cơ sở đữ
liệu hoặc luồng khác với giao diện SQL chuẩn, cùng nhiều tính năng mở rộng
khác
e Tìm kiếm văn bản: Tìm kiếm văn bản đầy đủ, hệ thống các bộ ký tự quốc tế
(thông qua ICU collations)
e Tính năng khác: Khả năng quản lý số lượng người dùng đang thao tác cùng
lúc, phù hợp với môi trường sản xuất quản lý nhiều terabyte và petabyte [14]
2.8 Cloudinary
Cloudinary là 1 giải pháp phần mềm hướng dich vụ (Software-as-a-Service) cho
việc quản lý tat cả dữ liệu truyền thông (ảnh, video, file, ) của ứng dung web và diđộng trên đám mây Cloudinary cung cấp 1 giải pháp về đầu cuối cho tất cả các nhu
câu vê hình ảnh và video, bao gôm tải lên, lưu trữ, quan lý, biên đôi va tôi ưu truyền
23
Trang 38tải Xử lý, tải dữ liệu và truyền tải được xử lý ở máy chủ của Cloudinary, được tự
động mở rộng dé xử lý tải cao va sự gia tăng truy cập đột ngột.[ 19]
2.8.1 Phương tiện có thé lập trình (Programmable Media)
Tạo trải nghiệm phương tiện được tối ưu hóa cao, pIxel hoàn hảo và được cá nhânhóa với các API của Cloudinary và các tiện ích con sẵn sàng sử dụng Sản phẩm
quản lý trải nghiệm truyền thông của Cloudinary cung cấp cho các nhóm kỹ thuật
các công cụ dé lưu trữ, quản lý, chuyển đồi và phân phối đa phương tiện trên quy
mô lớn nhăm đạt được mức độ tương tác và chuyền đổi cao hơn [19]
2.8.2 Trình tối ưu hóa phương tiện (Media Optimizer)
Cloudinary tự động cung cấp hình anh và video ở định dang và chất lượng phù
hợp với mọi thiết bị của người dùng cuối Sức mạnh tính toán biên và nhiều CDN
giúp tăng tốc đáng kề việc phân phối phương tiện Mang đến trải nghiệm nhanh
chóng và độ trung thực cao mà không cần bat kỳ thông s6 URL nào hoặc tạo ra cácbiến thể nội dung Chỉ cần theo dõi hiệu suất nội dung, chỉnh sửa cài đặt và để
Cloudinary làm phần còn lại [19]
2.8.3 Quản lý tài sải kỹ thuật số (Digital Asset Management)
Tái hiện lại việc quản lý tài sản kỹ thuật số với tính năng tự động hóa do AI cungcấp giúp hợp lý hóa quy trình công việc, tích hợp hoàn toàn với toàn bộ hệ thống
tiếp thị của bạn và mang lại trải nghiệm khách hàng cao cấp Quản lý tài sản động
(DAM) của Cloudinary trao quyền cho các nhóm tiếp thị và sáng tạo đề tô chức,
quản lý, chỉ phối và xuất bản hình ảnh, video và các tài sản kỹ thuật số khác
Cloudinary cho phép một nguồn chân lý duy nhất đã được chứng minh đề cho phépcộng tác với các nhóm bên trong và bên ngoài tổ chức, một cách an toàn và đáng tin
cậy [19]
2.8.4 Video động (Dynamic Video)
Nền tang video trực tuyến thé hệ tiếp theo giúp video trên các thuộc tính kỹ thuật
số của dé quản lý hơn và xuất bản nhanh hơn Tận dụng công nghệ AI sáng tạo dé
24
Trang 39chuyền mã, tối ưu hóa, tùy chỉnh và phát trực tuyến video để có trải nghiệm hấp
structured va unstructured một cách nhanh chóng (near real-time).
Elasticsearch ra mắt năm 2010, được phát triển boi Shay Banon bằng ngôn ngữ
Java, là mã nguồn mở theo giấy phép Apache 2.0 va phân tán thời gian thực, có khả
năng mở rộng cao và hoạt động dựa trên nên tảng Apache Lucene.
Elasticsearch có thể mở rộng lên tới hàng petabyte dữ liệu dạng có cấu trúc và
không cấu trúc Elasticsearch là một trong những công cụ tìm kiếm doanh nghiệp
rất phô biến và hiện đang được sử dụng bởi nhiều tổ chức lớn như Wikipedia, The
Guardian, StackOverflow, GitHub, [1]
2.9.1 Hiệu quả đầu tư nhanh
Elasticsearch cung cấp các API dựa trên REST đơn giản, một giao diện HTTP
đơn giản và sử dụng văn ban JSON không chứa giản đồ, giúp dé dàng bắt đầu và
dựng ứng dụng một cách nhanh chóng cho nhiều trường hợp sử dụng khác nhau
[21]
25
Trang 402.9.2 Hiệu năng cao
Bản chất phân tán của Elasticsearch giúp hệ thống xử lý song song các khối lượng
dữ liệu lớn, nhanh chóng tìm được dữ liệu phù hợp với yêu cầu của bạn [21]
2.9.3 Hoạt động gần theo thời gian thực
Hoạt động của Elasticsearch chang hạn như đọc hay ghi dữ liệu thường mat chưađầy một giây dé hoàn tat Việc này cho phép nhóm sử dung Elasticsearch cho các
trường hợp sử dụng gần theo thời gian thực như giám sát ứng dụng và phát hiện bất
thường [21]
2.9.4 Phát triển ứng dụng dễ dàngElasticsearch hỗ trợ nhiều ngôn ngữ khác nhau như Java, Python, PHP,
JavaScript, Node.Js và Go [21]
2.9.5 Công cụ va plugin bo sung
Elasticsearch được tích hop sẵn Kibana, một công cụ trực quan hóa và báo cáo
thông dụng Hệ thống cũng cung cấp khả năng tích hợp với Beats và Logstash,
trong khi cho phép ban dé dàng chuyền đổi dữ liệu nguồn và tải dữ liệu vào cụm
máy chủ Elasticsearch của bạn Bạn cũng có thé sử dụng một số plugin mã nguồn
mở của Elasticsearch chang hạn như công cụ phân tích và gợi ý ngôn ngữ dé bổ
sung tính năng cho ứng dung của ban.[21]
2.10 NextJS
2.10.1 Khái niệm
NextJS là một framework được xây dựng dựa trên React NextJS hỗ trợ
server-side rendering (SSR) mà không cần phải cấu hình gì NextJS không tập trung nhiềuvào hiệu suất mà tập trung vào cải thiện trải nghiệm của các developer và giúp
chúng ta phát trién các ứng dụng web một cách dé dang hơn SSR thân thiện với
ứng dụng web và tốt cho SEO
26