Clean architecture cũng đề xuất sử dụng các công nghệ tương thích với mục tiêu của kiến trúc này, chăng hạn như các hệ thống quản lý phụ thuộc dependency management systems và các framew
Trang 1ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA HỆ THONG THONG TIN
PHAM HO LƯỢNG - 19521814PHAN TRAN KHANH HUNG - 19521582
KHOA LUAN TOT NGHIEP
XAY DUNG HE THONG TU DONG
TONG HOP TIN TUC VA PHAN TICH NOI DUNG
BUILDING AUTOMATIC SYSTEMS
NEWS AGGREGATION AND CONTENT ANALYSIS
KY SU NGANH HE THONG THONG TIN
GIANG VIEN HUONG DAN
THS THAI BAO TRAN
TP HO CHÍ MINH, 1/2024
Trang 2THONG TIN HỘI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng cham 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 học Công nghệ Thông tin.
Trang 3LỜI CẢM ƠN
Đầu tiên, nhóm em muốn gửi lời cảm ơn sâu sắc đến giảng viên hướng
dẫn của em, cô Thái Bảo Trân, vì sự hướng dẫn, kiến thức và sự công hiến
không ngừng để giúp nhóm hoàn thiện khóa luận này Cảm ơn vì đã dành thờigian và tâm huyết dé hỗ trợ nhóm vượt qua những khó khăn và đạt được nhữngkết quả tốt nhất
Nhóm em cũng muốn bày tỏ lòng biết ơn đến toàn thé giáo viên và cán
bộ khoa Hệ Thống Thông Tin đã tạo môi trường học tập chuyên nghiệp và đầythử thách cho nhóm em Những kiến thức và kỹ năng nhóm em đã học từ quýthầy cô không chỉ đóng góp quan trọng cho khóa luận này, mà còn mang lạinhững kiến thức bồ ích cho sự phát triển của các em
Nhóm muốn bày tỏ lòng biết ơn đặc biệt đến gia đình và bạn bè, vì sựủng hộ và động viên không ngừng suốt quá trình nghiên cứu Những lời khích
lệ và niềm tin từ các bạn đã truyền động lực mạnh mẽ dé nhóm em vượt qua
những thách thức và hoàn thành khóa luận này.
Lời cảm ơn này không thể đủ để bày tỏ tất cả sự biết ơn của nhóm đốivới mọi người Nhóm em hy vọng rằng công trình này có thé là một sự ghi nhậnnhỏ bé về lòng biết ơn và lòng tôn trọng của nhóm đối với tất cả những người
đã đóng góp vào thành công của khóa luận tốt nghiệp này
Xin chân thành cảm ơn!
Nhóm sinh viên thực hiện
Phan Trần Khánh Hưng, Phạm Hồ Lượng
Trang 4MỤC LỤCDANH MỤC HÌNH - 5< 5< 52s £SsEsSEssEvsEEseEseEsstvsttserserssrssrrsrrssrssree iIJ.9J:810/0:7901627777 ii
DANH MỤC TỪ VIET TAT VÀ THUAT NGỮ .s 5- s2 ss©ss¿ iiiTOM TAT KHOA LUẬN -s- 2< s° s2 ©Ss£SsEssEssEssEEserserssssstrserssrssrssee 1Chương 1 GIỚI THIỆU -.2- 2-2 2s s£s£S££Ss£Es£Es£EssessesseEssessessss 3
LL (iö na 3
1.2 Pham vVI -Ă ST 2Q S311 ng ng HH re 3
1.3 Đối tượng sử dụng -:- 5c Sk St E2 E1 E1 1EE1011211 111111111 cke 3
1.4 Phương pháp thực hiỆn c1 2c 122211121133 E1EEEEEErrrersere 4
Chương 2 CƠ SỞ LÝ THUYÊÊT 2 s©s£ se s£EssEssEss£sseEssessesses 6
2.1 Quy trình phát triển phần mềm 2-2-2 S2 £+E£+E£+E££E££EeEEerxerxeẻ 6
2.4 Giới thiệu Docker 0 cece cccccccssscceesseccessceceesseecesseecesseeceseeceesseeeeseeeees 12 2.5 Môi trường tích hop sử MUNG cee ceseescessceseeeseeseeeeeeeeceeeeeeeseesneeaeenes 13
2.6 Công nghệ sử ụng - - c5 Tnhh ng ng nh nh nh 14
Trang 52.6.2 Backend - - - - L c k SĐT TS ST ST ng 5155 ke 16
2.6.3 Các công nghệ hỗ trợ 2-52 St22+22t2E2xerxerxerxerrerrrrrrree 17
Chương 3 PHAT TRIEN HE THÓNG -2- 2s secse©ssessesseessss 19
3.1 Khảo sát hiện trạng, yêu CẦU SH ST HE E1 121 1111111111151111 115111 19
3.1.1 Khảo sát các hệ thống tương tự hiện hiện có - 2 25+ 193.1.2 Cac chức năng theo yêu cầu - ¿+52 +E++E+£EeEEeEEeErrrrerrered 213.2 Phan tích thiết kế hệ thong - 2+ 2++++EE+EEt2E2EEEEEerErrrerrkrrxees 22
3.2.1 Thiết kế hệ thống -2¿©52+EE+EE£EESEEEEEEEEEEEEEErrrrrkrrree 22
3.2.2 Sơ đồ trường hợp sử dụng của các đối tượng (Usecase Diagram) 243.2.3 Danh sách các tác nhân của hệ thống . : z-5z 243.2.4 Danh sách các usecase của hệ thống: - 2 + s+c+zezxered 253.2.5 Sơ đồ hoạt động (Activities Diagram) -csccce+c+rscrxee 58
3.2.6 So đồ trình tự một số chức năng chính (Sequence Diagram) 603.2.7 Sơ đồ lớp (Class Diagram)) -¿- s+x++x+E+Eerkerxerrerrxerxee 68
3.2.8 Anh xạ từ sơ đồ lớp thành lược đồ cơ sở dữ liệu vật lý: 733.3 Thiết kế giao điện -ccctEt 2E 1021111211211 21 11211111111 ty 79
3.3.1 Giao diện hệ thống -¿-++©2++2+++EESEEtEEEEEsrkrrrrerkree 79
3.3.2 _ Giao diện Ứng dỤng -c tt n* SH HT HH ng re, 82
Chương 4 KET QUA VÀ ĐỊNH HUONG PHAT TRIÉN 85
AL Kết quả thu dug o.ocecceccceccecccssessesseessessessesssessessesssessessesseesessssssesseeseeaseeses 85
4.2 Định hướng phat trién oo cecccccccessesesessessessessessessesssesseesessessseseseeseess 87
4.3 Bảng phân công công vVIỆC - - 5s HH ng ng như 87 31080002225 90
A _ Giao điện hệ thống -2¿©22+222k+EE2EEEEEEEEEEEEEEEEEEEErkrrrrrrvee 90
Trang 6A.I _ Giao diện đăng nhập của hệ thống — 90
A.2 _ Giao diện trang giới thiỆU - 5 6 5 2+ Sx SEvesrrirskrrkre 90
A.3 _ Giao diện trang chủ của hệ thống ¿2 scs++£z+£zxered 92
A.4 — Giao diện trang bookimarK - ¿+ s-s + s**+++eeEseeerseeerrseres 93
A.5 Giao diện trang thư vIỆn - + c + ts+ 3S tirerirerrrrerrrrske 93 A.6 _ Giao diện trang ỞỌC SaU - St S3 ghen 94
A.7 Giao diện danh sách bài báo 2< - 5 5 S221 seeeeess 95
A.8 _ Giao diện chỉ tiẾt SOUFC€ - ¿St tSk+EEESEEEEEEESEEEkrEerkerrrkrrees 95
A.9 _ Giao điện thêm nguồn mới 2- 2 +¿++++++zx++zx+zx+zrszeex 95A.10 Giao diện kết quá scan RSS -©ccccc+cxcrxerreersree 96A.1I Giao diện chỉ tiết bài báo sau khi thu thập .cc.cccesexes 98
A.12 Giao diện quản lý CrOfnJOb 5 xxx SssEssrsrseskerkre 98
B Giao diện Ứng dung oe eceecececceseeesesecceseeeseeeceeseeeseceseceeeseenseesseeeeeas 99
B.1 Giao diện đăng ky mobile oo eee cece ceeeeeeseeeeeeeeseeeeseeeeens 99
B.2 Giao diện đăng nhập mobiÏe 5 scs«£s£+s+sesssseeske 100
B.3 Giao diện đổi mật khẩu và vô hiệu hóa tài khoản mobile 101B.4 Giao diện chi tiết một bài báo mobile 2-5 s cx+serxee+ 103
B.5 Giao diện trang đọc sau mobIÏÌe - 5 +5 + *+++sexssxeerses 104 B.6 Giao diện trang home mobile s5 + + + +++svxssexseexss 105
Trang 7DANH MỤC HÌNH ẢNH Hình 2.0 Mô tả kiến trúc clean architeCfUFe - 2: ¿52 £+++£x+£xtzEzzxerxerxezes 9
Hinh 2.1 Logo 0ivvcưệgIaađ - 12
Hình 2.2 Logo Visual Studio Code ccecceccessesssesseeseeeseeeseeseesseeeseeseesseeseeeseeseeens 13 p0): 800500051117 14
Hinh 02 50).c10=x¬a.°°.ễ".'- 14
Hinh 2.5 Logo Typescript 101777 15
Hinh 2.6 Logo Nextss wo eee ốốằốỐ 15 Hình 2.7 Logo Golang ie eecessssessecseceecseceseesessessecsecseceesesseeseseeseaeesesseeesaeeneens 16 Hình 2.8 Logo PostgreSQL, c1 2112211121111 11 1111 11191 1H 1H vn ky 16 Hình 2.9 Logo Gin FraIm€WOFEK - - + + 1k vn HH nh nh nưệt 16 Hình 2.10 Logo S€TIẨTY 2c 0 20111192199 1119111901111 HH Hy 17
Hình 2.11 Logo Service WOTK€T óc c1 1361139111911 9111 1 11g vn ky 17
Hình 3.0: Mô hình tổng quan hệ thống 2-2 2£ +£2££2££2£E+£E+£E£zEe+rxsred 22 Hình 3.1: Cấu trúc thư mục hệ thống backend theo kiến trúc Clean Architecture 23 Hình 3.2 Sơ đồ usecase ¿2c 22 222122111121 ri 24 Hình 3.3 Sơ đồ hoạt động thu thập thông tin -2- 2 5¿22+2x++zxe+rxezred 58 Hình 3.4 Sơ đồ hoạt động thêm mới trang báo - + 2 2s s+£++£++£++xe+xez 59 Hình 3.5 Sơ đồ trình tự tạo CraWÏ€T -¿- - St xxx +EEEEEEEEEEEEEEEEEEEkrkrkererkrkrrrree 60 Hình 3.6 Sơ đồ trình tự quản lý Feed - + + +2 £+E£E££EerEerxerxerxrrxzrerree 61 Hình 3.7 Sơ đồ trình tự quản lý bài báo -¿ 2¿25¿22++2x++cx2zxrzreerxeerxesred 62 Hình 3.8 Sơ đồ trình tự quản lý CrawwÏer - 2 2 x+E+zE2E++EEerxerxezrssrkeree 63 Hình 3.9 Sơ đồ trình tự quản lý CategOFy - ¿- +52 2+E‡EcEEeEEeEEEEEEkrrerrerree 64 Hình 3.10 Sơ đồ trình tự quản lý Topic ¿©2252 x+2E2E£+EEtEEcrxezresrxered 65
Trang 8Hình 3.11 Sơ đồ trình tự quản lý Role - 5-2 22x+£E£E++EE+zEcrxezresrxrred 66Hình 3.12 Sơ đồ trình tự quản lý người dùng -¿- 5¿©2x2x++zxeerxesred 67Hình 3.13 Sơ đồ lớp quản lý craw Ïer - - 2c + s+S++E++E££E££EeEEeExeExerkrrxrrerree 68Hình 3.14 Sơ đồ lớp quản lý bài báo 2-2 5+ £+S£+EE+£E£E++EEtrxerxerrerrxrred 69Hình 3.15 Sơ đồ lớp quản lý feed - ¿+52 s+2£+E2E£EE2EEEEEEEEEkerkrrrrerrrree 70Hình 3.16 Sơ đồ lớp quản lý người dùng - 2-2 2+ z+Ee£Ee£xerxexerxrrezrerree 71Hình 3.17 So đồ lớp quản ly permission va role -2- 222 s++zxzzz+zz+re+ 71Hình 3.18 So đồ lớp quan lý thé loại (categOry) - 2-2222 £+z++zxzxz+cssred 72Hình 3.19 Sơ đồ lớp quản lý chủ dé (OpiC) - 2 2 + 5s2£2+££+£xezxzxezrxered 72Hình 3.20 Database hệ thống ¿2+¿2+£©522522x22EEEEEEEEESEkerkkerkrerkerred 73
Hình 3.21 Giao điện tao CfaWÏ€T c2 2111123232111 11 1111195111111 c2 rrẻ 79
Hình 3.22 Giao diện popup gợi ý người dùng - 5 +5 ++sx++sseeseeseeske 80
Hình 3.23 Giao diện trang tìm kiếm feeds - 2-2-5 2E22EEeEEerxerrerrkrred 81Hình 3.24 Giao diện trang tìm kiếm với tùy chọn -. ¿ ¿++cs++cxz+z+¿ 81
Hình 3.25 Giao diện trang thư viện mobIÏe - - 55555322 **+*++v++e+ereexeerssxe 82
Hình 3.26 Giao diện trang thêm crawler mobiÏe€ 55s ++s‡++x+sx+sexsessss2 83
Hình 3.27 Trang lịch sử bài báo xem gần đây mobile - : 2 ¿- ¿5552 84Hình 4.0 Giao diện đăng nhập của hệ thống 2- 2© 22522 E+£E+zEzE+rxsred 90
Hình 4.1 Giao diện trang giới thiỆU c2 22+ E*EEEEeEEteereerrsrrrrrske 91
Hình 4.2 Giao diện trang chủ của hệ thống - 2-2 2 ©2E++E£+EEerxzEezrsrred 92
Hình 4.3 Giao diện trang bookimarK - c +s +3 *+ + EEexeerererrrrrererrrrxre 93 Hình 4.4 Giao diện trang thư VIỆN G6 S11 v E2 1191119111 vn ng nh rưkp 94
Hình 4.5 Giao diện đọc SaU - 2E E21 12223111 1111 9331111 119955311 kg re 94 Hình 4.6 Giao diện danh sách các bài báo 2+5 52222 **+++zscezeeeeeszeeee 95
Trang 9Hình 4.7 Giao diện chi tiẾt SOUTC€ - St StềE+EEEESEEEEEEEEEEEEEEEEEEErrkererkerves 96Hình 4.8 Giao diện trang thêm nguồn mới -2- 2 +¿+zx>x++zx++rxezzed 96Hình 4.9 Giao diện kết qua scan rS$ c.ccccsccescsssesesseesessessessessessesecsesseesessessesseseseeees 97Hình 4.10 Giao diện chỉ tiết bài báo sau khi thu thậẬp - re 98
Hình 4.11 Giao diện quản lý crofnJOB .- c 35+ 33+ EEvrersrerrrrrrrrrrrrrxre 99
Hình 4.12 Giao diện đăng ký mobIÏ€ - c5 2333 **E+EEsexrereeersserrsrs 100
Hình 4.13 Giao diện đăng nhập mobile - 6 + svesersersersrs 101
Hình 4.14 Giao diện đổi mật khẩu và vô hiệu hóa tải khoản mobile 102Hình 4.15 Giao diện chi tiết một bài báo mobile -¿- s5 ezx+xerx+xerxrrs 103
Hình 4.16 Giao diện trang đọc sau mobIÏ€ - - c3 s*++‡++sesseexeeesresess 104
Hình 4.18 Giao diện trang home moObIÏe - - 2 22333 *+3£+*EE+e+eereeereeeresrss 105
Trang 10DANH MỤC BANG
Bang 3.1 Danh sách các tác nhân của hệ thống - ¿2 + 22s s+£zzsze: 25
Bang 3.2 Danh sách các usecase của hệ thống - 2 2 2 +sx+£++£++E+zEzzzei 27
Bang 3.3 Luồng sự kiện đăng nhập - 2-2 5£+Ez+EE‡EEeEEEEEEEEEEErErrrkrrkrrkee 27
Bảng 3.4 Lung sự kiện đăng nhập với apple - 2-2-5252 £+zxsrxzxszrsered 28 Bảng 3.5 LuOng sự kiện đăng xuẤt ¿2-52 2St22x 2222322 2ExE2EEEEEcrkerrree 28 Bảng 3.6 Luồng sự kiện xuất đafaset -©22- 552222 22x22 xeEEerkrerkrrrree 29 Bang 3.7 Lung sự kiện thêm RSS crawÌer 2-2 2 2+E£Ee£xeEzEzEzxerxees 30 Bang 3.8 Ludng sự kiện thêm custom €raWÌ€r 2: 2 2 +xecxeE++E+EzEezxeei 31
Bảng 3.9 Luéng sự kiện thêm crawler chỉ tiết bài báo -2- 5 s2 s52: 32
Bang 3.10 Ludng sự kiện tìm kiếm feeds theo từ khóa - 5 s5: 33 Bảng 3.11 Ludng sự kiện tìm kiếm feeds theo topic : -¿©+csz+cscss+¿ 34
Bảng 3.12 Luồng sự kiện lọc kết quả tìm kiếm feeds theo ngôn ngữ 35
Bảng 3.13 Ludng sự kiện theo đối feed -: 2¿©2+55+2cx2zxvzxesrxesrxerreee 35 Bảng 3.14 Luồng sự kiện xem đanh sách xem sau -: 5 52 c5¿2cxz55s+¿ 36 Bảng 3.15 Luéng sự kiện xem lịch sử đọc báo - - << <5 +2 ccsssexs 36 Bang 3.16 Luông sự kiện thêm bài báo vào danh sách “xem sau” : 37
Bang 3.17 Luông sự kiện xóa bai báo khỏi danh sách “xem sau” . 38
Bảng 3.18 Luồng sự kiện khám phá các bài báo đang hot trong ngày 38
Bảng 3.19 Luéng sự kiện xem tat cả bài báo của các feed đã follow 39
Bang 3.20 Luong sự kiện xem báo theo feed - 2-52 z+s+xereEzEzErrervees 39 Bảng 3.21 Ludng sự kiện sắp xếp bài báo ©2¿-55¿2cxc2zxerxesrxesrxerreee 40 Bảng 3.22 Luồng sự kiện lọc các bài trùng - 2-2 s©x2E2+EE+EEerxerresrxrred 41 Bang 3.23 Luong sự kiện tìm kiếm các bai báo theo feeds đã theo dõi 41
Trang 11Bảng 3.24 Lung sự kiện tìm kiếm bài báo theo feed -: -¿-5s+¿ 42
Bảng 3.26 Luong sự kiện đến trang nguôồn báo - 2 2 5 x+cs+£szc+zxezszei 43Bảng 3.27 Luéng sự kiện tải toàn bộ nội dung báo - 5 s5 + +++sxs++sxss+ 44
Bang 3.28 Luông sự kiện AI tổng hợp bài báo + ¿5c s+cs+c++zzzzzeccee 45
Bảng 3.29 Luong sự kiện theo dõi lỗi hệ thống - ¿5+ s+c2+£++c+z£zzszei 45Bảng 3.30 Luồng sự kiện tìm kiếm crawWÏer -:- + s+s+E+EEE+E+ESEE+E+EeEErEsrsrsreee 46
Bang 3.31 Lung sự kiện xóa craWÏ€r- :- 5c ©52++z+EEeEE2EEEEEEEerErrkrrkerxee 46
Bảng 3.32 Ludng sự kiện chỉnh sửa crawÌer :2-©5+22+2z++zx+zzxezrxerseee 47Bảng 3.33 Ludng sự kiện lên lịch craw1 . ¿- ¿+ ©5+2cx++z++zxesrxesrxesreee 48Bảng 3.34 Luong sự kiện sửa thông tin feed -s- 2 2 2+se+kerxeEeEzrsrrerreee 48Bảng 3.35 Ludng sự kiện xóa feeds ©22- 522 22x2EE2EESEEEEEerkerkrerkerrree 49
Bảng 3.36 Luồng sự kiện xóa bài báo - 2 5c S22 EvEEEEEEEEEEEEEerkrrrrrrkrred 50
Bảng 3.37 Ludng sự kiện thêm thể loại : 2¿©+©5+2c+++++zx+zzxezzxzreee 50Bảng 3.38 Ludng sự kiện tìm kiếm thê loại 2 5¿©+++++£x++zxezzxezseee 51Bang 3.39 Luong sự kiện sửa thong tin thé loại c ceeecececcesseseeseeseesesesesseseeseaees 51Bảng 3.40 Ludng sự kiện xóa CateQOry c.scccsesssesssesssesssssseessecssesssessecssecssecstessecsses 52Bang 3.41 Lung sự kiện thêm chủ d6 cc.cecccecccseesessessesssessessesseessessessessesesseess 53Bảng 3.42 Luong sự kiện tìm kiếm chủ dé - 2-2 2 2+s£Ee£xe£+EzEzxrsees 53Bang 3.43 Luong sự kiện sửa thông tin chủ đề - 2-22 2 s+cx+£xzzzzxssrxee 54Bảng 3.44 Luồng sự kiện xóa chủ đề 2-2-5 £+S22EE9EEEEEEEE2EEEEEerErrkrrkrred 54Bảng 3.45 Luồng sự kiện xem danh sách người đùng -¿-s¿5+¿ 55Bảng 3.46 Lung sự kiện tìm kiếm người dùng ceccecccecccsssessesstessecssecstecseesseesees 55Bảng 3.47 Luong sự kiện sửa thông tin người dùng 2-52 scscs+cze: 56
Trang 12Bảng 3.48 Ludng sự kiện xem danh sách roles 2- 2 5¿©5+2s+2cx++zxzcsseẻ 56Bảng 3.49 Luồng sự kiện thêm role 2-22 5¿+2++2E++£E+2Ex+2E+vzx+zrxesrxerseee 57Bảng 3.50 Luông sự kiện chỉnh sửa permission của role - 2-2-5: 57
Bảng 4.0: Phân công công VIỆC - - 2c 1 1121113111911 1181111 11 8 11H vn ng re 88
Trang 13DANH MỤC TU VIET TAT VÀ THUẬT NGỮ
1 RSS (Rich Site Summary hoặc Really Simple Syndication): một công cụ g1úp
bạn theo dõi các cập nhật mới nhất từ các trang web bạn quan tâm mà không cần
phải truy cập từng trang web đó Day là một tiện ích hữu ích nêu bạn muốn cập nhậtthông tin nhanh chóng từ nhiều nguồn khác nhau
2 Feed: một nguồn cung cấp thông tin định ky từ một trang web hoặc nguồn dữ
liệu khác Có thê hiểu feed như là một loại "luồng" thông tin liên tục được cập nhậttừng khi có sự thay đôi mới trong nội dung Một feed có thê sử dụng nhiều định dạngkhác nhau, trong đó RSS là một trong những định dạng phô biến nhất
3 Crawler: còn được gọi là web crawler hoặc spider, là một chương trình may
tính được thiết kế đề tự động duyệt qua các trang web trên Internet, thu thập thôngtin và cập nhật cơ sở dữ liệu Crawler thường được sử dụng bởi các công cụ tìm kiếm
đê tạo ra các chỉ mục trang web và cung câp kêt quả tìm kiêm.
4 CSDL: Co sở dữ liệu là một tập hợp có tô chức của đữ liệu, thường được lưutrữ và quản lý trong máy tính dé có thé dé dàng truy xuất và cập nhật Mục tiêu của
cơ sở đữ liệu là lưu trữ thông tin một cách hiệu quả, giúp người dùng truy cập và thao tác dữ liệu một cách thuận tiện và an toàn.
5 JWT: viết tắt của JSON Web Token Đây là một tiêu chuẩn mở (RFC 7519)định nghĩa cách truyền thông tin an toàn giữa các bên đưới dang JSON trong một cú
pháp dễ đọc cho con người và dễ xử lý cho máy.
6 Client: hiện tại trong hệ thong va báo cao nay client được hiểu là giao hiện của
hệ thống do thiết kế theo hệ thống clean architecture và client & server
Trang 14TOM TAT KHÓA LUẬN
Trong thế giới ngày nay, khi internet và các phương tiện truyền thông phát triển mạnh
mẽ, người dùng phải đối mặt với một lượng thông tin lớn đáng kể Điều này đặt ramột thách thức lớn về việc lọc và tìm kiếm thông tin có ý nghĩa từ hàng tỷ dòng tintức, bài báo và nguồn thông tin trên mạng Đồng thời, sự gia tăng về độ phức tạp củanội dung thông tin yêu cầu kha năng phân tích sâu sắc dé dam bảo hiểu rõ bối cảnh
và ý nghĩa thực sự của thông tin đó Do đó, đề tài “Xây dựng một hệ thống tự độngtong hop tin tức và phân tích nội dung” với mong muốn phát triển một hệ thống giúpgiải quyết các vấn đề trên
Mặt khác, dựa trên tính toán về thời gian và thực lực đầu tư vào khóa luận tốt nghiệp,nhóm chúng em tập trung hướng đến là một hệ thống đa nền tảng chạy trên cả Web
và thiết bị di động Hệ thong bao gồm các tiện ích:
+ Cung cấp thông tin đa dạng: Hệ thống giúp người sử dụng tiếp cận thông tin từ
nhiều lĩnh vực khác nhau như chính trị, kinh doanh, khoa học, công nghệ, giải trí,
thé thao, va sức khỏe Điều này giúp họ duyệt qua nhiều nguồn tin khác nhau ma
không cần phải kiểm tra từng trang web riêng lẻ
+ Cập nhật thông tin hàng ngày: Người sử dung có thé đặt lịch trình đọc tin tức
hàng ngày và nhận cập nhật về các sự kiện quan trọng, xu hướng mới, và thông
tin nóng hôi từ các lĩnh vực quan tâm của họ.
<= Phân loại tin tức: Ứng dụng có thé phân loại tin tức theo các danh mục cu thể như
chính trị, kinh doanh, khoa học, để người sử dụng có thể dễ dang tìm kiếm và đọctin từ lĩnh vực mong muốn
+ Giao diện thân thiện và dé sử dụng: Ứng dụng có giao diện người dùng thân thiện
và dễ sử dụng giúp người đọc duyệt tin tức một cách thuận lợi và hiệu quả.
+ Theo dõi sự kiện thé thao: Dành riêng một phan cho những người yêu thích thé
thao, cung cấp cập nhật hàng ngày và nhận định về các sự kiện thé thao quan
trọng.
Trang 15Sau quá trình miệt mài tìm hiểu, thực hiện cài đặt và thiết kế hệ thống, nội dung được
trình bày trong bài báo cáo là những thành quả mà nhóm đã đạt được trong thời gian
qua Báo cáo khóa luận gồm 4 chương và phan phụ lục:
- Chương 1: Gidi thiệu
- Chương 2: Cơ sở lý thuyết
- Chương 3: Phát triển hệ thống
- Chương 4: Kết quả và định hướng phát triển
- Phụ lục
Trang 16Chương 1 GIỚI THIỆU
1.1 Mục tiêu
Mục tiêu chính của dé tài là xây dựng một hệ thống tự động tổng hợp tin tức từ
nhiều nguồn khác nhau và phân tích nội dung một cách thông minh Hệ thống sẽ hỗtrợ người sử dụng trong việc thu thập thông tin đa dạng, đồng thời cung cấp khả năngphân tích và tóm tắt thông tin một cách tự động, giúp chúng ta tiết kiệm thời giantrong quá trình đọc tin và tìm kiếm thông tin cần thiết
1.2 Phạm vi
Phạm vi của đề tài sẽ bao gồm các công đoạn chính như sau:
Thu thập dữ liệu: Kết nối với các nguồn tin tức khác nhau đề thu thập dữ liệu đa
dạng và phong phú.
+ Xử lý dữ liệu: Áp dụng kỹ thuật xử lý ngôn ngữ tự nhiên hỗ trợ phân tích và tóm
tắt nội dung tin tức một cách tự động
+ Tổng hợp tin tức: Sử dụng công cụ AI dé tạo ra các ban tóm tắt có ý nghĩa
Với những mục tiêu và phạm vi này, đề tài hy vọng sẽ đóng góp vào việc cải thiệnquá trình quản lý và sử dụng thông tin trong môi trường số ngày nay
1.3 Đối tượng sử dụng
~ Người đọc tin tức hàng ngày:
Y Dự án là một nguồn thông tin cho những người muốn cập nhật những sự kiện
quan trong từ nhiều lĩnh vực khác nhau trong một nền tang duy nhất
Y Đối với những người đọc không có thời gian theo dõi nhiều nguồn tin, dự án
cung cấp một giải pháp thuận tiện dé truy cập thông tin hàng ngày
~ Người theo dõi tin tức khoa học và công nghệ:
Y Đối với cộng đồng yêu thích khoa học và công nghệ, dự án cung cấp thông
tin mới nhât vê các phát triên nôi bật trong các lĩnh vực này.
Trang 17VY Bằng cách này, người đọc có thé duyệt qua những bài viết chuyên sâu và tiếp
cận thông tin chỉ tiết về các đột phá khoa học và công nghệ
Y Có thé tận dụng hệ thống như một công cụ thu thập dtr liệu dataset cho các
nghiên cứu.
+ Doanh nhân và nhà dau tư:
Y Doanh nhân và nhà đầu tư có thé tận dụng dự án dé theo dõi thông tin kinh
doanh và tìm kiêm cơ hội đâu tư tiêm năng.
VY Tin tức về thị trường, xu hướng kinh tế và đánh giá từ chuyên gia từ các
nguồn tin sẽ giúp ho đưa ra các quyết định thông minh
+ Người quan tâm đến sự kiện thé thao: Với phủ sóng đa dạng về thé thao, dự án
là một nguồn tin đáng tin cậy cho người hâm mộ thê thao, cung cấp cập nhật hàng
ngày về các sự kiện thê thao.
1.4 Phương pháp thực hiện
Việc thực hiện dự án có thê được chia thành một loạt các bước quan trọng dé
đảm bảo rằng đáp ứng được yêu cầu Dưới day là các bước phương pháp thực hiện
dự án:
+ Xác định Yêu Cầu:
Y Tìm hiểu rõ về yêu cầu của đối tượng sử dụng và đặt ra những mục tiêu cụ
thể cho dự án
v Xác định các chức năng chính cần có, các danh mục tin tức, và tính năng đặc
biệt như hệ thống phân tích bài viết
<> Xác định cấu trúc HTML và điểm chung cho crawler:
v Tìm hiểu cau trúc HTML của trang web mục tiêu bang cách sử dụng trình
duyệt va công cụ như "Inspect".
v Xác định các thẻ HTML và lớp CSS chứa thông tin quan trọng như tiêu dé,
nội dung, thời gian đăng, và tác giả.
Trang 18Vv Xác định điểm chung giữa các trang web tin tức dé tạo ra một mô hình chung
cho crawler Điều này có thể bao gồm việc xác định các quy tắc CSS hoặc
xây dựng các biểu thức chính quy (regular expressions) dé xác định URL của
các bài viết tin tức
Thiết kế cơ sở dữ liệu:
Vv Xây dung cơ sở dữ liệu dé lưu trữ thông tin tin tức một cách hiệu quả
v_ Thiết kế cơ sở dit liệu phải hỗ trợ việc phân loại tin tức theo các danh mục,
nguồn, thời gian và các tiêu chí khác
Phát triển giao điện người dùng:
+ Xây dựng giao diện người dùng thân thiện va dé sử dụng.
* Cung cấp các tính năng tìm kiếm, lọc, và đề xuất thông tin để cải thiện trải
nghiệm người dùng.
Thử nghiệm và tối ưu hóa:
v Thử nghiệm crawler trên một sỐ trang web khác nhau dé dam bảo nó hoạt
động chính xác và hiệu quả.
¥ Tôi ưu hóa mã nguôn của crawler dé đảm bảo tôc độ thu thập dữ liệu và giảm
nguy cơ bị chặn từ các trang web.
Triển khai và kiểm thử:
Triển khai hệ thống và thực hiện các bước kiểm thử chất lượng để đảm bảotính ôn định va an toàn
Y Kiểm thử tích hợp và kiểm thử hệ thống dé dam bảo tất cả các thành phan
hoạt động hiệu quả với nhau.
Theo dõi và tối ưu hóa:
vx Thiết lập các công cụ theo dõi hiệu suất dé đánh giá sự sử dụng của người
dùng và hiệu suất hệ thống
Trang 19*⁄ Dựa vào phản hồi từ người dùng và dữ liệu theo déi dé tối ưu hóa trải nghiệm
người dùng và cải thiện tính ôn định
Chương 2 CƠ SỞ LÝ THUYET
2.1 Quy trình phát triển phan mềm
Mô hình Waterfall là một mô hình phát triển phần mềm tuần tự và tuyến tính,
được sử dụng để quản lý các dự án phần mềm Mô hình này được phát triển vào cuối
những năm 1970 bởi Winston Royce và trở thành một trong những mô hình phát
triển phần mềm cổ điền và phổ biến nhất [1]
Mô hình Waterfall chia dự án thành các giai đoạn liên tiếp, và mỗi giai đoạn chỉ
bắt đầu sau khi giai đoạn trước đó hoàn thành Các giai đoạn chính trong mô hìnhWaterfall bao gồm:
- _ Yêu cầu: Giai đoạn này tập trung vào việc thu thập và hiểu rõ các yêu cầu của
dự án từ khách hàng Các yêu cầu này được mô tả trong tài liệu yêu cầu
(requirements document).
- Phan tích: Giai đoạn này liên quan đến việc phân tích các yêu cầu đã thu thập
được trong giai đoạn trước Các yêu cầu sẽ được phân tích chỉ tiết để xác định
cách thức thực hiện và cung cấp giải pháp
- _ Thiết kế: Giai đoạn này tập trung vào việc thiết kế hệ thống phần mềm Các
thiết kế chi tiết được tao ra cho các thành phần phần mềm, cấu trúc cơ sở dữ
liệu, giao diện người dùng và các khía cạnh kỹ thuật khác.
- Lap trình: Giai đoạn này thực hiện việc lập trình va triển khai các thành phần
phần mềm dựa trên thiết kế đã hoàn thành
- _ Kiểm thử: Giai đoạn nay tập trung vào việc kiểm tra tính hoạt động, tính năng
và chất lượng của phần mềm Kiểm thử được thực hiện để đảm bảo rằng phầnmềm hoạt động theo các yêu cầu đã đề ra và đáp ứng mong đợi của khách
hàng.
- Triển khai: Giai đoạn này liên quan đến việc triển khai phần mềm vào môi
trường sản xuất hoặc chuyền giao cho khách hàng
Trang 20- Bảo trì: Giai đoạn này xảy ra sau khi phần mềm đã được triển khai và bao
gồm các hoạt động bảo trì, sửa lỗi và nâng cấp
Mô hình Waterfall có những ưu điểm như rõ ràng, dé hiểu và dé quản lý quytrình phát triển Tuy nhiên, nó cũng có nhược điểm là cần phải đợi đến cuối giai đoạn
dé có thé thấy kết quả và không linh hoạt khi cần thay đổi yêu cầu hay sửa lỗi Do
đó, trong những năm gần đây, các mô hình phát triển phần mềm linh hoạt như Agile
va Scrum đã trở nên phô biến hơn va thay thé cho mô hình Waterfall trong nhiều dự
án phần mềm
2.2 Giới thiệu về RSS
RSS (Rich Site Summary hoặc Really Simple Syndication) là một công cụ giúp
bạn theo dõi các cập nhật mới nhất từ các trang web bạn quan tâm mà không cầnphải truy cập từng trang web đó Đây là một tiện ích hữu ích nếu bạn muốn cập nhậtthông tin nhanh chóng từ nhiều nguồn khác nhau
RSS có nguyên tắc là tối giản và rút gọn nội dung trên các trang web tin tức vàblog Các thông tin không cần thiết như định dạng trang trí, hình ảnh hay các thôngtin khác có thé bị loại bỏ
Những thông tin còn lại được hiển thị theo một định dạng chuẩn, giúp người
đọc dé dàng theo dõi và năm bắt nội dung bài viết một cách nhanh chóng Nhữngthông tin quan trọng được giữ lại thường bao gồm:
- Đường dẫn tới bài viết đầy đủ
- Nội dung tóm tắt
- Ngày tháng
- Tác giả
- Tiêu đềHiện nay, hầu hết các trang web tin tức và blog đều hỗ trợ RSS, bao gồm cáctrang web được xây dựng trên nền tảng WordPress, Joomla và Drupal Nên bạn có
Trang 21thé dé dàng đăng ký và đọc các tin tức mới nhất từ các trang web yêu thích bang phanmềm đọc RSS như Feedly, NewsBlur hay Inoreader.
2.3 Kiến trúc Clean Architecture
2.3.1 Giới thiệu
Clean Architecture là một kiến trúc phần mềm được đề xuất bởi tác giả Robert
C Martin trong cuốn sách "Clean Architecture: A Craftsman's Guide to Software
Structure and Design" Kiến trúc này được thiết kế dé tách biệt giữa các lớp va giảmthiểu sự phụ thuộc giữa chúng
Theo clean architecture, phan mềm nên được chia thành các lớp phụ thuộc lẫnnhau theo cap độ trừu tượng và độ ôn định Kiến trúc này đề xuất sử dung DependencyInversion Principle (nguyên tắc dao ngược phụ thuộc) dé giam thiéu su phu thudc
giữa các lớp Điều này cho phép các lớp có thé dé dàng thay đổi mà không gây anhhưởng đến các lớp khác
Clean architecture cũng đề xuất sử dụng các công nghệ tương thích với mục
tiêu của kiến trúc này, chăng hạn như các hệ thống quản lý phụ thuộc (dependency
management systems) và các framework với khả năng tách biệt lớp (layer separation).
Trang 222.3.2 Mô tả
The Clean Architecture
|_| Enterprise Business Rules
_ | Interface Adapters
[_ | Frameworks & Drivers
Hình 2.0 Mô tả kiến trúc clean architecture
2.3.3 Tang Entities
Tang entities là một trong những tang quan trọng của kiến trúc Clean
Architecture Tầng này chứa các đối tượng (objects) và các cấu trúc dit liệu (data
structures) của hệ thống
Entities biéu diễn các khái niệm cốt lõi của hệ thống và chứa các thuộc tính vàphương thức liên quan đến chúng Chúng có thể bao gồm các đối tượng như kháchhàng, sản phẩm, đơn hàng, v.v Cac entities có thể được sử dụng dé thực hiện các
hành động (actions) hoặc thực hiện các thao tac trên cơ sở dữ liệu.
Entities là thành phần trung tâm của kiến trúc Clean Architecture, và được địnhnghĩa và triển khai độc lập với các lớp khác của hệ thống Điều này giúp tách biệt cácphần khác nhau của hệ thống và cho phép chúng ta thay đổi hoặc cập nhật các phần
mà không ảnh hưởng đên các phân khác.
Trang 23Các entities cũng có thê chứa các phương thức và thuộc tính liên quan đến việckiểm tra tính hợp lệ (validity) của các đối tượng, đảm bảo tính nhất quán và độ tincậy của hệ thống 11 - Tang entities là một phan quan trọng trong Clean Architecture
và giúp tách biệt và đơn giản hóa các thành phần của hệ thống, cải thiện tính mở rộng
và bảo trì của hệ thống trong thời gian dai
2.3.4 Tầng Repository
Tang repository là một trong những tầng quan trọng của kiến trúc CleaArchitecture Tang này chứa các logic dé truy cập và lưu trữ dit liệu trong hệ thống
Tầng repository có trách nhiệm thực hiện các hoạt động đọc và ghi dữ liệu vào
cơ sở dữ liệu hoặc bất kỳ hệ thông lưu trữ nào khác Tầng này cung cấp một giao diện
dé tang use case (hay còn gọi là tang services) có thé giao tiếp với dữ liệu, bao gồm
các phương thức đê thêm, sửa, xóa và truy vân dữ liệu.
Tầng repository cũng giúp tách biệt tầng use case khỏi các chỉ tiết về cơ sở dữliệu và cách lưu trữ Điều này cho phép chúng ta dễ dàng thay đổi cơ sở dữ liệu hoặc
hệ thống lưu trữ mà không ảnh hưởng đến các tang khác trong hệ thong - Một điểmđáng lưu ý khi triển khai tang repository là cần xác định rõ kiểu dữ liệu mà tang nàytruy cập và thao tác, cũng như cách mà tầng này phải sử dụng dé lưu trữ và truy xuất
dữ liệu.
Thông thường, tầng repository sử dụng các công nghệ lưu trữ như cơ sở đữ liệu
quan hệ (relational database), cơ sở dữ liệu NoSQL hoặc các hệ thống lưu trữ khác
Tầng repository là một phần quan trọng trong Clean Architecture và giúp táchbiệt tầng use case khỏi các chỉ tiết về cơ sở dữ liệu và cách lưu trữ, cải thiện tính mởrộng và bảo trì của hệ thống trong thời gian dài
2.3.5 Tầng Services (Use cases)
Tang use case (hay còn gọi là tang services) là một trong những tang quan trongcủa kiến trúc Clean Architecture Tang này chứa các logic xử ly nghiệp vu chính của
hệ thống.
10
Trang 24Tầng use case có trách nhiệm xử lý các yêu cầu từ phía người dùng và thực hiệncác hành động liên quan đến nghiệp vụ Nó định nghĩa các use case (chức năng) của
hệ thong va bao gom các phương thức để thực hiện các thao tác trên đữ liệu (doc, ghi,
sửa, xóa).
Tầng use case tương tac với tang entity dé truy cập dữ liệu va thực hiện các thaotác liên quan đến nghiệp vụ Nó cũng có thể gọi các phương thức từ tầng repository
dé lay đữ liệu từ cơ sở dữ liệu hoặc hệ thống lưu trữ khác
Tầng use case cũng giúp tách biệt tầng giao diện người dùng (user interface)khỏi các logic nghiệp vụ, cho phép chúng ta thay đôi hoặc cập nhật giao diện ngườidùng mà không ảnh hưởng đến các logic xử lý nghiệp vụ
Một điểm quan trọng khi triển khai tầng use case là xác định rõ các yêu cầu vànghiệp vụ của hệ thong, đồng thời đảm bảo rang các logic xử lý nghiệp vụ được triểnkhai đúng và đầy đủ
Tầng use case là một phần quan trọng trong Clean Architecture và giúp tách biệttầng giao diện người dùng khỏi các logic nghiệp vu, cải thiện tính mở rộng và bảo trìcủa hệ thống trong thời gian dài
đó trả về kết quả cho tầng giao diện người dùng
Tang handler có thé sử dụng các framework và thư viện dé xử lý các yêu cầu từngười dùng, như HTTP request, WebSocket connections, hoặc các yêu cầu từ CLI
(command-line interface).
11
Trang 25Một điểm quan trọng của tầng handler là xác định rõ các yêu cầu và thực hiện
chúng bằng cách sử dụng các phương thức từ tầng use case Điều này đảm bảo rằng
các logic nghiệp vụ được triển khai đúng và đầy đủ
Tang handler cũng giúp tách biệt tang use case khỏi tang giao điện người dùng,giúp cải thiện tính mở rộng và bảo trì của hệ thống trong thời gian dài
2.4 Giới thiệu Docker
Docker là một nền tang ảo hóa cấp container (containerization) cho việc phattriển, triển khai và chạy ứng dụng Nó cho phép đóng gói tất cả các thành phần củamột ứng dụng vào một container độc lập với hệ thông máy tinh chủ
Hinh 2.1 Logo docker
Với Docker, một container có thê được xem như một môi trường ảo hóa độc
lập, bao gồm cả ứng dụng và tat cả các thư viện và phụ thuộc cần thiết dé chạy ứng
dụng Điều này giúp đơn giản hóa quá trình triển khai ứng dụng, đồng thời đảm bảo
tính đồng nhất của môi trường chạy ứng dụng giữa các môi trường khác nhau, từ
máy tính cá nhân cho đên máy chủ đám mây.
Một trong những ưu điểm của Docker là tính di động Nhờ đóng gói ứng dụng
và các phụ thuộc vào một container độc lập, việc di chuyển và triển khai ứng dụng
giữa các môi trường khác nhau trở nên đễ dàng hơn Docker cũng giúp giảm thiêu
sự phụ thuộc vào các phần mềm khác nhau trong quá trình triển khai ứng dụng
Docker cung cấp một kho lưu trữ ảnh (image repository) cho phép chia sẻ và
quản lý các ảnh Docker được tạo bởi người dùng trên toàn thế giới Các ảnh này có
thé 13 được sử dung dé triển khai các ứng dụng phổ biến như MySQL, MongoDB,
Redis, NodeJS, Python và rất nhiều thứ khác
12
Trang 26Đề sử dụng Docker, người dùng cần cài đặt Docker Engine trên máy tính củamình Sau đó, họ có thể sử dụng các lệnh Docker CLI để tạo, chạy và quản lý các
container Docker.
2.5 Môi trường tích hợp sử dung
Môi trường tích hợp phát triển (IDE): Visual Studio Code
VISU
Coy `
Hình 2.2 Logo Visual Studio Code
Visual Studio Code (VS Code) là một trình biên tập mã nguồn mở, đa nền tang
và được phát triển bởi Microsoft, có sẵn trên Windows, macOS và Linux Nó đượcthiết kế dé hỗ trợ việc phát triển ứng dụng và các dự án phần mềm, với kha năng mở
rộng và tùy chỉnh linh hoạt.
VS Code cung cấp hỗ trợ mạnh mẽ cho nhiều ngôn ngữ lập trình và công nghệ
khác nhau Điều này bao gồm các ngôn ngữ phổ biến như JavaScript, Python, Java,C++, C#, HTML/CSS và nhiều hơn nữa VS Code cũng hỗ trợ các công cu mở rộng
và tiện ích dé mở rộng khả năng ho trợ cho các ngôn ngữ khác.
VS Code cho phép người dùng cai đặt va sử dụng các tiện ích mở rộng từ cộng
đồng, giúp tăng cường khả năng và tính năng của trình biên tập Các tiện ích mở rộng
13
Trang 27có thể cung cấp các chức năng b6 sung như gỡ lỗi, kiểm tra lỗi cú pháp, hỗ trợ cho
các framework và thư viện cụ thê, và nhiêu hơn nữa.
Khác với Visual Studio, VS Code có giao diện người dùng tối giản và dé sửdụng, với khả năng tùy chỉnh cao Người dùng có thể điều chỉnh bố cục, giao diện
và chủ dé mau sac dé tạo ra trải nghiệm phù hợp với sở thích cá nhân.
thành phần trong trang web hoặc ứng dụng, phân chia
các đoạn van, heading, links, blockquotes,
HTML không phải là ngôn ngữ lập trình, đồngnghĩa với việc nó không thê tạo ra các chức năng
“động” được Khi làm việc với HTML, chúng ta sẽsử Hình 2.3 Logo HTML5
dụng cấu trúc code đơn giản (tags va attributes) dé đánh dấu lên trang web
CSS
CSS là ngôn ngữ tạo phong cach cho trang web —
Cascading Style Sheet language Nó dùng để tạo phong cách và E ¬ ¬
định kiêu cho những yếu tố được viết dưới dạng ngôn ngữ đánh
dau, như là HTML và XHTML Nó có thé điều khiển định dang
của nhiều trang web cùng lúc dé tiết kiệm công sức cho người
viết web Nó phân biệt cách hiển thị của trang web với nội dung
chính của trang bằng cách điều khiển bố cục, màu sắc, và font >> c—m
chữ Các đặc điểm kỹ thuật của CSS được duy trì bởi World inh 2.4 Logo CSS3
Wide Web Consortium (W3C).
Tac dung cua CSS:
14
Trang 28- Hạn chế tối thiêu việc làm rối mã HTML của trang Web bằng các thẻquy định kiểu dáng (chữ đậm, chữ in nghiêng, chữ có gạch chân, chữ màu),khiến mã nguồn của trang Web được gọn gàng hơn, tách nội dung của trang
Web và định dang hién thị, dé dang cho việc cập nhật nội dung
- Tạo ra các kiểu dang có thé áp dụng cho nhiều trang Web, giúp tránhphải lặp lại việc định dang cho các trang Web giống nhau
Typescript
TypeScript là một ngôn ngữ lập trình được phát triển
và duy trì bởi Microsoft Nó là một siêu tập hợp cú pháp
nghiêm ngặt của JavaScript và thêm tính năng kiểu tĩnh
tùy chọn vào ngôn ngữ TypeScript được thiết kế để phát
triển các ứng dụng lớn và biên dịch sang JavaScript
Hình 2.5 Logo Typescript
NEXT.
Hình 2.6 Logo NextJS
NextJS
NextJS là framework mã nguồn mở được xây dựng trên nền tang của React, cho
phép chúng ta xây dựng các trang web tĩnh có tốc độ siêu nhanh và thân thiện với
người dùng, cũng như xây dựng các ứng dụng web React.
NextJS được ra đời vào năm 2016, thuộc sở hữu của Vercel NextJS bắt đầu trởnên phổ biến vào năm 2018 và tiếp tục tăng trưởng mạnh mẽ trong cộng đồng phát
triển web vào những năm sau đó Sự kết hợp của các tính năng như Server-side
Rendering (SSR) với Static Site Generation (SSG) đã giúp NextJS trở thành sự lựa
chọn hấp dẫn cho nhiều dự án phát triển ứng dụng web
15
Trang 292.6.2 Backend
Golang
Go hay còn gọi là Golang là ngôn ngữ lập trình
mã nguồn mở, được thiết kế tại Google bởi Robert
Gniesemer, Rob Pike, and Ken Thompson Go có cú Hinh 2.7 Logo Golang
pháp giông với C va tat nhiên nó là ngôn ngữ lập
trình biên dịch (compiled programming language) Cú pháp của ngôn ngữ lập trình
Golang (syntax) khá tinh gọn, mặc dù thật sự có những cú pháp ma người mới nhìn
vào thật sự hơi khó chịu.
PostgreSOL |
PostgreSQL
PostgreSQL là một hệ thống quản tri co sở dữ
liệu quan hệ và đối tượng (object-relational
database management system) miễn phí và nguồn8 ⁄ 7 ; ) b 8 Hình 2.8 Logo PostgreSQL
mở (RDBMS) tiên tiên nhât hiện nay kha năng
mở rộng cao và tuân thủ các tiêu chuẩn kỹ thuật Nó được thiết kế để xử lý một loạtcác khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ
Web có nhiều người dùng đồng thời
Gin
Gin là một web framework được xây dựng bằngngôn ngữ lập trình Go, được thiết kế với sự nhẹ nhàng
và hiệu suất cao Với cú pháp đơn giản và linh hoạt, Gin
giúp nhà phát triển xây dựng ứng dụng web và API l
một cách nhanh chóng Nó hỗ trợ routing linh hoạt, Hình 2.9 Logo Gin Framework
middleware manh mé, va co kha nang tich hop dé dàng với cấu trúc CleanArchitecture Được ưa chuộng trong cộng đồng Go, Gin là một lựa chọn phổ biến
cho những dự án đòi hỏi hiệu suat va sự đơn giản.
16
Trang 302.6.3 Cac công nghệ hỗ trợ
Sentry.IO
Sentry là một công cụ giám sát và theo dõi
AX SENTRY
hiệu suất (performance monitoring) cũng như gỡ
x fog Hình 2.10 Logo Sent
lôi (error tracking) phô biên được sử dụng trong ” 0g senry
phat trién phan mềm Sentry giúp nhóm phat triển phát hiện, theo doi và khắc phục
lỗi trong ứng dụng của họ một cách hiệu quả.
Các tính năng chính của Sentry bao gồm:
- Theo dõi lỗi: Sentry tự động ghi lại thông tin về lỗi xảy ra trong ứng dụng,
bao gôm cả các chi tiét như loại lối, vi tri, thời gian xảy ra và ngữ cảnh xung quanh.
- Hién thị gỡ lỗi: Sentry cung cấp các thông tin chi tiết về lỗi, giúp nhóm pháttriển nhanh chóng xác định và sửa chữa van dé mà không cần phải dành nhiêu thời
gian vào việc gỡ lỗi.
- Giám sát hiệu suất: Sentry cũng cung cấp thông tin về hiệu suất của ứng dụng,giúp nhóm phát triển theo doi và tối ưu hóa hiệu suất của hệ thống
Sử dụng Sentry giúp nhóm phát triên duyệt lọc và xử lý các vấn đề kỹ thuật mộtcách nhanh chóng, cung cấp trải nghiệm ứng dụng mượt mà và đáng tin cậy hơn
Service worker API
Service worker là một tệp chương trình viết bằng
javascript được browser chạy ngầm và tách biệt
7 ¬ „ „ _ _, Hinh 2.11 Logo Service Worker khỏi trang web, nó mở ra cánh cua cho các tính
năng không yêu cầu giao diện hoặc tương tác với người dùng ví dụ: đồng bộ ngầm
và thông báo thời gian thực Tương lai, service worker có thể hỗ trợ định vị địa lýhoặc đồng bộ định ky Service worker có khả năng bắt và xử lý các yêu cầu trên hệthống và có thé quản lý việc cache các phản hồi hệ thống trả về Do đó nó hỗ trợ chạywebsite cả khi không có mạng, thông báo thời gian thực, và tốc độ xử lý nhanh
17
Trang 31Nói tóm lại service worker có các diém sau:
Nó là một file javascript không can thiệp trực tiếp vào DOM của website, thayvào đó nó giao tiếp với các trang thông qua một giao diện đặc biệt và tương tác với
DOM thông qua các trang đó đó.
SW là proxy mạng có thé lập trình được, nó cho phép ta điều khiển cách mà các
yêu cầu được xử lý Nó tắt khi không được dùng đến và khởi động lại khi cần đến
Model BART
Mô hình BART (Bidirectional and Auto-Regressive Transformers) là một mô
hình AI thuộc họ Transformer, được thiết kế dé thực hiện các nhiệm vụ như tóm tatvăn bản, dịch ngôn ngữ, và hiểu văn bản tự nhiên Mô hình này được phát triển bởiFacebook AI Research (FAIR) và là một bước tiễn quan trọng trong lĩnh vực pre-
training và fine-tuning cho xử lý ngôn ngữ tự nhiên.
Một số thuật toán hỗ trợ
Jaccard Index:
Jaccard Index được sử dụng đề đo lường độ tương đồng giữa hai tập hợp dữ
liệu Nó được định nghĩa là kích thước của giao của hai tập hợp chia cho kích thước
của liên kết giữa chúng Công thức Jaccard Index được biéu diễn như sau:
|AUB| |A4l+|B|—lAnbB
Jaccard Index thường được sử dụng trong các tình huống như tìm kiếm thông tin,
phân loại văn bản, và nhận diện các mô hình tương đồng giữa tập hợp dữ liệu
Minhash
MinHash là một kỹ thuật giảm kích thước của tập hợp dữ liệu và tạo ra một
vector hash nhỏ nhất có thể đại diện cho tính chất tương đồng của tập hợp đó Quy
18
Trang 32trình này bao gồm việc chia tập hop dữ liệu thành các tập con, sử dung ham hash dé
tạo các số hash cho mỗi tập con, và chọn giá trị MinHash là giá trị nhỏ nhất của các
số hash đó Trong trường hợp so sánh bài bao, MinHash có thể được áp dụng dé biểu
diễn các đặc điểm quan trọng của nội dung bài báo bằng một vector hash
TopicRank
TopicRank là một thuật toán trích xuất chủ dé từ văn bản, và có thé được ứng
dụng hiệu quả trong việc gan thẻ cho bai báo Chức năng chính của TopicRank là tự
động xác định các chủ đề quan trọng và tạo ra các từ khóa mô tả nội dung của baibáo, giúp cải thiện quá trình tìm kiếm và tô chức thông tin Dưới đây là một hướngdẫn chi tiết về việc áp dụng TopicRank và xây dựng đồ thị HAC (HierarchicalAgglomerative Clustering) với Average Linkage trong quá trình gắn thẻ bài báo:
- Tach văn bản thành câu văn ngắn
- Rút trích các từ có ý nghĩa
- Gom nhóm các từ va tạo TopIc
- Xây dựng đồ thị HAC với Average Linkage
- Ap dụng ngưỡng cho việc gan thẻ
- Gan trọng số cho các topic bang random walkChỉ tiết có thé xem ở tài liệu tham khảo TopicRankChương 3 PHAT TRIEN HE THONG
3.1 Khao sat hién trang, yéu cau
3.1.1 Khao sát các hệ thống tương tự hiện hiện có
Inoreader: là một ứng dụng đọc tin tức và quản lý RSS Feed, giúp người dùng
theo dõi nhiều nguồn thông tin từ các trang web khác nhau một cách thuận tiện và
tổ chức
Các tính năng của Inoreader:
19
Trang 33- RSS Feed: Cho phép người dùng đăng ky và theo dõi các trang web, blog hoặc
nguồn thông tin khác thông qua các RSS Feed
- Tổ chức: Cung cấp khả năng tổ chức nội dung theo danh mục, thẻ, hoặc bằng
cách sử dụng các tính năng quản lý khác nhau.
- Tìm kiếm: Hỗ trợ tính năng tìm kiếm dé dé dàng định vị và đọc tin tức theo
chủ đê quan tâm.
Feedly: là một dịch vụ đọc tin tức và quản lý RSS Feed phô biến, Feedly mangđến trải nghiệm đọc thông tin trực tuyến dễ sử dụng và linh hoạt
Cac tính năng của Feedly:
- Quản lý RSS Feed: hỗ trợ đăng ký và quản lý các RSS Feed từ các trang web
blog, hoặc nguồn tin khác, giúp người dùng tập hợp tat cả thông tin yêu thích tai một
nơi.
- Danh mục và thẻ: cho phép tổ chức tin tức thành các danh mục va thẻ giúp dé
dàng định hình nội dung theo sở thích và chủ đề.
- Đánh dấu và lưu trữ: Có thể đánh dấu bài viết quan trọng hoặc lưu trữ chúng
để đọc sau, giúp duyệt lại thông tin quan trong một cách thuận tiện
Nhận xét: Các ứng dụng web về RSS không phải là một ý tưởng mới Thực tế
đã có nhiều ứng dụng web khai thác đề tài này và phát triển thành ý tưởng thương
mại Các tính năng cơ bản của các ứng dụng liên quan đến RSS thường là: quản lýcác RSS feed, tổ chức các bai viết theo danh mục, thẻ nội dung, tìm kiếm bài viết
Tính năng nhóm muốn phát triển thêm trên hệ thống:
- Hé trợ đa nền tang
- Tích hợp đăng nhập và đăng ký với các tài khoản mạng xã hội cá nhân
- Cung cấp các tính năng có thể tận dụng được đữ liệu sau khi thu được
20
Trang 343.1.2 Cac chức năng theo yêu cầu
- Quán ly bài báo, tin tức, thông tin thu thập được: giúp quản lý các nội dung
thu thập được một cách thuận tiện dé dang bằng cách lưu trữ thành nội dung yêu thíchhoặc tạo thư viện chủ đề
- Quản lý người dùng, phân quyên: hệ thống giúp quản lý thông tin người dùngdựa trên tài khoản đăng ký trên hệ thống và giúp hạn chế hoặc giới hạn nội dung vàtính năng dựa trên hệ thống phân quyền
- Quản lý thông tin lưu trữ: hệ thống giúp người quản trị quản lý các nội dung
trên toàn hệ thống bao gồm phân loại, nội dung tìm kiếm
- Quan ly crawler: lên lịch, theo dõi kết quả tìm kiếm từ nhiều nguồn khác nhau
dua trên khái niệm RSS
- Phân tích nội dung thu thập được: xây dựng hệ thong xử lý ngôn ngữ tự nhiên
giúp tông hợp kết quả thu được và đánh dấu (tag) các bài viết tự động
- Tóm tắt thông tin bài viết, bài báo bằng công cụ AI
- Hỗ trợ đa nền tảng: hỗ trợ truy cập ứng dụng web trên đa nên tảng giúp ngườidùng tiền dụng và đễ dạng truy cập ứng dụng trên nhiều nền tảng và thiết bị khác
nhau
21
Trang 353.2 Phân tích thiết kế hệ thống
3.2.1 Thiết kế hệ thống
REST API Request
REST API Request
“——
REST API Response
Frontend API service Fire events
gRPC Read / write Error tracking services
- Frontend: Giao điện người dùng, khi người ding tương tác sẽ gửi request đến API
service dé nhận dit liệu dạng JSON và hiền thị lên giao diện
- API service: Chiu trách nhiệm nhận request từ Frontend, tương tac với các service
khác, xử ly dit liệu tir request Frontend va gửi tra response về Frontend
- AI server: Server host riêng model AI đã train sẵn, API service sẽ gửi request bao
gôm đoạn văn bản cân tóm tat, trả văn ban đã tom tat vê cho API service.
- Error tracking service: Khi hệ thông có lỗi xảy ra, sẽ trả lỗi vê error tracking service,
người duy trì website có thé dé dang theo dõi và sửa chữa lỗi kịp thời
- Crawler service: Chiu trách nhiệm chạy các cronjob thu thập dữ liệu bài báo từ các nguôn internet
- Database: lưu trữ dữ liệu
22
Trang 373.2.2 Sơ đồ trường hợp sử dụng của các đối tượng (Usecase Diagram)
Tác nhân Ý nghĩa
| ; Là người tac động đến hệ thông, có quyên thực hiện toàn
1 Quan trị viên (Admin) ,
bộ các chức năng của hệ thông
24
Trang 38Người dung (User)
Là người tác động tới hệ thống, thực hiện các chức năng:quản lý thông tin tìm kiếm, thao tác trên đữ liệu thu thập
7 Thêm crawler tùy chỉnh _
8 Thêm crawler chỉ tiết bai báo [9 _ Tim kiếm feeds theo từ khóa
10 Tim kiém feeds theo topic
11 Lọc kết quả tìm kiếm theo ngôn ngữ
I2 SE Theo dõi feed
13 - Xem danh sách xem sau
14 Xem lịch sử đọc báo
15 Thêm bài báo vào danh sách xem sau
16 Xóa bài báo khỏi danh sách xem sau
17 Khám phá bài báo đang hot trong ngày
Xem tất cả bài báo của các feeds đã
8 theo dõi
19 Xem báo theo feed
20 Sắp xếp bài báo
25
Trang 3921 Lọc bài báo trùng
22 Tìm kiếm theo các feeds theo dõi
23 Tìm kiếm bài báo theo feed
24 Đọc báo
25 Truy xuất trang nguồn báo
26 Tải toàn bộ nội dung báo
27 Sử dụng AI tóm tắt bài báo
28 Theo dõi lỗi hệ thống
29 Tìm kiếm crawler
30 Xóa các crawler
31 Sửa thông tin crawler
32- Lên lich crawl
33 Sửa thông tin feed
46 Sửa thông tin người dùng
47 Xem danh sách phân quyền
48 Thêm phân quyền
26
Trang 4049 Chỉnh sửa phân quyền của các thực thé
Bảng 3.2 Danh sách các usecase của hệ thông
Mô tả chỉ tiệt các usecase của hệ thông:
e Đăng nhập
- Tác nhân: Người dùng
- Mô tả: Người dùng nhập tên đăng nhập và mật khẩu Hệ thống sẽkiểm tra tính hợp lệ của thông tin đăng nhập
- Điều kiện trước: Không có
- Điều kiện sau: Nếu đăng nhập thành công, hệ thống lưu thông tin
đăng nhập, người dùng sẽ thực hiện được các tính năng của website.
Ngược lại, nếu đăng nhập sai sẽ báo đăng nhập không thành công
- Luong su kién:
Truy cập trang web và ấn vào nút Hiến thi form đăng nhập gồm: tên đăng
“Đăng nhập” | nhập, mật khẩu và nút “Đăng nhập”
Hệ thông tiến hành kiểm tra thông tin người
dùng nhập trong CSDL:
Người dùng nhập tên đăng nhập + Nếu người dùng nhập đúng thì hệ thống
và mật khẩu sau đó nhấn nút xác nhận thành công, người dùng thực hiện
“Đăng nhập” được các tính năng của website.
+ Nếu người dùng nhập sai thì hệ thống
thông báo sai và chờ người dùng nhập lại.
Bảng 3.3 Luong sự kiện đăng nhập
e Đăng nhập với google / apple:
- Tac nhân: Người dùng.
- M6 tả: Đăng nhập hoặc đăng ký tai khoản với google và apple.
- _ Điều kiện trước: Người dùng có tài khoản google hoặc appleid
27