QUAN
Giới thiệu/Lí do chọn đề tài
Ở bậc đào tạo Đại học, việc tổng hợp tài liệu học tập trở nên khó khăn do sự phong phú của các trường và chuyên ngành khác nhau Hiện nay, các nguồn tài liệu thường được đăng tải rời rạc trên nhiều kênh, trong đó mạng xã hội là nguồn phổ biến nhất.
Sinh viên thường gặp khó khăn trong việc tìm kiếm tài nguyên học tập trên các nền tảng như Facebook, các trang chia sẻ tài liệu như tailieu.vn và 123doc, cũng như từ giáo trình do giảng viên cung cấp.
Dưới đây là bảng phân tích các tiêu chí đánh giá nhằm so sánh và đánh giá mức độ tiện dụng của từng kênh thông tin.
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
Tiêu chí đánh giá 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
Dễ dàng, thuận tiện trong việc chia sẻ tài nguyên học tập
Tài nguyên học tập được phân loại, gom nhóm Không Hạn chế Có Có
Dễ dàng, thuận tiện trong việc tìm kiếm tài nguyên học tập
Không Không Có 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á và nhận xét
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á).
Lĩnh vực chia sẻ tập trung vào kiến thức
Người dùng tự thu thập thông tin
Hạn chế (tuỳ vào cài đặt của người dùng).
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
Có thể tham gia với vai trò chủ động, giải bài tập và nhận về phản hồi tự động
Chi phí sử dụng Trả phí (tài liệu mua) hoặc miễn phí
Trả phí hoặc miễn phí
Trả phí hoặc miễn phí
Phương pháp thủ công trong việc tìm kiếm tài liệu hạn chế sự lựa chọn, buộc chúng ta phải đến nhiều địa điểm khác nhau để tự mình lọc và chọn nguồn tài liệu Như bảng so sánh đã chỉ ra, việc này tiêu tốn nhiều thời gian và công sức, đồng thời không có sự hỗ trợ trong việc đánh giá độ tin cậy của tài liệu.
Việc sử dụng mạng xã hội để chia sẻ tài liệu và bài học có thể dẫn đến tình trạng tài liệu dễ bị trôi, không còn hiển thị trên trang duyệt của người dùng và bị thay thế bởi nội dung mới Điều này khiến cho việc tìm kiếm lại tài liệu trở nên khó khăn, vì mạng xã hội không được thiết kế để hỗ trợ việc chia sẻ kiến thức Hơn nữa, chúng ta cũng không thể đánh giá độ tin cậy của tài liệu, do thiếu thông tin về tác giả và mức độ chấp nhận của cộng đồng đối với những đóng góp của họ.
Hệ thống chia sẻ tài liệu của bên thứ ba như tailieu.vn và 123doc.vn (gọi tắt là trang CSTL) gặp phải nhiều nhược điểm Đầu tiên, các trang này không thể đánh giá độ uy tín của người chia sẻ, dẫn đến khó khăn trong việc xác định độ tin cậy của tài liệu học tập Thêm vào đó, lĩnh vực tài liệu trên các trang CSTL rất rộng, khiến quản trị viên khó quản lý chính xác Nhiều tài liệu cũ, không được cập nhật hoặc không chính xác vẫn tồn tại trên hệ thống Cuối cùng, việc tải tài liệu thường đi kèm với nhiều khoản phí, tạo ra rào cản cho sinh viên trong việc tiếp cận thông tin.
Sinh viên thường sử dụng các kênh tự học một cách thụ động, điều này có thể hạn chế hiệu quả học tập Nghiên cứu cho thấy, việc tương tác chủ động với hệ thống hoặc với người học khác có thể nâng cao hiệu quả học tập, chẳng hạn như thông qua việc giải bài tập và nhận phản hồi cùng hướng dẫn ngay lập tức Tuy nhiên, các kênh tự học hiện tại chưa đáp ứng được tính năng này.
Sau khi khảo sát các sản phẩm trên thị trường, nhóm đã xác định và liệt kê những tính năng quan trọng nhất cho việc tự học của sinh viên, đồng thời tiến hành so sánh với các sản phẩm hiện có.
Trong số các hệ thống bài viết phổ biến hiện nay, mạng xã hội như Facebook và các nền tảng blog như Medium, Spiderum, Kipalog, và Viblo đang được ưa chuộng.
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]
Dựa trên kết quả xếp hạng từ Alexa.com và các khảo sát, nghiên cứu này chỉ tập trung vào những trang web chia sẻ bài viết trong lĩnh vực công nghệ thông tin (CNTT) tại Việt Nam.
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
Tiêu chí đánh giá Facebook Medium Spiderum
Giao diện thân thiện, dễ sử dụng
Có Có Có Có Có Có
Hỗ trợ tìm kiếm bài viết, sắp xếp kết quả theo nhiều tiêu chí
(đang hot, nhiều like, mới nhất)
Có Có Có Có Có Có
Bài viết được sắp xếp theo danh mục, các nhóm rõ ràng
Có Có Có Có Có Có
Tự động liên kết, 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
Không Không Không Không Không Có
Tương tác với bài đăng (like, lưu về kho cá nhân).
Có Có Có Có Có Có
Hỗ trợ bình luận, tương tác với bình luận
Có Có Có Có Có Có
Hỗ trợ chèn công thức toán học, highlight code
Không Không Không Không Không Có
Hỗ trợ tố cáo bài viết, bình luận vi phạm
Có Có Có Có Có Có Đăng tải bài viết dễ dàng Có Có Có Có Có Có
Giao diện soạn bài có công cụ
GUI hỗ trợ định dạng
Hạn chế Có Có Có Có Có
Hỗ trợ thêm biểu thức toán Không Không Không Không Không Có học
Hỗ trợ highlight code các ngôn ngữ lập trình phổ biến
Không Hạn chế (phải dùng bên thứ ba).
Có thể hẹn lịch đăng bài viết Có Có Không Không Không Có
Hỗ trợ tagging cho bài viết Có Có Có Có Có Có
Chi phí sử dụng Miễn phí Miễn phí(một phần nộidung sẽ tốn phí)
Miễn phí Miễn phí Miễn phí Miễn phí
Các trang chia sẻ kiến thức hiện nay đã tổ chức tài nguyên một cách hiệu quả và cung cấp nhiều công cụ hỗ trợ viết bài Mặc dù tương tác người dùng đã được cải thiện, nhưng vẫn còn nhiều trang chưa đáp ứng tốt nhu cầu chia sẻ kiến thức cho các môn học đặc thù như toán học và lập trình.
Hiện nay, sinh viên Đại học Công nghệ Thông tin thường sử dụng ba nhóm trang chia sẻ tài liệu chính, bao gồm: trang chia sẻ tài liệu trong nước, trang chia sẻ tài liệu nước ngoài và trang chuyên ngành CNTT Dưới đây là một số trang web nổi tiếng và phổ biến trong cộng đồng sinh viên.
Trang chia sẻ tài liệu phổ biến trong nước bao gồm 123doc và tailieu.vn, trong khi trang quốc tế nổi bật là coursehero Đặc biệt, cho lĩnh vực Công Nghệ Thông Tin, người dùng có thể tham khảo các trang như cuuduongthancong.com và 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
Tiêu chí đánh giá Trang chia sẻ tài liệu trong nước
Trang chia sẻ tài liệu nước ngoài
Trang chia sẻ tài liệu CNTT thốngHệ đề xuất
Giao diện thân thiện, dễ sử dụng Có Có Có Có
Hỗ trợ tìm kiếm tài liệu, sắp xếp theo nhiều tiêu chí
(like/dislike), cho phép lưu về kho tài liệu cá nhân
Hỗ trợ đánh giá chất lượng tài liệu thông qua điểm uy tín của người đăng
Dựa trên kết quả xếp hạng từ Alexa.com và khảo sát, nghiên cứu này chỉ tập trung vào các trang web chia sẻ tài liệu thuộc lĩnh vực công nghệ thông tin và có nguồn gốc từ các trường đại học tại Việt Nam.
Tự động liên kết tài liệu và các bài viết, bài tập liên quan
Hỗ trợ bình luận, tương tác với bình luận (like, trả lời)
Không (rất ít trang cho phép bình luận và tương tác với bình luận)
Hỗ trợ tố cáo tài liệu, bình luận vi phạm Có Có Không Có Đăng tải và chia sẻ tài liệu dễ dàng Có Có Không Có
Có thể hẹn lịch đăng tải tài liệu Không Không Không Có
Hỗ trợ tagging cho tài liệu Có Có Không Có
Chi phí sử dụng tài liệu trên các trang chia sẻ có thể là miễn phí hoặc trả phí Trong nước, nhiều trang chia sẻ tài liệu chưa hỗ trợ đánh giá độ tin cậy qua điểm uy tín của người dùng, trong khi các trang nước ngoài cung cấp nhiều tính năng hơn nhưng lại có chi phí sử dụng cao, gây khó khăn cho sinh viên.
Mục tiêu
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, với ba tính năng chính: chia sẻ bài viết, chia sẻ tài liệu và làm bài tập Mục tiêu của đề tài là tạo ra một nền tảng hữu ích cho sinh viên trong quá trình học tập.
Nền tảng này kế thừa những tính năng và trải nghiệm người dùng hiệu quả từ các trang mạng xã hội và blog phổ biến, đồng thời cung cấp thêm công cụ nhập công thức toán học, công cụ làm nổi bật mã code, cùng với khả năng tự động gợi ý và liên kết các tài liệu, bài tập liên quan đến nội dung bài viết.
Hệ thống chia sẻ tài liệu mới kế thừa những ưu điểm nổi bật từ các nền tảng hiện có, như tính tiện dụng, đồng thời nâng cao sự tương tác giữa người dùng và hệ thống Điều này được thực hiện thông qua các tính năng đánh giá tài nguyên học tập, cho phép người dùng nhận xét và chấm điểm, cũng như xây dựng điểm uy tín cá nhân.
Hệ thống làm bài tập được phát triển cho phép người dùng thực hiện bài tập và nhận kết quả ngay lập tức Người dùng sẽ được cung cấp hướng dẫn giải chi tiết cho từng câu hỏi, đồng thời có thể lưu lại kết quả Ngoài ra, hệ thống cũng hỗ trợ báo cáo những bài tập có lời giải chưa chính xác.
Phạm vi
− Đối tượng: Sinh viên trường Đại học Công nghệ Thông tin và sinh viên các trường khác có quan tâm đến việc tự học kiến thức CNTT
− Môi trường sử dụng: Bất kì thiết bị nào hỗ trợ trình duyệt Web hỗ trợ Javascript ES6, HTML5 và có thể truy cập Internet.
Nội dung nghiên cứu
Nghiên cứu và tìm hiểu về công nghệ Spring, Hibernate và ReactJS, đồng thời áp dụng những best practices tương ứng để nâng cao hiệu quả phát triển Bên cạnh đó, cần nghiên cứu và áp dụng kỹ thuật tăng cường hiệu suất hệ thống, đặc biệt khi số lượng người dùng gia tăng, như sử dụng CDN để cải thiện tốc độ và độ ổn định.
Nghiên cứu các quy tắc thiết kế là rất quan trọng để bảo mật dữ liệu và bảo vệ hệ thống khỏi các cuộc tấn công từ bên ngoài Một trong những biện pháp hiệu quả là xác thực đầu vào của người dùng, giúp ngăn chặn những lỗ hổng bảo mật và đảm bảo an toàn cho thông tin.
− 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).
Phương pháp thực hiện
Thực hiện đề tài theo các bước:
Nghiên cứu về những khó khăn mà sinh viên gặp phải trong quá trình tự học là rất cần thiết, nhằm xác định các rào cản và hạn chế trong việc phát triển kỹ năng tự học Để nâng cao hiệu quả của việc tự học, cần thiết phải đề xuất giải pháp dưới dạng hệ thống tự động, giúp sinh viên có công cụ hỗ trợ phù hợp, từ đó cải thiện khả năng tiếp thu kiến thức và quản lý thời gian học tập một cách 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.
− 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.
Mô tả tính năng
Hệ thống sẽ tích hợp ba tính năng chính: chia sẻ bài viết, chia sẻ tài liệu và giải bài tập Bên cạnh đó, còn có các tính năng phụ như đánh giá điểm uy tín của người dùng, bình luận, tương tác, tìm kiếm và quản trị Đối với người dùng (khách) khi truy cập vào hệ thống, những tính năng này sẽ mang lại trải nghiệm phong phú và tiện lợi.
Bài viết cung cấp nhiều tính năng hữu ích cho người dùng, bao gồm khả năng tìm kiếm và sắp xếp bài viết theo nhiều tiêu chí khác nhau, xem bài viết theo danh mục cụ thể, và nhận gợi ý tài liệu cùng bài tập dựa trên nội dung bài viết Người dùng có thể tương tác với bài viết thông qua các hành động như thích, báo cáo, và lưu trữ vào kho cá nhân Ngoài ra, họ còn có thể bình luận, tương tác với các bình luận khác, đăng tải bài viết mới, nhập công thức toán học, highlight code, hẹn lịch đăng bài viết, cũng như thực hiện tagging và phân loại bài viết để quản lý nội dung hiệu quả hơn.
Tính năng tài liệu giúp người dùng dễ dàng tìm kiếm tài liệu theo môn học hoặc chủ đề cụ thể, đồng thời cho phép sắp xếp tài liệu theo nhiều tiêu chí như trending, hot, và đánh giá tốt nhất Người dùng có thể tương tác với tài liệu thông qua các chức năng like/dislike, lưu trữ, tố cáo, và đăng tải tài liệu Ngoài ra, họ còn có thể tải về tài liệu, bình luận, hẹn lịch đăng tải, và dán nhãn cho tài liệu để quản lý hiệu quả hơn.
Tính năng thực hiện bài tập giúp người dùng làm bài và nhận đáp án cùng lời giải chi tiết qua hệ thống trắc nghiệm Bài tập được phân loại theo từng chủ đề, mang đến trải nghiệm học tập hiệu quả và tiện lợi.
Tại UIT, có 13 môn học phù hợp với chương trình đào tạo, hỗ trợ người dùng đã đăng nhập lưu lại lượt thực hiện và điểm số Hệ thống cho phép thảo luận thông qua tính năng bình luận và báo cáo bài tập không chính xác qua chức năng report Ngoài ra, còn có các tính năng hữu ích như gợi ý thời gian giải bài tập và 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 cho phép admin duyệt hoặc từ chối các bài viết được người dùng đăng tải, đồng thời gửi lý do từ chối đến người dùng Admin cũng có khả năng quản lý các tố cáo liên quan đến bài viết và bình luận, cũng như chỉnh sửa nội dung bài viết của người dùng khi cần thiết.
Quản lý tài liệu cho phép admin duyệt hoặc từ chối tài liệu mà người dùng đăng tải, đồng thời gửi lý do từ chối đến người dùng Admin cũng có thể quản lý các tố cáo và bình luận liên quan đến tài liệu, cũng như thực hiện chỉnh sửa nội dung tài liệu khi cần thiết.
Quản lý bài tập cho phép Admin kiểm soát các tố cáo từ người dùng liên quan đến nội dung bài tập và bình luận trong bài tập, đảm bảo tính minh bạch và chất lượng của nội dung.
− 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).
SỞ LÝ THUYẾT
Thống kê chỉ số TF-IDF (Term frequency – inverse document frequency) và cải tiến Okapi BM25
Trong truy xuất thông tin, chỉ số tf-idf (tần suất từ - tần suất ngược của tài liệu) là một công cụ thống kê quan trọng để xác định mức độ quan trọng của từ trong một tập văn bản Chỉ số này tăng theo số lần xuất hiện của từ trong văn bản, nhưng được điều chỉnh dựa trên số lượng tài liệu chứa từ đó, giúp loại bỏ những từ không mang giá trị cao như stopwords.
Nhiều phiên bản khác nhau của tf-idf đã được phát triển và đang được sử dụng trong các công cụ tìm kiếm để đánh giá mức độ liên quan của tài liệu dựa trên truy vấn người dùng Một cuộc khảo sát thực hiện vào năm 2015 đã chỉ ra điều nà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].
83% các hệ thống khuyến nghị dựa trên văn bản trong các ứng dụng sử dụng phương pháp tf-idf Điểm tf-idf được tính bằng cách nhân hai thống kê: tf (tần số xuất hiện của từ) và idf (tần số ngược của tài liệu), giúp xác định mức độ quan trọng của từ trong một tập hợp văn bản.
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 bài viết này, t đại diện cho từ khóa, d là văn bản, và số lần xuất hiện của từ trong văn bản được ký hiệu là n Khi số lần xuất hiện của từ trong văn bản tăng lên, điểm tf(t,d) cũng sẽ tăng theo, cho thấy văn bản có mối liên quan lớn đến từ khóa đó.
Inverse document frequency được tính theo công thức:
Cũng giống như trên, t là từ khóa, D là tập hợp các văn bản, N là tổng số văn bản trong D, và n là số văn bản trong D chứa từ khóa t Khi số lượng văn bản chứa từ khóa t (n) tăng lên, chỉ số idf(t,D) sẽ giảm Hàm log giúp kiểm soát sự gia tăng của chỉ số idf(t,D), ngăn không cho nó tăng quá nhanh.
������������ 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 (tần suất từ) và idf (tần suất đảo ngược) đều hỗ trợ lẫn nhau trong việc phân tích văn bản Trong khi tf giúp xác định mức độ quan trọng của từ ngữ trong một tài liệu cụ thể, idf lại có tác dụng loại bỏ những từ quá phổ biến xuất hiện trong nhiều văn bản, chẳng hạn như các từ dừng như "và", "hoặc", "nhưng", "vì",
16 Đ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
Trong Lucene, một văn bản có thể chứa nhiều field khác nhau, chẳng hạn như tiêu đề, tóm tắt và nội dung Bài viết này sẽ trình bày cách Lucene áp dụng các công thức tìm kiếm cho văn bản có nhiều field, nhằm tối ưu hóa quá trình truy xuất thông tin.
Trong thực tế, tf-idf thường được kết hợp với nhiều cải tiến khác nhau, trong đó Lucene sử dụng chỉ số chuẩn hóa lượng term trong văn bản (field length norms) Điều này có nghĩa là nếu một term xuất hiện trong một field ngắn, chẳng hạn như tiêu đề, thì khả năng nội dung của field đó liên quan đến term đó cao hơn so với khi term xuất hiện trong một field dài Field length norm được tính toán theo một công thức nhất định.
Trong văn bản d, d được xác định bởi số lượng term trong một field f Khi số lượng term trong field tăng lên, điểm norm sẽ giảm Cuối cùng, điểm của một term trong field được tính bằng tích của chỉ số tf-idf và norm.
Trong bài viết này, chúng ta đã thảo luận về cách tính điểm liên quan của một thuật ngữ với một văn bản dựa trên các trường (field) Thực tế, một văn bản có thể chứa nhiều trường và người dùng có khả năng thực hiện tìm kiếm trên nhiều trường đồng thời Do đó, chúng ta sẽ tổng hợp tất cả điểm số từ các trường của một văn bản để có được điểm tổng thể cho văn bản đó.
17 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 phương pháp cải tiến dựa trên tf-idf, không chỉ xem xét tần suất của từ mà còn điều chỉnh theo độ phổ biến của từ trong các văn bản Phương pháp này còn tính đến độ dài của văn bản và mức độ bão hòa của từ trong đoạn văn, từ đó nâng cao độ chính xác trong việc đánh giá sự liên quan của tài liệu.
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 với công thức:
Với ����(��������,����) là term frequency trong văn bản D, |
����| là độ dài của văn bản, avgdl là độ dài trung bình của văn bản trong tập các văn bản
Như chúng ta thấy, thành phần
�������������������� � sẽ tăng chậm hơn khi term
Tăng tần suất xuất hiện của một thuật ngữ trong nội dung sẽ giúp xác định rõ ràng sự liên quan của nó, đặc biệt khi thuật ngữ đó xuất hiện nhiều lần Điều này cho phép chúng ta giảm bớt việc xem xét điểm tăng cho những lần xuất hiện sau Hơn nữa, khi truy vấn bao gồm nhiều thuật ngữ, việc này cũng nâng cao điểm BM25, vì nó sẽ phù hợp với nhiều thuật ngữ hơn.
Độ dài văn bản sẽ ảnh hưởng đến điểm số, với những văn bản ngắn có khả năng đạt điểm cao hơn so với văn bản dài Biến b được sử dụng để điều chỉnh mức độ quan trọng của độ dài văn bản trong việc đánh giá.
Thành phần (1 + 1) là một hằng số không ảnh hưởng đến kết quả tìm kiếm trong thực tế Do đó, khi cài đặt Lucene, thành phần này không được đưa vào công thức.
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:
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, phương pháp tf-idf được áp dụng để phân tích các bài viết, tài liệu và bài tập có liên quan đến nội dung mà người dùng đang tìm kiếm.
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
Vector Space Model (mô hình không gian vector)
Mô hình không gian vector (Vector Space Model) là một phương pháp đại số để biểu diễn tài liệu văn bản và các đối tượng khác dưới dạng vector Mỗi không gian trong vector tương ứng với một thuật ngữ (term), thường là một từ Nếu thuật ngữ đó xuất hiện trong tài liệu, giá trị của nó sẽ khác biệt, cho phép phân tích và truy vấn thông tin hiệu quả hơn.
Có nhiều phương pháp để xác định giá trị, trong đó phương pháp phổ biến nhất là sử dụng chỉ số tf-idf trong tài liệu văn bản Phương pháp này đã được tích hợp trong thư viện Apache Lucene Để đánh giá sự liên quan giữa truy vấn của người dùng và tài liệu, ta tính điểm VSM giữa truy vấn và văn bản Gọi V(q) là VSM của truy vấn và V(d) là VSM của văn bản, điểm VSM thực chất là độ tương đồng cosine (cosine similarity) giữa hai vector V(d) và V(q), được tính theo công thức cụ thể.
Hình 2-1 Công thức tính điểm VSM 9
V(q)ãV(d) là tớch vụ hướng giữa hai vector, trong khi |V(q)||V(d)| đại diện cho tớch độ dài Đây là công thức cơ bản, nhưng trong thực tế, Apache Lucene áp dụng một công thức phức tạp hơn, bao gồm các booster và xem xét độ dài của văn bản, được thể hiện qua phiên bản đơn giản hơn.
Hình 2-2 Công thức tính điểm được đơn giản hoá 10
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
Việc chuẩn hóa vector có thể dẫn đến việc mất thông tin về độ dài văn bản, đặc biệt khi văn bản không chứa các đoạn lặp lại Khi văn bản có nhiều đoạn văn lặp lại, việc loại bỏ thông tin này có thể chấp nhận được, nhưng trong trường hợp ngược lại, điều này sẽ không phù hợp Để khắc phục vấn đề này, một phương pháp chuẩn hóa khác được áp dụng là doc-len-norm(d), giúp đưa vector về trạng thái bằng hoặc lớn hơn vector đơn vị.
− 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 trường (fields) như tựa đề và mô tả trong văn bản Nó không chỉ thực hiện đánh chỉ số cho toàn bộ văn bản mà còn cho từng trường riêng biệt, giúp tối ưu hóa quá trình tìm kiếm và truy xuất thông tin.
− 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 sử dụng khi tính toán trên từng thuật ngữ riêng lẻ Dưới đây là công thức thực tế mà Apache Lucene áp dụng trong quá trình khớp TF.
Hình 2-3 Công thức tính điểm thực tế 11
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
− 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.
Wilson Confidence Interval score
Để giúp người dùng dễ dàng xác định các tài nguyên tốt nhất trên trang web, cần có một phương pháp sắp xếp hiệu quả Câu hỏi đặt ra là làm thế nào để những tài nguyên chất lượng cao được hiển thị trước, trong khi những tài nguyên kém hơn sẽ có thứ hạng thấp hơn Điều này đòi hỏi chúng ta phải tính toán một hệ thống điểm số để thực hiện việc sắp xếp này một cách hợp lý.
Để tính điểm, chúng ta sẽ lấy tổng số lượt upvote trừ đi tổng số lượt downvote của tài nguyên Công thức tính điểm có thể được biểu diễn như sau: tổng lượt upvote - tổng lượt downvote.
Score = Positive ratings – Negative ratings
Cách tính điểm cho các item hiện tại chưa hoàn hảo, ví dụ như item X có 600 đánh giá tích cực và 400 đánh giá tiêu cực, sẽ có điểm số là 200 (60% tích cực) Trong khi đó, item Y với 5,500 đánh giá tích cực và 4,500 đánh giá tiêu cực lại chỉ có điểm số 1000 (55% tích cực) Công thức này dẫn đến việc item Y được xếp hạng cao hơn item X, điều này không phản ánh đúng chất lượng thực tế Urban Dictionary là một trang web đang gặp phải lỗi này trong hệ thống xếp hạng của mình.
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)
Phương pháp này hoạt động tốt khi có nhiều đánh giá, nhưng nếu xét ví dụ về item A với 2 đánh giá tích cực và 0 đánh giá tiêu cực (điểm số là Vô cực) so với item B có 100 đánh giá tích cực và 1 đánh giá tiêu cực (điểm số là 100), thuật toán sẽ xếp item A cao hơn item B, điều này không hợp lý Trang web amazon.com hiện đang gặp phải vấn đề này.
Hình 2-5 Amazon.com hiển thị sorting chưa phù hợp 13
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
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)
Để đạt được sự cân bằng giữa tỉ lệ đánh giá tích cực và sai sót trong ước lượng khi số lượng quan sát còn hạn chế, chúng ta có thể áp dụng công thức do nhà toán học Edwin B Wilson phát triển vào năm 1927 Câu hỏi quan trọng là: Với số lượng đánh giá hiện tại, làm thế nào để ước lượng chỉ số đánh giá tích cực thực tế với độ tin cậy 95%? Wilson đã cung cấp một giải pháp cho vấn đề này Trong hệ thống chỉ bao gồm đánh giá tích cực và tiêu cực, chúng ta sẽ tính toán cận dưới trong khoảng ước lượng theo công thức mà ông đã đề xuất.
Hình 2-6 Công thức tính khoảng ước lượng Wilson 14
Trong công thức có dấu ±, biểu thị cho cận trên và cận dưới Tỉ lệ positive ratings quan sát được được ký hiệu là �����, trong khi ��������/2 tương ứ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,
14 Nguồn: https://www.evanmiller.org/how-not-to-sort-by-average-rating.html
Hotness và vấn đề các tài nguyên đang được nhiều sự chú ý
Chúng tôi đang phát triển một công thức nhằm tự động cung cấp cho người dùng những tài liệu đang thịnh hành nhất Mục tiêu là đưa ra các tài liệu mới và có mức độ tương tác cao, phục vụ tốt nhất cho nhu cầu của người sử dụng website.
Để tính số giây t giữa thời gian gửi tài nguyên của người dùng A và thời điểm cố định B (ngày 02/11/2015, 9:59:50), ta sử dụng công thức tính toán thời gian.
Và x là hiệu số giữa upvote và downvote của người dùng đến một tài nguyên ���� = ���� − ����
Chúng ta có điểm đánh giá độ hot của một tài nguyên được tính như sau 15 :
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
25 Ả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 tài nguyên ảnh hưởng đáng kể đến điểm số, với thuật toán ưu tiên sắp xếp tài nguyên mới cao hơn tài nguyên cũ Mặc dù điểm số của tài nguyên cũ không bị giảm, nhưng tài nguyên mới sẽ dần dần đạt điểm cao hơn, thể hiện sự thay đổi trong thứ hạng.
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 16
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
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
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
26 Ảnh hưởng của downvotes đến điểm hot:
Một tài nguyên nhận được nhiều upvote nhưng cũng có nhiều downvote sẽ có thứ hạng thấp hơn so với tài nguyên chỉ có nhiều upvote Điều này đảm bảo rằng những tài nguyên chất lượng thực sự sẽ được ưu tiên hiển thị ở vị trí cao hơn.
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) 18
18 Nguồn: https://medium.com/hacking-and-gonzo/how-reddit-ranking-algorithms-work-ef111e33d0d9
QUAN CÔNG NGHỆ 28 3.1 Tổng quan về hệ sinh thái
Apache Lucene
Hình 3-8 Logo của Apache Lucene 25
Apache Lucene là một thư viện tìm kiếm mạnh mẽ cho các hệ thống, được phát hành lần đầu vào năm 1999 và đã trải qua hơn 20 năm phát triển Được viết bằng ngôn ngữ Java, Lucene cung cấp nhiều tính năng tìm kiếm hiệu quả, hỗ trợ người dùng trong việc truy xuất thông tin nhanh chóng và chính xác.
Lucene không chỉ đơn thuần là một công cụ tìm kiếm, mà còn tích hợp nhiều công cụ mạnh mẽ để trích xuất các thuộc tính của văn bản và thực hiện thống kê một cách dễ dàng.
Apache Lucene là một công nghệ tìm kiếm phổ biến, hiện đang được áp dụng rộng rãi trên toàn cầu Hai nền tảng tìm kiếm mã nguồn mở nổi bật, Apache Solr và ElasticSearch, đã tích hợp Lucene làm phần cốt lõi cho các giải pháp tìm kiếm của họ.
PostgreSQL là một hệ quản trị cơ sở dữ liệu quan hệ, cho phép lưu trữ dữ liệu hiệu quả Điểm nổi bật của PostgreSQL là sự tuân thủ tốt các tiêu chuẩn SQL, giúp đảm bảo tính tương thích và linh hoạt trong việc quản lý dữ liệu.
25 Nguồn: https://lucene.apache.org/
26 Nguồn: https://www.postgresql.org/
36 là một cơ sở dữ liệu quan hệ nổi bật, được phát triển bởi đội ngũ lập trình viên tình nguyện, không bị chi phối bởi bất kỳ công ty nào.
Sau 24 năm phát triển, PostgreSQL đã đạt được độ ổn định cao và trở thành một cơ sở dữ liệu mạnh mẽ Các đánh giá gần đây cho thấy hiệu suất của PostgreSQL vượt trội hơn so với nhiều cơ sở dữ liệu quan hệ khác.
PostgreSQL được sử dụng tại rất nhiều trang 28 : Gitlab, Heroku, Sony Online, Skype, Instagram, …
Thư viện ReactJS và
ReactJS là thư viện JavaScript do Facebook phát triển, chuyên dùng để xây dựng Giao diện người dùng (UI) Với hệ sinh thái đa dạng và phong phú, ReactJS cho phép nhúng mã HTML vào mã JavaScript, giúp lồng ghép các đoạn HTML một cách dễ dàng Việc tích hợp JavaScript và HTML trong JSX làm cho các component trở nên dễ hiểu hơn.
− Mục đích sử dụng của ReactJS:
27 Nguồn: https://en.wikipedia.org/wiki/PostgreSQL#Benchmarks_and_performance
28 Nguồn: https://en.wikipedia.org/wiki/PostgreSQL
29 Nguồn: https://auth0.com/blog/bootstrapping-a-react-project/
Building Single Page Applications (SPAs) involves creating websites using reusable and scalable components This approach enhances performance and user experience by leveraging Virtual DOM and client-side rendering techniques.
ReactJS offers several advantages, including its accessibility and ease of learning compared to many other frameworks It is supported by useful plugins such as React Dev Tool, Redux, and Dev Tool, along with clear documentation available at https://reactjs.org/ and a strong community for assistance Additionally, many high-traffic websites, including Facebook, Instagram, Khan Academy, Dropbox, Atlassian, Netflix, Reddit, and BBC, utilize ReactJS, highlighting its popularity and reliability.
ReactJS có một số nhược điểm như chỉ là một thư viện UI, do đó cần kết hợp với nhiều thư viện khác để xây dựng một website hoàn chỉnh Thêm vào đó, kích thước của thư viện này khá lớn, và nó cũng không phù hợp cho tối ưu hóa SEO.
Trong project còn sử dụng nhiều thư viện khác tích hợp với reactjs như react-router- dom, material-ui, react-router, redux, redux-thunk
Redux là một thư viện JavaScript giúp quản lý trạng thái ứng dụng một cách hiệu quả, được phát triển dựa trên kiến trúc Flux do Facebook giới thiệu Nó tương thích hoàn hảo với ReactJS, mang lại sự tiện lợi trong việc quản lý state.
Trong ứng dụng ReactJS, việc chia sẻ state qua props là điều thường gặp, nhưng nếu lạm dụng sẽ gây ra sự phụ thuộc trong cấu trúc mã Redux được phát triển để giải quyết vấn đề này.
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 30 −
Redux có bốn thành phần chính: Action, Reducer, Store và Service Action là thông tin được gửi lên store khi được gọi, bao gồm payload và data Reducer xác định cách thức thay đổi state sau khi action được gọi Store là nơi quản lý state, cho phép truy cập và cập nhật nó Cuối cùng, Service tương tác với Back-end và sau khi nhận kết quả, sẽ gọi action tương ứng để cập nhật state.
30 Nguồn: https://freetuts.net/redux-la-gi-tai-sao-lai-ung-dung-trong-reactjs-2618.html
DỰNG ỨNG DỤNG CHIA SẺ TÀI LIỆU, HỖ TRỢ HỌC TẬP
4.1 Xác định và phân tích yêu cầu
Bảng 4-1 Danh sách các Actor trong hệ thống
1 ADMIN Người quản trị hệ thống.
2 USER Người dùng hệ thống để học tập.
Bảng 4-2 Danh sách các Usecase
STT Tên Use-case Ý nghĩa/Ghi chú
1 Tìm kiếm Người dùng tiến hành tìm kiếm bài viết/tài liệu.
2 Lọc theo danh mục Người dùng lọc danh sách bài viết/tài liệu theo danh mục.
3 Lọc theo môn học Người dùng lọc danh sách tài liệu theo môn học.
4 Sắp xếp Người dùng sắp xếp bài viết/tài liệu theo nhiều tiêu chí “Hot, tốt nhất, like nhiều nhất, view nhiều nhất”.
5 Tương tác Người dùng thực hiện tương tác đến bài viết/tài liệu/bình luận.
6 Tố cáo Tố cáo bài viết/tài liệu vi phạm nguyên tắc cộng đồng.
7 Lưu về kho cá nhân Người dùng lưu bài viết/tài liệu về kho cá nhân.
8 Xem lý do bị từ chối Người dùng có thể xem lý do bài viết bị từ chối
(trong trường hợp bài viết bị từ chối bởi quản trị viên) của bài viết/tài liệu mình đã đóng góp.
9 Xem trạng thái bài viết/tài liệu Người dùng có thể xem trạng thái bài viết (đang chờ duyệt, đã duyệt, bị từ chối, chưa đăng, đã đăng).
10 Quản lý tố cáo Admin thực hiện quản lý những tố cáo liên quan đến bài viết/tài liệu/bình luận.
11 Xem tố cáo Admin thực hiện xem tố cáo của bài viết/tài liệu/bình luận.
12 Xử lý tố cáo Admin tiến hành xử lý tố cáo của bài viết/tài liệu/bình luận.
13 Hẹn ngày đăng Người dùng chọn ngày đăng bài viết/tài liệu.
14 Gợi ý tài nguyên Gợi ý các tài nguyên khác bên cạnh tài nguyên hiện tại cho người dùng.
15 Gợi ý bài viết Gợi ý các bài viết liên quan đến tài nguyên hiện tại cho người dùng.
16 Gửi bài viết Gửi bài viết lên hệ thống.
17 Xem bài viết Người dùng xem chi tiết một bài viết.
18 Thích bài viết Tiến hành like một bài viết.
19 Quản lý bài viết cá nhân Người dùng quản lý những bài viết của chính mình gửi đến hệ thống.
20 Quản lý bài viết Admin thực hiện quản lý bài viết.
21 Duyệt/từ chối bài viết Admin thực hiện duyệt/từ chối bài viết.
22 Sửa/xoá bài viết Người dùng thực hiện sửa/xoá bài viết của mình
Admin có thể thực hiện sửa/xoá bài viết của người dùng khác.
23 Gửi tài liệu User thực hiện gửi (đóng góp) một tài liệu mới đến hệ thống.
24 Upload tài liệu User tiến hành upload file tài liệu đến server của hệ thống.
25 Xem tài liệu User tiến hành xem một tài liệu.
26 Tải về tài liệu User tiến hành tải về một tài liệu.
27 Thích/không thích tài liệu User gửi phản hồi thích hoặc không thích tài liệu.
28 Quản lý tài liệu cá nhân Người dùng có thể quản lý tài liệu cá nhân của mình.
29 Sửa/xoá tài liệu Người dùng thực hiện sửa/xoá tài liệu.
30 Quản lý tài liệu Admin thực hiện quản lý các tài liệu hiện có trên hệ thống.
31 Duyệt/từ chối tài liệu Admin tiến hành duyệt hoặc từ chối tài liệu.
32 Xem bài tập Người dùng xem một bài tập trên hệ thống.
33 Làm bài tập Người dùng thực hiện trả lời các câu hỏi của bài tập.
34 Tạo ghi chú trên bài tập Người dùng tiến hành tạo một ghi chú cá nhân trên bài tập.
35 Tính thời gian Người dùng sử dụng công cụ tính giờ trên hệ thống bài tập để tính thời gian làm bài.
36 Đặt cờ Người dùng tiến hành đặt cờ cho một câu hỏi.
37 Xem kết quả những lần trước Người dùng xem được kết quả của những lần làm bài trước.
38 Gửi báo cáo sai sót Người dùng tiến hành gửi một báo cáo sai sót đến admin.
39 Nộp bài tập Người dùng nộp lời giải bài tập của mình đến hệ thống.
40 Xem đáp án, lời giải chi tiết Người dùng có thể xem được đáp án, lời giải chi tiết cho bài tập.
41 Lưu kết quả người dùng Người dùng sẽ được lưu lại kết quả trong những lần nộp bài tập.
42 Quản lý báo cáo sai sót Admin tiến hành xử lý báo cáo sai sót của người dùng.
43 Bình luận Người dùng thực hiện bình luận vào bài viết/tài liệu/bài tập.
44 Thêm/sửa/xoá bình luận Người dùng thực hiện thêm/sửa/xoá bình luận.
45 Thích bình luận Người dùng thực hiện like một bình luận.
46 Xác thực Người dùng tiến hành xác thực danh tính của mình với hệ thống.
47 Đăng nhập Người dùng tiến hành đăng nhập vào hệ thống
48 Đăng ký Người dùng tiến hành đăng ký tài khoản trên hệ thống.
49 Quên mật khẩu Người dùng thực hiện các bước để lấy lại mật khẩu.
50 Cập nhật thông tin đăng nhập Người dùng cập nhật thông tin đăng nhập như mật khẩu, email.
51 Xem thông tin Người dùng xem thông tin như điểm uy tín, số bài viết và tài liệu đã đăng, giới thiệu bản thân, tên hiển thị.
52 Chỉnh sửa thông tin Người dùng thực hiện chỉnh sửa thông tin tên hiển thị và giới thiệu bản thân.
53 Xem bài viết/tài liệu được đăng bởi người dùng
Xem các bài viết/tài liệu được đăng bởi một người dùng.
54 Phân quyền Admin gán các quyền của hệ thống cho một nhóm người dùng hoặc một người dùng.
55 Tạo nhóm người dùng mới Admin thực hiện tạo ra một nhóm người dùng mới.
56 Đánh giá điểm uy tín User sẽ được đánh giá điểm uy tín như tăng điểm, giảm điểm.
57 Thống kê số bài viết/tài liệu đã đăng Hệ thống sẽ thống kê số bài viết/tài liệu người dùng đã đăng.
4.2.1 Sơ đồ usecase Đăng nhập Đăng ký Quên mật khẩu
Cập nhập thông tin đăng nhập
Xem thông tin Xem bài viết/tài liệu được đăng bởi người dùng Xác thực Chỉnh sửa thông tin Phân quyền
Tạo các nhóm người dùng mới
Gửi tài liệu Upload tập tin tài liệu
Phân loại theo danh mục, tags
Lọc theo danh mục Sắp xếp
Xem tài liệu Lọc theo danh mục
Xem trước tài liệu Tải về tài liệu
Thêm/sửa/xoá Thích
Thích Trả lời Tố cáo
Bình luận Trả lời Tố cáo
Tương tác Thích/Không thích Thích bài viết
Lưu về kho cá nhân
Lưu về kho cá nhân
Gợi ý tài liệu Gợi ý bài tập
Xem lý do bị từ chối
Xem trạng thái bài viết
Xem bài viết đã gửi
Quản lý bài viết cá nhân
Quản lý tài liệu cá nhân Gợi ý tài nguyên Gợi ý bài viết
Xem lý do bị từ chối
Gửi lý do từ chối
Duyệt/từ chối bài viết
Xem tố cáo bài viết/bình luận
Xử lý tố cáo bài viết/bình luận
Thống kê số bài viết/tài liệu đã đăng Đánh giá điểm uy tín
Xem bài tập Quản lý tài liệu Duyệt/từ chối
Quản lý tố cáo
Bình luận Gửi báo cáo
Xem kết quả báo cáo sai sót Quản lý tố cáo Nộp bài tập Gợi ý tài nguyên Làm bài tập
sai sót
Xử lý tố cáo Xem tố cáo Xử lý báo cáo sai sót
Lưu kết quả người dùng Xem đáp án, lời giải chi tiết Tài liệu liên quan Bài viết liên quan
Trả lời Tố cáo Thích Thêm/sửa/xoá Đặt cờ Tính thời gian Tạo ghi chú trên bài tập
Hình 4-1 Use case tổng quát
Gửi bài viết Tìm kiếm bài viết
Lọc theo danh mục Sắp xếp
Bình luận
Lưu về kho cá nhân
Gợi ý tài nguyên Tố cáo bài viết Xem lý do bị từ chối
Gợi ý tài liệu Gợi ý bài tập cá nhân
Admin bài viết
Duyệt/từ chối bài viết
Hình 4-2 Use case Hệ thống bài viết
Tìm kiếm tài liệu Upload tập tin tài liệu
Xem tài liệu Tải về tài liệu Thích
Tương tác Thích/Không thích
tài liệu Lưu về kho cá nhân
Quản lý tài liệu cá nhân
Gợi ý tài nguyên Gợi ý bài viết
Xem lý do bị từ chối
Quản lý tài liệu Duyệt/từ chối
Admin Quản lý tố cáo
Xem tố cáo Xử lý tố cáo
Hình 4-3 Use case Hệ thống tài liệu
46 Tạo ghi chú trên bài tập
Xem bài tập Làm bài tập Xem kết quả Tính thời gian Đặt cờ
User những lần trước
Gửi báo cáo sai sót
Gợi ý tài nguyên Nộp bài tập
Xem đáp án, lời giải chi tiết
Lưu kết quả người dùng báo cáo sai sót Admin báo cáo sai sót
Quản lý tố cáo Xem tố cáo
Hình 4-4 Use case Hệ thống bài tập
Chỉnh sửa thông tin Xem bài viết/tài liệu
Đăng nhập Đăng ký
Quên mật khẩu Cập nhập thông tin đăng nhập
Admin được đăng bởi người dùng
Tạo các nhóm người dùng mới
Hình 4-5 Use case Hệ thống quản lý người dùng
48 Đánh giá điểm uy tín
Thống kê số bài viết/tài liệu đã đăng
Hình 4-6 Use case hệ thống tính điểm người dùng
4.2.2 Đặc tả một số Usecase quan trọng
Bảng 4-3 Đặc tả usecase Tìm kiếm
Tóm tắt User sẽ tìm kiếm bài viết hoặc tài liệu thông qua chức năng tìm kiếm của hệ thống
Người thực hiện Người dùng (User). Điền kiện tiền xử lý Không
Sau xử lý Trả về bài viết hoặc tài liệu người dùng đang tìm kiếm
Dòng sự kiện chính 1 Vào trang chủ của ứng dụng, hoặc trang bài viết, hoặc trang tài liệu
Nhập câu truy vấn vào thanh tìm kiếm; nếu bạn đang ở trang chủ hoặc trang bài viết, hệ thống sẽ tìm kiếm theo nội dung bài viết, còn nếu bạn ở trang tài liệu, kết quả sẽ dựa trên tài liệu có sẵn.
3 Kết quả tìm kiếm sẽ trả về 3 kết quả đầu trong search nhanh, để trả về nhiều kết quả hơn người dùng nhấn enter.
Nếu không có kết quả cho truy vấn, người dùng sẽ nhận thông báo “Không có tài nguyên học tập phù hợp” Để cải thiện trải nghiệm tìm kiếm, người dùng có thể lọc kết quả theo danh mục đã chọn.
2 Sắp xếp: Khi người dùng chọn một cách sắp xếp kết quả trả về.
Bảng 4-4 Đặc tả usecase Lọc theo danh mục
Tên Usecase Lọc theo danh mục
Người dùng có khả năng lọc kết quả tìm kiếm dựa trên các danh mục được cung cấp từ trang tìm kiếm mà không cần thực hiện bất kỳ điều kiện tiền xử lý nào.
Sau xử lý Trả về bài viết hoặc tài liệu người dùng đang tìm kiếm, được lọc theo danh mục.
Dòng sự kiện chính 1 Vào trang chủ của ứng dụng, hoặc trang bài viết, hoặc trang tài liệu
Nhập câu truy vấn vào thanh tìm kiếm; nếu bạn đang ở trang chủ hoặc trang bài viết, hệ thống sẽ tìm kiếm theo bài viết, còn nếu ở trang tài liệu, nó sẽ tìm theo tài liệu Nhấn enter để xem kết quả.
3 Tiến hành chọn bộ lọc danh mục với danh mục cần lọc Hệ thống sẽ tự làm mới kết quả tìm kiếm.
Nếu câu truy vấn kết hợp với bộ lọc không tìm thấy kết quả nào, người dùng sẽ nhận được thông báo “Không có tài nguyên học tập phù hợp”.
Bảng 4-5 Đặc tả usecase Lọc theo môn học
Tên Usecase Lọc theo môn học
Tóm tắt User sẽ lọc kết quả tìm kiếm trả về từ trang tìm kiếm theo môn học.
Người thực hiện Người dùng (User). Điền kiện tiền xử lý Không
Sau xử lý Trả về bài viết hoặc tài liệu người dùng đang tìm kiếm, được lọc theo môn học.
Dòng sự kiện chính 1 Vào trang chủ của ứng dụng, hoặc trang bài viết, hoặc trang tài liệu
Gõ câu truy vấn vào thanh tìm kiếm; nếu bạn đang ở trang chủ hoặc trang bài viết, hệ thống sẽ tìm kiếm theo nội dung bài viết, còn nếu bạn ở trang tài liệu, nó sẽ tìm theo tài liệu Sau đó, nhấn enter để nhận kết quả.
3 Tiến hành chọn bộ lọc môn học với môn học cần lọc Hệ thống sẽ tự làm mới kết quả tìm kiếm.
Nếu truy vấn kết hợp với bộ lọc không mang lại kết quả nào, người dùng sẽ nhận được thông báo "Không có tài nguyên học tập phù hợp".
Bảng 4-6 Đặc tả usecase Sắp xếp
Tóm tắt User sẽ sắp xếp kết quả tìm kiếm trả về từ trang tìm kiếm theo các tiêu chí sắp xếp Hot, Tốt nhất, Mới nhất, Lượt xem.
Người thực hiện Người dùng (User). Điền kiện tiền xử lý Không
Sau xử lý Trả về bài viết hoặc tài liệu người dùng đang tìm kiếm, được sắp xếp theo tiêu chí người dùng lựa chọn
Bài viết này đề cập đến ba tiêu chí quan trọng để đánh giá tài nguyên: Tiêu chí Hot, bao gồm những tài nguyên mới nhất và được nhiều người xem nhất; Tiêu chí Tốt nhất, tập trung vào những tài nguyên có chỉ số Wilson cao nhất; và Tiêu chí Mới nhất, liên quan đến những tài nguyên có ngày xuất bản gần đây nhất Cuối cùng, Lượt xem cũng là một yếu tố quan trọng, chỉ ra những tài nguyên có số lượt xem cao nhất.
Dòng sự kiện chính 1 Vào trang chủ của ứng dụng, hoặc trang bài viết, hoặc trang tài liệu
Để tìm kiếm thông tin hiệu quả, bạn hãy gõ câu truy vấn vào thanh tìm kiếm Nếu bạn đang ở trang chủ hoặc trang bài viết, hệ thống sẽ tìm kiếm theo nội dung bài viết Trong trường hợp bạn đang ở trang tài liệu, kết quả sẽ được tìm theo tài liệu Sau đó, hãy nhấn enter và tiến hành chọn tiêu chí sắp xếp mà bạn mong muốn.
Nếu không có kết quả từ câu truy vấn, người dùng sẽ nhận thông báo "Không có tài nguyên học tập phù hợp".
Bảng 4-7 Đặc tả usecase Tương tác
Tóm tắt User sẽ thực hiện tương tác đến bài viết/tài liệu/bình luận Ứng với từng tài nguyên, ta sẽ có những tương tác khác nhau.
Người thực hiện Người dùng (User). Điền kiện tiền xử lý Bài viết/tài liệu đã được duyệt và hiển thị trên hệ thống.
Người dùng đã đăng nhập vào hệ thống và có quyền thực hiện like bài viết/tài liệu/bình luận.
Sau khi người dùng tương tác, hệ thống sẽ lưu lại lượt tương tác với tài nguyên học tập tương ứng Mỗi loại đối tượng sẽ có các hình thức tương tác khác nhau: đối với bài viết, người dùng có thể Like hoặc Save; đối với tài liệu, có thể Like, Dislike hoặc Save; và đối với bình luận, người dùng có thể Like hoặc Save.
Điều hướng đến các trang chứa tài nguyên như trang chủ, danh sách bài viết, danh sách tài liệu, tìm kiếm tài liệu, danh sách bài tập, chi tiết bài viết và chi tiết tài liệu.
2 Ở từng item của các tài nguyên, bấm vào các nút tương tác (like, dislike, save).
Dòng sự kiện khác Không Điểm mở rộng Không
Bảng 4-8 Đặc tả usecase Tố cáo
Người dùng có thể thực hiện việc tố cáo đối với bài viết, tài liệu hoặc bình luận Điều kiện cần thiết là các bài viết hoặc tài liệu phải được duyệt và hiển thị trên hệ thống trước khi tiến hành tố cáo.
Người dùng đã đăng nhập vào hệ thống và được phân quyền thực hiện tố cáo bài viết/tài liệu/bình luận.
Sau xử lý Hệ thống ghi nhận tài nguyên bị báo cáo và các lý do báo cáo người dùng đã nhập.
Điều hướng đến các trang chứa tài nguyên như trang chủ, danh sách bài viết, danh sách tài liệu, tìm kiếm tài liệu và chi tiết tài liệu là bước quan trọng trong việc tìm kiếm thông tin hiệu quả.
2 Ở từng item của các tài nguyên, bấm vào menu (hình dấu 3 chấm ở góc phải của tài nguyên)
3 Khi menu hiện ra, bấm nút Báo cáo, popup báo cáo sẽ hiện ra
4 Người dùng chọn ít nhất một lý do báo cáo và có thể điền thêm các thông tin báo cáo
5 Bấm nút Báo cáo, popup xác nhận sẽ hiện ra 6 Bấm nút xác nhận, nếu báo cáo thành công, thông báo
“Report bài viết/tài liệu thành công” sẽ hiện ra.
Nếu không chọn lý do báo cáo, khi nhấn nút Báo cáo, hệ thống sẽ hiển thị thông báo yêu cầu người dùng chọn lý do thích hợp.
Bảng 4-9 Đặc tả usecase Lưu về kho cá nhân.
Lưu về kho cá nhân
Tên Usecase Lưu về kho cá nhân
Tóm tắt User sẽ thực hiện lưu bài viết mà mình quan tâm về kho cá nhân
Người thực hiện Người dùng (User). Điền kiện tiền xử lý Bài viết đã được duyệt và hiển thị trên hệ thống
Người dùng đã đăng nhập vào hệ thống và được phân quyền lưu bài viết về kho cá nhân.
Sau xử lý Bài viết, bài tập được lưu trữ vào kho cá nhân của người dùng.