1. Trang chủ
  2. » Cao đẳng - Đại học

XÂY DỰNG ỨNG DỤNG CHIA sẻ tài LIỆU, hỗ TRỢ học tập CHO SINH VIÊN UIT

172 16 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 172
Dung lượng 5,31 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 3

THÔ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 4

L Ờ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 5

M Ụ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 6

CHƯƠ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 7

DANH 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 8

Hì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 9

Hì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 10

DANH 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 11

Bả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 12

Bả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 13

Bả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 14

DANH 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 15

Nhằ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 16

CHƯƠ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 17

Hỗ 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 18

Về 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 19

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

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 20

Miễ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 21

Vớ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 22

Tự động liên kết tài liệu và

các bài viết, bài tập liên

Trang 23

Vớ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 24

Cho 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 25

hỏ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 28

mô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 29

CHƯƠ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 30

83% 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 32

cầ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 33

Thà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 34

Có 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 37

Hì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 38

Gi ả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 39

2.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

Ngày đăng: 05/09/2021, 20:55

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w