Với từng kênh thông tin, sau đây là bảng phân tích những tiêu chí đánh giá nhằm so sánh và đánh giá về mức độ tiện dụng của từng kênh: Giáo trình tài liệu, website môn học Mạng xã hội,
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
LƯU BIÊU NGHỊ NGUY ỄN VĂN ĐÔNG
CHO SINH VIÊN UIT
Building an application to share documents and support learning for UIT students
K Ỹ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
Ồ CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
LƯU BIÊU NGHỊ - 17520794 NGUY ỄN VĂN ĐÔNG - 17520350
CHO SINH VIÊN UIT
Building an application to share documents and support learning for UIT students
K Ỹ SƯ NGÀNH KỸ THUẬT PHẦN MỀM
GI ẢNG VIÊN HƯỚNG DẪN ThS HU ỲNH HỒ THỊ MỘNG TRINH
Trang 3THÔNG TIN H ỘI ĐỒNG CHẤM KHOÁ LUẬN TỐT NGHIỆP
Hội đồng chấm khoá 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
1 – Chủ tịch
2 – Thư ký
3 – Uỷ viên
4 – Uỷ viên
Trang 4L ỜI CẢM ƠN
Trong suốt 4 năm học tập tại trường đại học Công nghệ Thông tin, từ sự giảng dạy nhiệt tình và hướng dẫn chu đáo từ phía thầy cô, đặc biệt là quý thầy cô khoa Công nghệ Phần mềm, chúng em đã được tiếp thu rất nhiều kiến thức bổ ích và vô cùng cần thiết để có thể có được một chuyên môn vững chắc trong tương lai Thông qua khoá luận này, chúng
em đã thể hiện những gì đã được học và phối hợp lại để cố gắng tạo nên một sản phẩm
có khả năng đưa vào hoạt động thực tế, bước đầu là quy mô vừa và nhỏ, dần dần hướng đến một sản phẩm hoàn chỉnh với quy mô lớn
Chúng em xin gửi lời cảm ơn chân thành đến quý thầy cô trường Đại học Công nghệ Thông tin nói chung, và quý thầy cô khoa Công nghệ Phần mềm nói riêng, đặc biệt là cô Huỳnh Hồ Thị Mộng Trinh đã chu đáo và tận tình hướng dẫn chúng em, giúp chúng em
có điều kiện tốt nhất để hoàn thành khoá luận với chất lượng cao nhất
Cảm ơn giảng viên phản biện và các thầy cô trong hội đồng chấm khoá luận với những lời khuyên, góp ý quý báu và bổ ích Từ đó bài luận văn của em đã trở nên hoàn thiện hơn
Bên cạnh đó, nhóm cũng xin gửi lời cảm ơn đến các anh chị, bạn bè đã cùng góp ý đến khoá luận của nhóm
Trong suốt quá trình thực hiện khoá luận, do quy mô của sản phẩm khá lớn so với các
đồ án thông thường khác, với thời gian và vốn kiến thức vẫn còn nhiều hạn chế, chắc chắn khó tránh khỏi những sai sót không mong muốn Chúng em rất mong nhận được sử góp ý chân thành từ phía thầy cô và các bạn
Thành phố Hồ Chí Minh, tháng 06 năm 2021
Lưu Biêu Nghị Nguyễn Văn Đông
Trang 5M ỤC LỤC
TÓM TẮT KHOÁ LUẬN 1
CHƯƠNG 1 TỔNG QUAN 2
1.1 Giới thiệu/Lí do chọn đề tài 2
1.2 Mục tiêu 11
1.3 Phạm vi 12
1.4 Nội dung nghiên cứu 12
1.5 Phương pháp thực hiện 12
1.6 Mô tả tính năng 13
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 15
2.1 Thống kê chỉ số TF-IDF (Term frequency – inverse document frequency) và cải tiến Okapi BM25 15
2.2 Vector Space Model (mô hình không gian vector) 19
2.3 Wilson Confidence Interval score 22
2.4 Hotness và vấn đề các tài nguyên đang được nhiều sự chú ý 25
CHƯƠNG 3 TỔNG QUAN CÔNG NGHỆ 28
3.1 Tổng quan về hệ sinh thái Spring Framework 28
3.2 Keycloak 33
3.3 Apache Lucene 36
3.4 PostgreSQL 36
3.4 Thư viện ReactJS và Redux 37
CHƯƠNG 4 XÂY DỰNG ỨNG DỤNG CHIA SẺ TÀI LIỆU, HỖ TRỢ HỌC TẬP CHO SINH VIÊN UIT 40
4.1 Xác định và phân tích yêu cầu 40
4.2 Đặc tả Use-case 44
4.3 Thiết kế cơ sở dữ liệu 78
4.4 Thiết kế kiến trúc hệ thống 116
4.5 Thiết kế giao diện và xử lý 122
4.6 Triển khai hệ thống 130
Trang 6CHƯƠNG 5 KẾT LUẬN 133
5.1 Kết quả đạt được 133
5.2 Thuận lợi và khó khăn 155
5.3 Hướng phát triển 156
TÀI LIỆU THAM KHẢO 157
Trang 7DANH M ỤC HÌNH
Hình 2-1 Công thức tính điểm VSM 20
Hình 2-2 Công thức tính điểm được đơn giản hoá 20
Hình 2-3 Công thức tính điểm thực tế 21
Hình 2-4 Urban Dictionary hiển thị sorting chưa phù hợp 23
Hình 2-5 Amazon.com hiển thị sorting chưa phù hợp 23
Hình 2-6 Công thức tính khoảng ước lượng Wilson 24
Hình 2-7 Những tài nguyên cùng số lượt vote nhưng mới hơn sẽ được xếp hạng cao hơn 26
Hình 2-8 So sánh giữa có sử dụng logarithm (bên trái) và không sử dụng logarithm (bên phải) 26
Hình 2-9 So sánh giữa điểm hot của tài nguyên ít downvote (trái) và tài nguyên nhiều downvote (phải) 27
Hình 3-1 Sơ đồ hoạt động của Spring Boot 29
Hình 3-2 Sơ đồ hoạt động của Spring Security và Filter Chain 31
Hình 3-3 Cơ chế authorization dựa trên voting của Spring Security 32
Hình 3-4 Sequence Flow cho từng method call được bảo vệ bởi Access Control của Spring Security 32
Hình 3-5 Sơ đồ kiến trúc Hibernate ORM 33
Hình 3-6 Logo của keycloak 33
Hình 3-7 Sơ đồ cơ chế hoạt động của Keycloak 35
Hình 3-8 Logo của Apache Lucene 36
Hình 3-9 Logo PostgreSQL 36
Hình 3-10 Logo ReactJS 37
Hình 3-11 Hình ảnh minh hoạ cho các state nếu sử dụng và không sử dụng Redux 39 Hình 4-1 Use case tổng quát 44
Hình 4-2 Use case Hệ thống bài viết 45
Trang 8Hình 4-3 Use case Hệ thống tài liệu 46
Hình 4-4 Use case Hệ thống bài tập 47
Hình 4-5 Use case Hệ thống quản lý người dùng 48
Hình 4-6 Use case hệ thống tính điểm người dùng 49
Hình 4-7 Sơ đồ ERD của hệ thống 78
Hình 4-8 Kiến trúc tổng thể hệ thống 116
Hình 4-9 Sơ đồ kiến trúc Front-end 118
Hình 4-10 Kiến trúc Back-end 120
Hình 4-11 Sơ đồ màn hình liên kết – người dùng khách 122
Hình 4-12 Sơ đồ màn hình liên kết – người dùng hệ thống 125
Hình 4-13 Sơ đồ màn hình liên kết – quản trị hệ thống 127
Hình 4-14 Deployment Diagram của hệ thống 130
Hình 5-1 Hình ảnh plugin Mathematical Formulas (Tesla) được chia sẻ trên CKEditor 134
Hình 5-2 Giao diện Plugin Mathematical Formulas (Tesla) 135
Hình 5-3 Màn hình trang chủ 136
Hình 5-4 Màn hình danh sách bài viết 137
Hình 5-5 Màn hình danh sách môn học – tài liệu 138
Hình 5-6 Màn hình danh sách tài liệu của một môn học 139
Hình 5-7 Giao diện tính năng quick search 139
Hình 5-8 Màn hình Tìm kiếm bài viết 140
Hình 5-9 Màn hình Tìm kiếm tài liệu 141
Hình 5-10 Màn hình Tạo bài viết 142
Hình 5-11 Giao diện tính năng nhập công thức toán học 143
Hình 5-12 Màn hình Tìm kiếm bài viêt bằng Tag 144
Hình 5-13 Màn hình chi tiết bài viết 145
Hình 5-14 Màn hình chi tiết tài liệu 146
Trang 9Hình 5-15 Giao diện tính năng bình luận 147
Hình 5-16 Giao diện màn hình quản lý bài viết 148
Hình 5-17 Màn hình duyệt bài viết 149
Hình 5-18 Màn hình quản lý tố cáo bài viết 150
Hình 5-19 Màn hình Danh sách môn học – Bài tập 151
Hình 5-20 Màn hình Danh sách bài tập 152
Hình 5-21 Màn hình danh sách câu hỏi 153
Hình 5-22 Tính năng bình luận cho một bài tập 154
Hình 5-23 Tính năng thêm câu hỏi vào bài tập 155
Trang 10DANH M ỤC BẢNG
Bảng 1-1 Tiêu chí đánh giá của các kênh thông tin tự học phổ biến của sinh viên 2
Bảng 1-2 Tiêu chí đánh giá của các kênh mạng xã hội, blog được dùng phổ biến 5
Bảng 1-3 Tiêu chí đánh giá của các kênh thông tin chia sẻ tài liệu phổ biến 7
Bảng 1-4 Tiêu chí đánh giá của các kênh làm bài tập phổ biến 9
Bảng 4-1 Danh sách các Actor trong hệ thống 40
Bảng 4-2 Danh sách các Usecase 40
Bảng 4-3 Đặc tả usecase Tìm kiếm 49
Bảng 4-4 Đặc tả usecase Lọc theo danh mục 50
Bảng 4-5 Đặc tả usecase Lọc theo môn học 51
Bảng 4-6 Đặc tả usecase Sắp xếp 51
Bảng 4-7 Đặc tả usecase Tương tác 52
Bảng 4-8 Đặc tả usecase Tố cáo 53
Bảng 4-9 Đặc tả usecase Lưu về kho cá nhân 54
Bảng 4-10 Đặc tả usecase Gợi ý bài viết 55
Bảng 4-11 Đặc tả usecase Xem bài viết 55
Bảng 4-12 Đặc tả usecase Quản lý bài viết cá nhân 56
Bảng 4-13 Đặc tả usecase Duyệt/từ chối bài viết 57
Bảng 4-14 Đặc tả usecase Sửa/xoá bài viết 58
Bảng 4-15 Đặc tả usecase Gửi tài liệu 59
Bảng 4-16 Đặc tả usecase Upload tài liệu 59
Bảng 4-17 Đặc tả usecase Xem tài liệu 60
Bảng 4-18 Đặc tả usecase Tải về tài liệu 61
Bảng 4-19 Đặc tả usecase Thích/không thích tài liệu 62
Bảng 4-20 Đặc tả usecase Quản lý tài liệu cá nhân 62
Bảng 4-21 Đặc tả usecase Sửa/xoá tài liệu 63
Bảng 4-22 Đặc tả usecase Duyệt/từ chối tài liệu 64
Trang 11Bảng 4-23 Đặc tả usecase Xem bài tập 65
Bảng 4-24 Đặc tả usecase Làm bài tập 66
Bảng 4-25 Đặc tả usecase Tạo ghi chú trên bài tâp 66
Bảng 4-26 Đặc tả usecase Tính thời gian 67
Bảng 4-27 Đặc tả usecase Đặt cờ 68
Bảng 4-28 Đặc tả usecase Xem những kết quả lần trước 69
Bảng 4-29 Đặc tả usecase Gửi báo cáo sai sót 69
Bảng 4-30 Đặc tả usecase Nộp bài tập 70
Bảng 4-31 Đặc tả usecase Xem đáp án, lời giải chi tiết 71
Bảng 4-32 Đặc tả usecase Lưu kết quả người dùng 72
Bảng 4-33 Đặc tả usecase Quản lý báo cáo sai sót 72
Bảng 4-34 Đặc tả usecase Thêm/sửa/xoá bình luận 73
Bảng 4-35 Đặc tả usecase Thích bình luận 74
Bảng 4-36 Đặc tả usecase Xem bài viết được đăng bởi người dùng 75
Bảng 4-37 Đặc tả usecase Đánh giá điểm uy tín 75
Bảng 4-38 Đặc tả usecase Thống kê số bài viết/tài liệu đã đăng 76
Bảng 4-39 Bảng Activity 79
Bảng 4-40 Bảng Announcement 79
Bảng 4-41 Bảng SubjectGroup 80
Bảng 4-42 Bảng SubjectFaculty 81
Bảng 4-43 Bảng Subject 81
Bảng 4-44 Bảng Notification 82
Bảng 4-45 Bảng Tag 83
Bảng 4-46 Bảng ReportReason 83
Bảng 4-47 Bảng Post 83
Bảng 4-48 Bảng UserPostLike 85
Bảng 4-49 Bảng UserPostSave 85
Trang 12Bảng 4-50 Bảng PostCategory 86
Bảng 4-51 Bảng PostReport 86
Bảng 4-52 Bảng PostReportReason 87
Bảng 4-53 Bảng UserPostReport 88
Bảng 4-54 Bảng PostView 88
Bảng 4-55 Bảng PostComment 89
Bảng 4-56 Bảng UserPostCommentLike 90
Bảng 4-57 Bảng PostCommentReport 90
Bảng 4-58 Bảng PostCommentReportReason 91
Bảng 4-59 Bảng UserPostCommentReport 91
Bảng 4-60 Bảng PostPostTag 92
Bảng 4-61 Bảng HighlightPost 92
Bảng 4-62 Bảng Doc 93
Bảng 4-63 Bảng DocCategory 94
Bảng 4-64 Bảng DocDocTag 95
Bảng 4-65 Bảng UserDocReaction 95
Bảng 4-66 Bảng UserDocSave 96
Bảng 4-67 Bảng DocView 96
Bảng 4-68 Bảng DocDownload 97
Bảng 4-69 Bảng DocFileUpload 98
Bảng 4-70 Bảng DocReport 98
Bảng 4-71 Bảng DocReportReason 99
Bảng 4-72 Bảng UserDocReport 100
Bảng 4-73 Bảng DocComment 100
Bảng 4-74 Bảng UserDocCommentLike 101
Bảng 4-75 Bảng DocCommentReport 102
Bảng 4-76 Bảng DocCommentReportReason 103
Trang 13Bảng 4-77 Bảng UserDocCommentReport 103
Bảng 4-78 Bảng ExerciseCategory 104
Bảng 4-79 Bảng ExerciseTopic 104
Bảng 4-80 Bảng Exercise 105
Bảng 4-81 Bảng ExerciseNote 106
Bảng 4-82 Bảng ExerciseReport 106
Bảng 4-83 Bảng ExerciseReportReason 107
Bảng 4-84 Bảng UserExerciseReport 108
Bảng 4-85 Bảng ExerciseQuestion 108
Bảng 4-86 Bảng ExerciseAttempt 109
Bảng 4-87 Bảng ExerciseAnswer 110
Bảng 4-88 Bảng ExerciseComment 110
Bảng 4-89 Bảng UserExerciseCommentLike 111
Bảng 4-90 Bảng ExerciseCommentReport 112
Bảng 4-91 Bảng ExerciseCommentReportReason 113
Bảng 4-92 Bảng UserExerciseCommentReport 113
Bảng 4-93 ExerciseExerciseTag 114
Bảng 4-94 Bảng UserWebsite 114
Bảng 4-95 Bảng danh sách các Component của Front-end 118
Bảng 4-96 Bảng danh sách các Component của Back-end 120
Bảng 4-97 Bảng danh sách các màn hình với quyền của người dùng khách 123
Bảng 4-98 Bảng danh sách các màn hình với quyền của người dùng hệ thống 125
Bảng 4-99 Sơ đồ màn hình liên kết – quản trị hệ thống 128
Bảng 4-100 Mô tả Deployment Digram của hệ thống 130
Trang 14DANH M ỤC TỪ VIẾT TẮT
STT T ừ viết
Là cơ chế xác thực cho phép người dùng chỉ sử dụng một ID và mật
khẩu mà có thể được xác thực ở nhiều trang khác VD Google,
Facebook,…
Trang 15Nhằm cung cấp hệ thống hỗ trợ học tập tốt hơn cho sinh viên, nhóm đề xuất xây dựng
hệ thống “Chia sẻ tài liệu, hỗ trợ học tập cho sinh viên UIT” thay thế và thử nghiệm, bao gồm ba tính năng chính: chia sẻ bài viết, chia sẻ tài liệu và tính năng làm bài tập và kiểm tra kết quả online Trong đó:
− Tính năng chia sẻ bài viết sẽ giúp các bạn có thể tự do chia sẻ những kiến thức, kinh nghiệm của mình đến các bạn khác
− Tính năng chia sẻ tài liệu cho phép các bạn upload, download, chia sẻ những tài liệu mình hiện đang có, đồng thời tổ chức theo môn học, danh mục
− Tính năng làm bài tập cho phép các bạn thực hiện bài tập và nhận lời giải chi tiết, được sắp xếp theo môn học và từng chủ đề trong môn học đó
− Ngoài ra có các tính năng khác như tính năng tính điểm uy tín của người dùng, tính năng comment, tính năng tương tác, tính năng tìm kiếm, tính năng quản trị Kết quả cuối cùng của khoá luận: Nhóm đã xây dựng một website hỗ trợ học tập với ba tính năng chính nêu trên
Trang 16CHƯƠNG 1 TỔNG QUAN
Ở bậc đào tạo Đại học, với rất nhiều trường với nhiều chuyên ngành khác nhau, việc tổng hợp tại liệu gặp không ít khó khăn Thực trạng hiện nay, các nguồn tài liệu học tập được đăng tải trên nhiều kênh rời rạc, trong đó phổ biến nhất là Mạng xã hội (Facebook,…), các trang chia sẻ tài liệu (tailieu.vn, 123doc,…) và giáo trình được giảng viên cung cấp Sinh viên gặp rất nhiều khó khăn khi tìm kiếm tài nguyên học tập Với từng kênh thông tin, sau đây là bảng phân tích những tiêu chí đánh giá nhằm so sánh
và đánh giá về mức độ tiện dụng của từng kênh:
Giáo trình tài liệu, website môn học
Mạng xã hội, blog
Trang chia sẻ tài liệu
Hệ thống đề xuất
Dễ dàng, thuận tiện trong
việc chia sẻ tài nguyên học
Tài nguyên học tập được
Dễ dàng, thuận tiện trong
việc tìm kiếm tài nguyên học
Được quản lý, lọc và duyệt về
tính chính xác trước khi đăng
tải
Tự đánh giá
Trang 17Hỗ trợ đánh giá độ tin cậy của
tài nguyên học tập thông qua
tương tác vote của cộng
đồng, điểm uy tín
Tự đánh giá
và nhận xét
Hạn chế (người dùng
tự xem bình luận để đánh giá)
Hạn chế (tuỳ vào cài đặt của người dùng)
Không Có
Thời gian từ lúc cần tài
nguyên học tập cho đến khi
tìm được tài nguyên phù hợp
Trả phí hoặc miễn phí
Miễn phí
Về phương pháp thủ công, chúng ta không có nhiều lựa chọn là phải đi đến nhiều địa điểm khác nhau để tự tìm lọc và lựa chọn nguồn tài liệu Như bảng so sánh bên trên, chúng ta sẽ mất nhiều thời gian, công sức để tìm kiếm tài liệu, không được hỗ trợ đánh giá độ tin cậy của tài liệu
Về phương pháp sử dụng mạng xã hội để thực hiện chia sẻ tài liệu, bài học, bài sẽ dễ bị trôi (bài không hiện trên trang duyệt của người dùng) và được thay bởi những tài liệu mới, việc tìm kiếm lại tài liệu rất khó khăn vì mạng xã hội không được thiết kế để chia
sẻ kiến thức, tài liệu Chúng ta lại không thể đánh giá được độ tin cậy của một tài liệu nhất định, vì chúng ta không biết tác giả đã có những đóng góp gì, được cộng đồng chấp nhận như thế nào,…
Trang 18Về phương pháp sử dụng hệ thống chia sẻ tài liệu của bên thứ ba như tailieu.vn, 123doc.vn, … (sau đây xin gọi tắt là trang CSTL) Cũng với nhược điểm như trên, những trang CSTL này không thể đánh giá được mức độ uy tín của người chia sẻ, cũng như hỗ trợ người dùng đánh giá độ tin cậy của tài liệu học tập Lĩnh vực tài liệu được chia sẻ trên các trang CSTL này lại quá rộng, quản trị viên khó có thể quản lý chính xác độ tin cậy của các tài liệu, vì vậy nhiều tài liệu đã cũ và không được cập nhật, thậm chí không chính xác nhưng vẫn còn tồn tại trên hệ thống Ngoài ra, để tải được tài liệu, những trang chia sẻ tài liệu này đa phần đều thu về cho mình nhiều khoản phí khác nhau, sẽ tạo rào cản tiếp cận cho một số lượng các bạn sinh viên
Ngoài ra, sinh viên chủ yếu sử dụng các kênh tự học một cách thụ động Trong trong một số nghiên cứu chỉ ra nếu người học được tương tác với hệ thống hoặc người học khác ở vai trò chủ động sẽ giúp cho việc học trở nên hiệu quả hơn 1, ví dụ thông qua việc giải bài tập và nhận về kết quả cũng như hướng dẫn giải ngay lập tức Đây là tính năng
mà những kênh tự học trên chưa thể đáp ứng
Sau khi thực hiện khảo sát thực tế những sản phẩm hiện có trên thị trường, đối với từng
hệ thống nhóm đã tiến hành liệt kê những tính năng quan trọng nhất đối với việc tự học của sinh viên và tiến hành so sánh với các sản phẩm
Với hệ thống bài viết: Chúng ta có các hệ thống được sử dụng phổ biến nhất trên thị trường là Mạng xã hội (Facebook) và những trang mạng xã hội khác thuộc dạng blog (Medium, Spiderum, Kipalog, Viblo) 2 3
1 Regina Vollmeyer & Falko Rheinberg “A surprising effect of feedback on learning”, Elsevier, [online
document], 2005 Available:
https://www.researchgate.net/publication/222391762_A_surprising_effect_of_feedback_on_learning [Accessed: Feb 27, 2021]
2 Dựa trên kết quả xếp hạng (ranking) tại Việt Nam được cung cấp bởi Alexa.com và khảo sát
3 Trong phạm vi nghiên cứu của khoá luận, chỉ xét những trang có chia sẻ bài viết thuộc ngành CNTT
Trang 19B ảng 1-2 Tiêu chí đánh giá của các kênh mạng xã hội, blog được dùng phổ biến
theo nhiều tiêu chí
(đang hot, nhiều
gợi ý các tài liệu và
bài tập liên quan Không Không Không Không Không Có
Hỗ trợ đánh giá
chất lượng bài đăng
thông qua điểm uy
tín của người dùng
Tương tác với bài
đăng (like, lưu về
Trang 20Miễn phí Miễn
phí
Miễn phí
Miễn phí
Nhìn chung, các trang chia sẻ kiến thức trên hầu hết đều đã đáp ứng tốt nhu cầu về mặt
tổ chức tài nguyên, và có nhiều công cụ hỗ trợ trong việc soạn thảo bài viết Tương tác người dùng cũng được hoàn thiện Tuy nhiên, phần lớn các trang đều chưa hỗ trợ tốt cho việc chia sẻ kiến thức các môn học đặc thù như các môn về toán, các môn lập trình
Trang 21Với hệ thống tài liệu: Hiện tại quen thuộc nhất với các bạn sinh viên bao gồm ba nhóm chính: Trang chia sẻ tài liệu trong nước, trang chia sẻ tài liệu nước ngoài, và trang chia
sẻ tài liệu chuyên ngành CNTT Sau đây là một số trang nổi tiếng và được sử dụng nhiều nhất bởi các bạn sinh viên Đại học Công nghệ Thông tin 4 5
Trang chia sẻ tài liệu trong nước là 123doc, tailieu.vn Đối với trang chia sẻ nước ngoài
là coursehero Về các trang chia sẻ tài liệu dành riêng cho lĩnh vực CNTT: cuuduongthancong.com, hoctap.suctremmt.com
Bảng so sánh các tính năng của các hệ thống chia sẻ tài liệu đang trên thị trường và hệ thống đề xuất:
Bảng 1-3 Tiêu chí đánh giá của các kênh thông tin chia sẻ tài liệu phổ biến
nước
Trang chia
sẻ tài liệu nước ngoài
Trang chia
sẻ tài liệu CNTT
Hệ thống đề xuất
Giao diện thân thiện, dễ sử
Hỗ trợ tìm kiếm tài liệu,
Hỗ trợ tương tác
(like/dislike), cho phép
Hỗ trợ đánh giá chất lượng
tài liệu thông qua điểm uy
4 Dựa trên kết quả xếp hạng (ranking) tại Việt Nam được cung cấp bởi Alexa.com và khảo sát
5 Trong phạm vi nghiên cứu của khoá luận, chỉ xét những trang chia sẻ tài liệu chứa tài liệu của Đại học và thuộc ngành CNTT
Trang 22Tự động liên kết tài liệu và
các bài viết, bài tập liên
Trang 23Với hệ thống bài tập: Phổ biến nhất với các bạn sinh viên chúng ta có GeeksForGeeks, Sanfoundry và gần đây nhất là trang Tracnghiem.net 6 7
Sau đây là bảng so sánh các tính năng của các hệ thống nêu trên và hệ thống đề xuất:
net
Hệ thống
đề xuất
Giao diện thân thiện, dễ
Lưu kết quả thực hiện
Tự động gợi ý các bài
viết, tài liệu liên quan
Hỗ trợ đánh giá độ tin
cậy của tài liệu thông
qua điểm uy tín của
người đóng góp
6 Dựa trên kết quả xếp hạng (ranking) tại Việt Nam được cung cấp bởi Alexa.com, kết quả tìm kiếm tại Google
và khảo sát
7 Trong phạm vi nghiên cứu của khoá luận, chỉ xét những trang cho phép thực hiện bài tập chứa tài nguyên thuộc ngành CNTT
Trang 24Cho phép thực hiện ghi
chú trực tiếp trên từng
Tính năng quản lý phản
hồi khi người dùng
muốn đề xuất cải thiện
bài tập
Đề xuất thời gian làm
bài gợi ý cho từng bài
Công cụ tính giờ làm
Cho phép người dùng tự
chọn thời gian làm bài
Kiểm tra kết quả, tính
phí Những hệ thống trên hiện tại đều được hiện thực ở mức độ tương đối cơ bản, chưa hỗ trợ sự tương tác của người dùng như lưu kết quả thực hiện, bình luận, báo cáo những câu
Trang 25hỏi không chính xác Ngoài ra, nếu người dùng muốn thực hiện tính giờ, hoặc lưu lại note cho việc ôn tập đối với từng bài tập, thì những hệ thống trên chưa thể đáp ứng Người dùng không thể tương tác nhiều với hệ thống mà chỉ có thể thực hiện làm bài tập Nhận thấy nhu cầu có nguồn tài liệu học tập tổng hợp, đáp ứng tốt hơn cầu tự học của sinh viên, thông qua khoá luận tốt nghiệp này nhóm đề xuất xây dựng một hệ thống hỗ trợ cho việc tự học của sinh viên Đại học Công nghệ Thông tin, với tên đề tài là “Xây dựng ứng dụng chia sẻ tài liệu, hỗ trợ học tập cho sinh viên UIT” Hệ thống sẽ đóng vai trò là điểm tập trung tài nguyên nhằm bổ trợ cho chương trình khung của trường, giúp sinh viên có một nơi tập trung để tìm được những nguồn tài nguyên học tập phù hợp cho mình
Từ những phân tích trên, nhóm thực hiện đề xuất xây dựng một website hỗ trợ học tập cho sinh viên, bao gồm ba tính năng chính: Tính năng chia sẻ bài viết, tính năng chia sẻ tài liệu và tính năng làm bài tập Với mục tiêu thực hiện của đề tài:
− Kế thừa những tính năng và trải nghiệm người dùng đang thực hiện tốt trên các trang mạng xã hội, blog phổ biến, đồng thời hỗ trợ thêm công cụ nhập công thức toán học, công cụ highlight code, và tự động gợi ý, liên kết các tài liệu và bài tập liên quan đến bài viết
− Kế thừa những điểm mạnh của các hệ thống chia sẻ tài liệu trên thị trường như sự tiện dụng, và đồng thời tăng sự tương tác giữa người dùng và hệ thống, thông qua các tính năng đánh giá tài nguyên học tập, điểm bình luận, điểm uy tín
− Phát triển hệ thống làm bài tập, cho phép người dùng thực hiện bài tập, trả về kết quả ngay lập tức và hướng dẫn giải chi tiết cho từng câu, hỗ trợ lưu lại kết quả, cho phép báo cáo những bài tập với lời giải chưa chính xác
Trang 26− Nghiên cứu, tìm hiểu về công nghệ Spring, Hibernate và ReactJS Tìm hiểu những best practices tương ứng với những công nghệ này và áp dụng thực tế
− Nghiên cứu và áp dụng kĩ thuật nâng cao hiệu suất của hệ thống khi số lượng người dùng tăng (CDN)
− Nghiên cứu các quy tắc thiết kế nhằm bảo mật dữ liệu và bảo vệ hệ thống khỏi sự tấn công từ các tác nhân bên ngoài (user input validation)
− Nâng cao và củng cố kĩ năng xây dựng một hệ thống chạy thực tế với quy mô vừa
và nhỏ
− Những công nghệ được sử dụng: Authorization server (Keycloak), Back-end (Spring MVC, Hibernate, PostgreSQL), Front-end (ReactJS)
Thực hiện đề tài theo các bước:
− Phân tích đề tài: Tìm hiểu những khó khăn hạn chế việc tự học của sinh viên, đồng thời đề xuất giải pháp dưới dạng hệ thống tự động nhằm giúp việc tự học diễn ra hiệu quả hơn
− Liệt kê các khó khăn trong quá trình tự học và giải pháp
− Tham khảo một số hệ thống tương tự ở nhiều trang Web khác, tìm hiểu điểm mạnh và hạn chế
− Phân tích các yêu cầu đã thu thập được
− Thiết kế cơ bản các yêu cầu
Trang 27− Nghiên cứu công nghệ để áp dụng
− Phát triển sản phẩm qua các giai đoạn, đồng thời nhận ý kiến phản hồi
− Kiểm thử và hoàn thiện
− Cài đặt môi trường để triển khai và chạy thử nghiệm, sau đó là chạy thực tế hệ thống
− Triển khai và thiết kế hệ thống một cách chuyên nghiệp, tối đa hoá tính tái sử dụng, tính bảo trì của hệ thống
Hệ thống sẽ bao gồm ba tính năng chính: Tính năng chia sẻ bài viết, tính năng chia sẻ tài liệu và tính năng giải bài tập Ngoài ra, hệ thống còn có các tính năng khác: Đánh giá điểm uy tín của người dùng, tính năng comment, tính năng tương tác, tính năng tìm kiếm, tính năng quản trị
Đối với vai trò là người dùng (khách) truy cập đến hệ thống:
− Tính năng bài viết, người dùng có thể thực hiện tìm kiếm bài viết (sắp xếp, lọc theo nhiều tiêu chí), xem bài viết theo từng danh mục, xem các tài liệu và bài tập được tự động gợi ý dựa trên bài viết, tương tác với bài viết (like, tố cáo bài viết, lưu về kho cá nhân), bình luận, tương tác với bình luận (like, tố cáo bình luận, trả lời), đăng tải bài viết, nhập công thức toán học, highlight code, hẹn lịch đăng bài viết, tagging và phân loại bài viết
− Tính năng tài liệu, cho phép người dùng tìm tài liệu theo môn học và/hoặc theo chủ đề, sắp xếp tài liệu theo nhiều tiêu chí (đang trending, đang hot, tài liệu được đánh giá tốt nhất), tương tác với tài liệu (like/dislike, lưu về kho), tố cáo tài liệu, đăng tải tài liệu, tải về tài liệu, đăng tải bình luận, hẹn lịch đăng tải tài liệu, dán nhãn (tagging) cho tài liệu
− Tính năng thực hiện bài tập, cho phép người dùng làm bài tập và nhận đáp án và
lời giải chi tiết thông qua hệ thống trắc nghiệm Bài tập được sắp xếp theo từng
Trang 28môn học, chủ đề của môn học phù hợp với chương trình đào tạo tại UIT Đối với người dùng đã đăng nhập, hệ thống hỗ trợ lưu lượt thực hiện của người dùng và điểm số của lượt thực hiện đó Người dùng có thể thực hiện thảo luận với tính năng bình luận, hoặc thực hiện tố cáo bài tập chưa chính xác thông qua chức năng report Các tính năng khác bao gồm: Gợi ý thời gian giải bài tập, công cụ tính giờ (stopwatch/countdown), ghi chú riêng cho từng bài tập, gợi ý tài liệu, bài viết liên quan, giải đáp chi tiết
− Các tính năng khác: Tính năng điểm uy tín, tính năng quản lý thông tin cá nhân Đối với vai trò là quản trị viên (admin) hệ thống:
− Quản lý bài viết: Sau khi người dùng đăng tải bài viết, admin có thể duyệt hoặc
từ chối bài viết, gửi lý do từ chối bài viết đến người dùng, thực hiện quản lý những tố cáo của bài viết và bình luận trong bài viết Admin cũng có thể thực hiện chỉnh sửa bài viết của người dùng
− Quản lý tài liệu: Sau khi người dùng đăng tải tài liệu, admin có thể duyệt hoặc
từ chối tài liệu, gửi lý do từ chối tài liệu đến người dùng, thực hiện quản lý những tố cáo của tài liệu và bình luận trong tài liệu Admin cũng có thể thực hiện chỉnh sửa tài liệu của người dùng
− Quản lý bài tập: Admin có thể thực hiện quản lý những tố cáo của người dùng
về nội dung của bài tập Đồng thời, có thể thực hiện quản lý những tố cáo của người dùng đối với bình luận trong bài tập
− Quản lý người dùng: Ứng dụng được xây dựng dựa trên cơ chế quản lý truy cập theo quyền (permission-based) Admin có thể thực hiện phân quyền
(permission), có thể tạo mới một roles và gán cán permission vào role (dùng hệ thống Keycloak)
Trang 29CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
Trong những ứng dụng thực tế, có hai vấn đề quan trọng nhất đối với một hệ thống mà chúng ta cần nghiên cứu và tối ưu: Tìm kiếm và sắp xếp thông tin Về vấn đề tìm kiếm,
nếu ta chỉ thực hiện những giải pháp tìm kiếm đơn giản, như so sánh query like, exact matching,… thì độ hiệu quả và tính thực tiễn của hệ thống không cao Chúng ta cần có những cách tìm kiếm và sắp xếp kết quả phù hợp để đáp ứng nhu cầu của người dùng Sau đây, nhóm đã tiến hành nghiên cứu và sử dụng một số mô hình phổ biến, mới và được áp dụng trong những trang mạng xã hội nổi tiếng hiện nay nhằm tăng tính hiệu quả của tính năng tìm kiếm, sắp xếp và gợi ý các bài viết, tài liệu và bài tập liên quan trong
hệ thống
cải tiến Okapi BM25
Trong việc truy xuất thông tin, tf-idf (viết tắt của term frequency – inverse document frequency) là một thống kê dùng để xác định xem độ quan trọng của một từ trong một tập văn bản Chỉ số tf-idf tăng tuyến tính với số lần một từ xuất hiện trong một tập văn bản, và sẽ được hiệu chỉnh lại với số lượng tập văn bản chứa từ đó, nhằm giúp điều chỉnh những từ sẽ được xuất hiện nhiều lần trong nhiều văn bản mà không mang lại giá trị nhiều, ví dụ như các stopwords
Rất nhiều các phiên bản khác nhau được xây dựng dựa trên tf-idf đang được sử dụng trong các search engine như là một công cụ đánh giá sự liên quan của một tài liệu dựa trên truy vấn của người dùng Một cuộc khảo sát được thực hiện vào năm 20158 cho thấy
8 Beel, Joeran; Gipp, Bela; Langer, Stefan; Breitinger, Corinna “Research-paper recommender systems : a
literature survey”,
KOPS - The Institutional Repository of the University of Konstanz, [online document], 2015 Available:
https://kops.uni-konstanz.de/handle/123456789/32348 [Accessed: Jun 26, 2021]
Trang 3083% các hệ thống khuyến nghị dựa trên văn bản (text-based recommender system) trong các thư viện của các ứng dụng sử dụng tf-idf
Điểm tf-idf là tích của hai thống kê, tf – term frequency (tần số xuất hiện của 1 từ trong
1 văn bản), và idf – inverse document frequency (tần số nghịch của 1 từ trong tập văn bản)
Term frequency được tính theo công thức (có nhiều công thức tính khác nhau, sau đây
là công thức được áp dụng trong Apache Lucene):
𝑡𝑡𝑡𝑡(𝑡𝑡, 𝑑𝑑) = �𝑛𝑛𝑡𝑡𝑡𝑡
Trong đó, t là term (hay từ) của chúng ta, d là văn bản và 𝑛𝑛𝑡𝑡𝑡𝑡 là số lần xuất hiện của từ trong văn bản Như chúng ta thấy, nếu số lần xuất hiện của từ trong văn bản càng nhiều, thì điểm tf(t,d) của chúng ta sẽ càng lớn, văn bản sẽ được xác định có sự liên quan lớn đến term
Inverse document frequency được tính theo công thức:
𝑖𝑖𝑑𝑑𝑡𝑡(𝑡𝑡, 𝐷𝐷) = 1 + log �𝑛𝑛 𝑛𝑛𝑡𝑡
𝑡𝑡𝑡𝑡+ 1�
Cũng giống như trên, t là term, D là các văn bản, 𝑛𝑛𝑡𝑡 là số lượng văn bản trong D, và 𝑛𝑛𝑡𝑡𝑡𝑡
là số lượng các văn bản trong D chứa term t Như chúng ta thấy, khi số lượng văn bản
chứa một từ là 𝑛𝑛𝑡𝑡𝑡𝑡 tăng lên, thì chỉ số idf(t,D) sẽ giảm Hàm log giúp giữ cho chỉ số idf(t,D) không tăng quá nhanh khi 𝑛𝑛𝑡𝑡𝑡𝑡 nhỏ và 𝑛𝑛𝑡𝑡 lớn Điều này có nghĩa là đối với những
từ càng hiếm gặp trong các văn bản, thì chỉ số idf(t,D) sẽ càng cao
Cả hai chỉ số tf và idf sẽ bổ sung cho nhau Tf sẽ đóng vai trò giúp xác định tầm quan trọng của một từ ngữ trong văn bản, trong khi đó Idf sẽ giúp loại bỏ đi những từ ngữ quá phổ biến ở quá nhiều văn bản, ví dụ như các stopwords “và, hoặc, nhưng, vì,…”
Trang 31Điểm tf-idf cuối cùng được tính bằng tích giữa hai chỉ số nêu trên, có dạng:
𝑡𝑡𝑡𝑡𝑖𝑖𝑑𝑑𝑡𝑡(𝑡𝑡, 𝑑𝑑, 𝐷𝐷) = 𝑡𝑡𝑡𝑡(𝑡𝑡, 𝑑𝑑) ⦁ 𝑖𝑖𝑑𝑑𝑡𝑡(𝑡𝑡, 𝐷𝐷) Điểm tf-idf càng cao thì độ liên quan đến query của người dùng càng lớn
Trên đây chúng ta đã xét về một văn bản một field Trong Lucene, một văn bản có thể
có nhiều field tương ứng (ví dụ, một bài viết có thể có tựa đề, tóm tắt, nội dung,…) Sau đây sẽ là cách mà Lucene đã áp dụng những công thức trên đối với một văn bản nhiều field
Trong thực tế, tf-idf thông thường sẽ được dùng kèm với nhiều cải tiến khác nhau Với Lucene thì dùng một chỉ số là chỉ số chuẩn hoá lượng term trong văn bản (field length norms) Hay nói cách khác, nếu term xuất hiện trong một field ngắn, chẳng hạn tựa đề, nhiều khả năng nội dung của field đó là đang nói về terms hơn khi term xuất hiện trong một field dài Field length norm được tính bởi công thức:
Trang 32cần tìm Ngoài ra ta cũng có thể gắn thêm trọng số cho một field nào đó để tăng sự quan trọng của field
Okapi BM25 là một cách thực hiện cải tiến dựa trên tf-idf Trong một chỉ số tf-idf đơn giản, như trên đã đề cập, ta chỉ xét đến tần suất và sẽ hiệu chỉnh dựa trên độ phổ biến của term đó trong các văn bản Okapi BM25 sẽ tiếp tục xét thêm độ dài của văn bản và
độ bão hoà của một term trong đoạn văn bản
Với một query Q chứa các term q1, … qn, điểm BM25 của một văn bản D sẽ được tính
sẽ không cần xét điểm tăng quá nhiều nữa Đồng thời, trong trường hợp query theo nhiều term thì điều này cũng giúp cho điểm BM25 sẽ cao hơn khi match được nhiều term hơn
Ngoài ra, thành phần �1 − 𝑏𝑏 + 𝑏𝑏 ⦁ 𝑎𝑎𝑎𝑎𝑎𝑎𝑡𝑡𝑎𝑎|𝐷𝐷| � sẽ tăng dần khi độ dài văn bản |𝐷𝐷| tăng dần, giúp điểm của những văn bản ngắn sẽ cao hơn những văn bản dài Biến b dùng để điều chỉnh mức độ quan trọng của độ dài văn bản
Trang 33Thành phần (𝑘𝑘1+ 1) là một hằng số và trong thực tế, khi không xét cũng không ảnh hưởng đến kết quả tìm kiếm Vì vậy thực tế khi cài đặt Lucene không đưa thành phần này vào công thức của mình
Chỉ số k=1.25, b=0.75 được Lucene chọn dùng mặc định trong thuật toán của mình
Cuối cùng là thành phần 𝐼𝐼𝐷𝐷𝐼𝐼(𝑞𝑞𝑖𝑖) Không như IDF của chỉ số tf-idf, thành phần IDF của BM25 được tính theo công thức:
𝐼𝐼𝐷𝐷𝐼𝐼(𝑞𝑞𝑖𝑖) = ln �𝑁𝑁 − 𝑛𝑛(𝑞𝑞𝑛𝑛(𝑞𝑞 𝑖𝑖) + 0.5
𝑖𝑖) + 0.5 + 1�
Với N là tổng số lượng văn bản, và 𝑛𝑛(𝑞𝑞𝑖𝑖) là số lượng văn bản chứa term 𝑞𝑞𝑖𝑖
Trong khoá luận tốt nghiệp này, tf-idf được sử dụng trong những bài viết, tài liệu và bài tập liên quan đến bài viết, tài liệu hoặc bài tập mà người dùng đang xem
Okapi BM25 được dùng làm cách sắp xếp kết quả mặc định trong trang tìm kiếm bài viết, tài liệu và bài tập
Tất cả hai cách trên đều được sử dụng thông qua thư viện Apache Lucene
Trong hai chỉ số thống kê trên, chúng ta đã chỉ ra cách để xác định sự liên quan của một term đến một văn bản Trong thực tế, một query của người dùng sẽ chứa nhiều term, vì vậy chúng ta sẽ sử dụng một công cụ khác có tên là Vector Space Model
2.2 Vector Space Model (mô hình không gian vector)
Vector Space Model (tiếng Việt: Mô hình không gian vector) là một mô hình đại số dùng
để thể hiện các tài liệu văn bản (và bất kì đối tượng nào nói chung) dưới dạng các vector Trong những vector đó, từng không gian của vector sẽ tương ứng với một term (thường
là một từ) Nếu tồn tại term đó trong tài liệu văn bản, thì giá trị của nó sẽ khác 0
Trang 34Có rất nhiều cách để xác định giá trị trên, trong đó cách được biết đến nhiều nhất là sử dụng chỉ số thống kê tf-idf của tài liệu văn bản Cách tính điểm này cũng được tích hợp trong thư viện Apache Lucene mà hệ thống đang sử dụng
Để xác định sự liên quan giữa một query của người dùng với một tài liệu, chúng ta sẽ tiến hành tính điểm VSM giữa query của người dùng và văn bản Gọi V(q) là VSM của query của người dùng, V(d) là VSM của văn bản Điểm VSM thực chất sẽ là tương đồng cosine (cosine similarity) giữa hai vector V(d) và V(q), được tính bởi công thức sau:
V(q)·V(d) là tích vô hướng giữa hai vector, và |V(q)||V(d)| là tích độ dài
Đây là công thức tính cơ bản Trong thực tế, Apache Lucene đã sử dụng một công thức phức tạp, với các booster và xét thêm cả độ dài/ngắn của văn bản, được thể hiện thông qua phiên bản đơn giản sau:
Lucene đã thực hiện cải tiến công thức VSM đơn giản nhằm tăng tính hiệu quả và chất lượng của kết quả tìm kiếm như sau:
9 Nguồn: https://lucene.apache.org/core/7_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html
10 Nguồn: https://lucene.apache.org/core/7_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html
Trang 35− Việc chuẩn hoá một vector xoá đi thông tin về độ dài của văn bản, đôi lúc sẽ gây vấn đề Với một văn bản chứa trong nó nhiều đoạn văn được lặp lại nhiều lần thì
có thể xoá đi thông tin này, nhưng nếu nó không chứa đoạn văn được lặp lại nào thì việc xoá đi lại không phù hợp Để tránh vấn đề này, một cách chuẩn hoá khác
sẽ được sử dụng, đưa vector trở về một vector bằng hoặc lớn hơn vector đơn vị
Đó là doc-len-norm(d)
− Trong quá trình indexing, người dùng có thể xác định chỉ số quan trọng của văn bản này so với văn bản khác thông qua doc-boost(d)
− Lucene hoạt động dựa trên các fields (các trường), ví dụ một văn bản sẽ có field
là tựa đề, mô tả,… Ngoài việc thực hiện đánh chỉ số quan trọng cho toàn bộ văn bản, cũng có thể thực hiện đánh chỉ số quan trọng cho các fields (công thức trên chỉ xét một văn bản được index trong 1 field duy nhất, không chứa nhiều field)
− Trong khi tìm kiếm người dùng cũng có thể thực hiện gán chỉ số quan trọng đến các terms trong câu truy vấn của mình: query-boost(q)
− Một văn bản có thể chứa nhiều term mà không nhất thiết phải chứa tất cả các term trong câu truy vấn của người dùng
Công thức trên được áp dụng trong trường hợp chúng ta tính trên từng terms riêng lẻ Sau đây là công thức thực tế Apache Lucene sử dụng khi tiến hành matching TF-IDF:
Những thay đổi so với công thức trên bao gồm:
11 Nguồn: https://lucene.apache.org/core/7_6_0/core/org/apache/lucene/search/similarities/TFIDFSimilarity.html
Trang 36− Tổng của điểm VSM của tất cả các term trong câu query của người dùng với một văn bản thay vì chỉ xác định trên từng term riêng biệt
− Norm(t,d): Chỉ số quan trọng dùng để tăng điểm của term t trong văn bản d, được xác định dựa trên số tokens trong field này
− t.getBoost() là chỉ số quan trọng mà người dùng yêu cầu trong câu query của họ
− tf(t in d): Chỉ số tf của term t trong văn bản d, với cách tính đã được đề cập bên trên
− Idf(t): Chỉ số idf của term t, với cách tính đã được đề cập bên trên
2.3 Wilson Confidence Interval score
Thông thường ở các trang web, chúng ta phải có một cách để giúp người dùng xác định được những tài nguyên tốt nhất trên hệ thống Vậy câu hỏi đặt ra là làm thế nào để sắp xếp những tài nguyên tốt nhất của hệ thống sẽ hiện ra trước, và những tài nguyên không tốt bằng sẽ giảm điểm xếp hạng ? Chúng ta cần tính ra một con số điểm nào đó để có thể thực hiện sắp xếp
Cách tính điểm đầu tiên là chúng ta sẽ dùng tổng số lượt upvote trừ đi cho tổng số lượt
downvote của tài nguyên Hay thể hiện bằng công thức toán học:
Score = Positive ratings – Negative ratings
Tuy nhiên, cách làm này chưa hoàn hảo Giả sử như ta có item X, 600 positive ratings
và 400 negative ratings thì Score là 200 (60% positive) Item Y ta có 5,500 positive ratings và 4,500 negative ratings thì Score là 1000 (55% positive) Công thức trên sẽ làm cho Item Y được sắp xếp hiển thị trước hơn so với Item X Việc sắp xếp như vậy không đúng Trang web đang mắc lỗi này là Urban Dictionary
Trang 37Hình 2-4 Urban Dictionary hiển thị sorting chưa phù hợp 12
Cách tính điểm thứ hai là chúng ta sẽ dùng tỉ lệ upvote và downvote Hay thể hiện bằng
công thức toán học:
Score = Average rating = (Positive ratings) / (Total ratings) Cách này sẽ hoạt động ổn nếu chúng ta luôn luôn có nhiều đánh giá, tuy nhiên giả sử như ta có item A với 2 positive ratings và 0 negative ratings (Score là Infinity) Item B
có 100 positive ratings và 1 negative ratings (Score là 100) Thuật toán này sẽ làm cho Item B dù có rất nhiều đánh giá tốt, cũng bị xếp sau Item A có rất ít đánh giá tốt Điều này cũng không hợp lý Trang web amazon.com là trang web đang bị mắc lỗi như vậy
12 Nguồn: https://www.evanmiller.org/how-not-to-sort-by-average-rating.html
13 Nguồn: https://www.evanmiller.org/how-not-to-sort-by-average-rating.html
Trang 38Gi ải pháp:
Score = Cận dưới của điểm trong khoảng tin cậy Wilson (Wilson score confidence interval) cho tham số Bernoulli (Bernoulli parameter) Chúng ta cần cân bằng giữa tỉ lệ positive ratings với một sự sai sót trong việc ước lượng khi tập quan sát của chúng ta nhỏ Công thức toán học cho việc này đã được nhà toán học Edwin B Wilson đưa ra trong năm 1927 Câu hỏi chúng ta cần đặt ra là: Với số lượng đánh giá hiện tại mà tôi có, ước lượng chỉ số positive ratings thực tế với độ tin cậy
là 0.95 (95%) Wilson đưa ra cho chúng ta câu trả lời Giả sử trong hệ thống chỉ có positive và negative ratings, chúng ta sẽ tiến hành lấy cận dưới trong khoảng ước lượng của công thức tính sau đây:
(Có dấu ± trong công thức, ứng với cận trên và cận dưới) Ở đây, 𝑝𝑝̂ là tỉ lệ positive ratings mà ta quan sát được, 𝑧𝑧𝑎𝑎/2 ứng với phân vị (1-a/2) trong tứ phân vị của phân phối chuẩn, và n là tổng số lượt vote
Các trang nổi tiếng đang sử dụng giải thuật này trong việc sắp xếp gồm có Reddit, Yelp, Digg,…
14 Nguồn: https://www.evanmiller.org/how-not-to-sort-by-average-rating.html
Trang 392.4 Hotness và v ấn đề các tài nguyên đang được nhiều sự chú ý
Mục tiêu của chúng ta là xây dựng một công thức để có thể đưa được những tài liệu đang hot đến cho người dùng, phục vụ tự động đưa các tài liệu mới và được nhiều tương tác nhất đến với người sử dụng website
Cho thời gian gửi tài nguyên lên của người dùng là A và một thời điểm B cố định ngày 02/11/2015, 9:59:50 Ta tính được t là số giây giữa hai thời điểm A và B với công thức như sau:
𝑡𝑡(𝑡𝑡, 𝑦𝑦, 𝑧𝑧) = log10𝑧𝑧 + 45000𝑦𝑦𝑡𝑡 Đây là công thức tính độ hot được reddit xây dựng để sắp xếp các bài viết mới nhất và được nhiều tương tác nhất đến trang đầu
15 Công thức được xây dựng dựa trên expected utility theory, có thể xem chứng minh tại:
https://www.evanmiller.org/deriving-the-reddit-formula.html
Trang 40Ảnh hưởng của thời gian đăng tải đến điểm hot:
Dựa vào công thức, chúng ta có thể thấy:
− Thời gian đăng tài nguyên sẽ có tác động lớn đến điểm và thuật toán sẽ sắp xếp những tài nguyên được đăng mới cao hơn so với các tài nguyên cũ
− Ở những tài nguyên cũ điểm số sẽ không giảm, nhưng những tài nguyên mới sẽ dần dần có điểm cao hơn những tài nguyên cũ
Hình 2-7 Những tài nguyên cùng số lượt vote nhưng mới hơn sẽ được xếp hạng cao
Thang điểm logarithm:
Bằng cách lấy điểm logarithm, chúng ta sẽ khiến cho một số lượt votes đầu sẽ có trọng
số cao hơn những lượt votes sau
16 Nguồn: https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9
17 Nguồn: https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9