Người học có thể dễ dàng tìm kiếm những bài tập phù hợp với nhu cầu của mình, tập trungvào những bài tập nằm trong phạm vi khả năng của họ, và theo dõi tiến độ học tập của bản thân.Nhóm
mhhcđ là gì
Trong bối cảnh chuyển đổi số tại Việt Nam, nhu cầu ứng dụng công nghệ thông tin vào mọi lĩnh vực đang gia tăng, tạo ra nhiều cơ hội việc làm hấp dẫn Sự bùng nổ của Internet đã giúp việc học lập trình trở nên dễ dàng hơn, cho phép người học tiếp cận kiến thức mọi lúc, mọi nơi Các ngành học và công việc liên quan đến lập trình ngày càng thu hút và cạnh tranh, thu hút đông đảo người tham gia.
Khi bắt đầu học lập trình cơ bản, sinh viên thường tiếp cận các môn như Nhập môn lập trình, Kỹ thuật lập trình và Cấu trúc dữ liệu Để đánh giá hiểu biết và hoàn thành môn học, họ cần thực hiện các bài tập lớn phức tạp, yêu cầu khả năng tự kiểm tra và sửa lỗi Mặc dù giảng viên cung cấp bộ testcase chấm bài và mẫu testcase để kiểm thử, sinh viên mới thường gặp khó khăn trong việc tự tạo testcase chất lượng cho bài làm của mình.
Trong những năm gần đây, hệ thống quản lý học tập (LMS) tại các trường Đại học ở Việt Nam đã phát triển mạnh mẽ, mang lại nhiều tiện ích cho giảng viên trong việc quản lý khóa học và bài tập Hệ thống này giúp sinh viên dễ dàng tiếp cận tài nguyên học thuật và hỗ trợ nộp bài cũng như chấm bài tự động Tuy nhiên, tính năng diễn đàn chủ yếu phục vụ cho việc hỏi đáp giữa sinh viên và giảng viên, chưa phát huy tối đa sự tương tác giữa sinh viên.
Hợp tác và kết nối giữa người học vẫn chưa đạt hiệu quả tối ưu và còn nhiều hạn chế Điều này tạo ra thách thức lớn cần được khắc phục để nâng cao việc chia sẻ kiến thức, từ đó đạt được kết quả học tập tốt nhất.
Nhóm chúng em đang phát triển một hệ thống hỗ trợ sinh viên học lập trình cơ bản, tập trung vào việc trao đổi và chia sẻ testcase để nâng cao chất lượng bài làm Qua nghiên cứu, chúng em nhận thấy ba lý do chính cho sự cần thiết và hợp lý của hệ thống này trong bối cảnh hiện nay.
Việc khuyến khích sinh viên tương tác thông qua chia sẻ và trao đổi testcase là rất cần thiết trong quá trình học lập trình Testcase không chỉ giúp sinh viên kiểm tra độ chính xác của chương trình mà còn phản ánh mức độ hiểu biết của họ về bài tập Khi sinh viên viết và thảo luận về testcase, họ có thể phát hiện lỗi mà bản thân chưa nhận ra, từ đó cải thiện kỹ năng kiểm thử và lập trình Thêm vào đó, việc tham gia vào một diễn đàn chung tạo ra môi trường học tập tập trung, giúp sinh viên nâng cao khả năng giao tiếp, tư duy phản biện, và giải quyết vấn đề, góp phần xây dựng một cộng đồng học tập chủ động và gắn kết.
Hệ thống tự động phân loại độ khó của testcase không chỉ tối ưu hóa tiến trình học tập của sinh viên mà còn nâng cao sự tương tác giữa các sinh viên trong hệ thống Các nền tảng luyện tập lập trình phổ biến như Leetcode và HackerRank đã áp dụng hệ thống phân loại độ khó cho từng bài toán, chia thành các mức độ từ dễ, trung bình đến khó.
Hệ thống phân loại độ khó là công cụ hữu ích cho người học lập trình, giúp họ dễ dàng tìm kiếm bài tập phù hợp, tập trung vào những bài trong khả năng và theo dõi tiến độ học tập Nhóm chúng em nhận thấy việc áp dụng ý tưởng phân loại độ khó từ các hệ thống khác để tự động phân loại độ khó của testcase sẽ không chỉ phát huy những điểm mạnh của các hệ thống hiện có, mà còn tạo nền tảng cho tính năng quan trọng là gợi ý bài post chứa testcase phù hợp cho sinh viên.
Khả năng gợi ý bài đăng với các testcase phù hợp với năng lực và nhu cầu của sinh viên là rất quan trọng để khuyến khích sự chủ động tham gia vào khóa học Mặc dù các nền tảng tự học lập trình hiện tại đã có hệ thống phân loại bài tập tốt, nhưng chúng không chủ động giới thiệu các bài tập liên quan cho người học.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính nhận thấy rằng các nền tảng mạng xã hội đang phát triển mạnh mẽ nhờ khả năng phán đoán và nắm bắt mong muốn của người dùng thông qua các thuật toán gợi ý Việc ứng dụng cơ chế gợi ý cho các bài post có đính kèm testcase trong hệ thống mà nhóm chúng tôi phát triển sẽ đóng vai trò quan trọng trong việc hỗ trợ sinh viên thực hiện bài tập Đặc biệt, sinh viên mới bắt đầu với các môn học nhập môn và chưa có nhiều kinh nghiệm trong kiểm thử chương trình có thể tận dụng những gợi ý này để nâng cao kỹ năng lập trình và kiểm thử của mình.
Dựa trên những lý do đã nêu, nhóm chúng em đã chọn đề tài “Xây dựng hệ thống chia sẻ testcase hỗ trợ sinh viên học các môn lập trình” cho nghiên cứu trong Đồ án chuyên ngành.
Mục tiêu đề tài
Nhằm nâng cao hiệu quả làm bài tập lập trình cho sinh viên và khuyến khích sự tương tác giữa các bạn trong quá trình học, nhóm chúng em đã xác định các mục tiêu cụ thể cho đề tài, bao gồm việc thúc đẩy việc trao đổi, chia sẻ và chạy thử testcase.
• Khảo sát hệ thống gợi ý và các phương pháp trích xuất chủ đề cho các bài đăng trên forum.
• Xây dựng các mô hình chủ đề như LDA, LSA để trích xuất chủ đề từ các bài đăng trên forum.
Bài viết này so sánh và đánh giá hiệu quả của các phương pháp trích xuất chủ đề từ dữ liệu thu thập trên các diễn đàn khóa học Coursera Nó bao gồm việc phân tích các mô hình chủ đề khác nhau và đối chiếu chúng với kỹ thuật TF-IDF để xác định sự khác biệt và ưu điểm của từng phương pháp trong việc phát hiện chủ đề chính.
Hệ thống chia sẻ testcase được đề xuất nhằm trích xuất chủ đề từ các mô hình, đồng thời quy trình gợi ý bài đăng testcase sẽ phù hợp với sở thích và sự quan tâm của sinh viên.
• Triển khai hệ thống chia sẻ testcase vào học kì 2 năm học 2024 - 2025.
Bài viết này so sánh và đánh giá hiệu quả trích xuất chủ đề từ tập dữ liệu thu thập được từ hệ thống chia sẻ testcase do nhóm đề xuất Nó bao gồm việc so sánh các mô hình chủ đề khác nhau và đối chiếu chúng với kỹ thuật TF-IDF để xác định mô hình nào mang lại hiệu quả cao hơn trong việc trích xuất thông tin.
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 3/34
Phạm vi đề tài
Nhóm đã xác định phạm vi hoạt động tối ưu cho đề tài dựa trên các mục tiêu đã đề ra, bao gồm đối tượng nghiên cứu và khoảng thời gian thực hiện.
Bài viết này hướng đến sinh viên và giảng viên của Khoa Khoa học và Kỹ thuật Máy tính tại Trường Đại học Bách khoa - ĐHQG HCM, những người đang học tập và giảng dạy các môn lập trình cơ bản như Kỹ thuật lập trình, Cấu trúc dữ liệu và Giải thuật.
• Về thời gian: Hệ thống sẽ được phát triển và triển khai trong khoảng thời gian từ tháng 09 năm 2024 đến tháng 06 năm 2025, tương ứng với hai học kì 241 và 242.
Cấu trúc đề tài
Hệ thống gợi ý
Giới thiệu
Hệ thống gợi ý (recommendation system) là một loại hệ thống lọc thông tin, cung cấp các gợi ý về những mục phù hợp nhất với từng người dùng Chúng đặc biệt hữu ích khi người dùng phải lựa chọn từ một lượng lớn các mục mà dịch vụ cung cấp Theo các tác giả, hệ thống gợi ý hỗ trợ ra quyết định bằng cách gợi ý thông tin liên quan một cách nhanh chóng và dễ dàng Hệ thống gợi ý được ứng dụng rộng rãi trong nhiều lĩnh vực của đời sống, bao gồm thương mại điện tử, phim ảnh, âm nhạc, sách, và nhiều lĩnh vực khác.
Các gợi ý thường liên quan đến quá trình ra quyết định như chọn sản phẩm, bài hát hay tin tức để đọc Hệ thống gợi ý được ứng dụng rộng rãi trong nhiều lĩnh vực, với ví dụ điển hình là công cụ tạo danh sách phát cho dịch vụ video và âm nhạc, hệ thống gợi ý sản phẩm trên sàn thương mại điện tử, cũng như các công cụ gợi ý nội dung cho mạng xã hội và nền tảng nội dung mở trên web.
Hệ thống Sản phẩm gợi ý
Facebook Bài viết, quảng cáo
Bảng 2.1: Các sản phẩm được gợi ý bởi các hệ thống gợi ý khác nhau trong thực tế
Bảng 2.1 liệt kê một số hệ thống gợi ý phổ biến và sản phẩm tương ứng của chúng Một ví
YouTube là nền tảng chia sẻ video trực tuyến lớn nhất thế giới với gần ba tỷ người dùng, và hệ thống gợi ý của nó đóng vai trò quan trọng trong việc cá nhân hóa trải nghiệm người dùng Hệ thống này phân tích dữ liệu người dùng như lịch sử xem video, tìm kiếm, thời gian xem, và các tương tác như lượt thích và bình luận YouTube thực hiện hai bước chính để đưa ra gợi ý: tạo danh sách video ứng viên và xếp hạng chúng dựa trên nhiều yếu tố khác nhau Hệ thống cũng phân tích đánh giá rõ ràng và ngầm để hiểu sâu hơn về sở thích của người dùng, đồng thời cá nhân hóa gợi ý theo ngữ cảnh như thời gian, vị trí và thiết bị Ngoài ra, hệ thống gợi ý cũng đang được áp dụng trong giáo dục, giúp sinh viên đạt được mục tiêu học tập bằng cách đề xuất tài liệu học tập phù hợp, mặc dù môi trường giáo dục có những thách thức và yêu cầu riêng biệt.
Một trong những thách thức lớn nhất của hệ thống gợi ý trong giáo dục là xác định mục tiêu học tập của người dùng, như học kiến thức mới hay ôn tập nội dung đã biết, vì mỗi mục tiêu yêu cầu các loại tài liệu khác nhau Hệ thống gợi ý cần dựa trên các mô hình giảng dạy cụ thể, như mô hình của Vygotsky, khuyến nghị rằng tài liệu học tập nên nằm trong vùng phát triển gần nhất của người học, tức là đủ khó để thử thách nhưng không quá phức tạp để tránh gây chán nản Điều này đặc biệt quan trọng cho những người học thiếu nền tảng kiến thức cơ bản trong lĩnh vực mới Hơn nữa, quá trình học tập cần nhiều thời gian và sự tương tác hơn so với một giao dịch thông thường.
Mục tiêu của người học không chỉ là sở hữu sản phẩm mà còn là đạt được sự thành thạo trong một kỹ năng hoặc lĩnh vực cụ thể Do đó, các hệ thống gợi ý cần được thiết kế để hỗ trợ người học trong việc đạt được các mục tiêu này, đồng thời cá nhân hóa nội dung dựa trên đặc điểm cá nhân, lĩnh vực học tập và phương pháp giảng dạy Những yếu tố này đóng vai trò quan trọng trong việc xây dựng một hệ thống gợi ý hiệu quả trong giáo dục.
Các phương pháp gợi ý
Trước khi khám phá các phương pháp gợi ý, cần nắm rõ các cách tiếp cận khác nhau để định hình bài toán gợi ý Hai mô hình chính được Charu C Aggarwal giới thiệu bao gồm
1 Bài toán dạng dự đoán: Cách tiếp cận đầu tiên là dự đoán giá trị đánh giá cho một cặp người dùng và sản phẩm Cách làm này giả định rằng có sẵn dữ liệu huấn luyện, thể hiện sở thích của người dùng đối với các sản phẩm Vớimngười dùng vànsản phẩm, điều này
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính liên quan đến việc xử lý một ma trận kích thước m×n có dữ liệu bị thiếu Các giá trị đã biết được sử dụng để huấn luyện mô hình, trong khi các giá trị còn thiếu sẽ được dự đoán thông qua các thuật toán học máy Bài toán này được gọi là bài toán hoàn thiện ma trận, nhằm xác định và dự đoán các giá trị chưa được quan sát trong ma trận chưa đầy đủ.
2 Bài toán dạng xếp hạng: Trên thực tế, không nhất thiết phải dự đoán chính xác các giá trị đánh giá của người dùng đối với các sản phẩm cụ thể để đưa ra gợi ý Thay vào đó, một nhà cung cấp có thể muốn gợi ý top-k sản phẩm tốt nhất cho một người dùng cụ thể, hoặc xác định top-k người dùng tiềm năng cho một sản phẩm cụ thể Bài toán này còn được gọi là bài toán gợi ý top-k, và đây là cách tiếp cận dạng xếp hạng của bài toán gợi ý.
Có nhiều phương pháp xây dựng hệ thống gợi ý, tùy thuộc vào ngữ cảnh và yêu cầu cụ thể Ba phương pháp chính thường được áp dụng để phát triển hệ thống gợi ý bao gồm:
• Lọc cộng tác (Collaborative Filtering):
Khái niệm lọc cộng tác lần đầu được giới thiệu trong hệ thống Tapestry [Goldberg et al.,
Quá trình lọc cộng tác cho phép người dùng hỗ trợ lẫn nhau trong việc xử lý lượng lớn email và tin nhắn trong nhóm thảo luận Dựa trên giả định rằng những người có sở thích tương đồng trong quá khứ sẽ tiếp tục giữ sở thích đó, hệ thống phân tích lịch sử đánh giá của người dùng để dự đoán và đề xuất các sản phẩm mà họ có thể thích Phương pháp này giúp người dùng dễ dàng tiếp cận các sản phẩm mới, nâng cao trải nghiệm khi tìm kiếm thông tin và sản phẩm phù hợp.
Kỹ thuật lọc cộng tác (Collaborative Filtering - CF) được chia thành ba nhóm chính: CF dựa trên ghi nhớ, CF dựa trên mô hình, và phương pháp lai giữa hai nhóm này CF dựa trên ghi nhớ, như phương pháp lọc cộng tác dựa trên các điểm lân cận, bao gồm CF dựa trên người dùng và CF dựa trên sản phẩm Ngược lại, CF dựa trên mô hình, như phân rã ma trận, nổi bật với khả năng xử lý dữ liệu thưa và quy mô lớn Các phương pháp CF dựa trên mô hình có thể kết hợp với mạng nơ-ron, mang lại tính linh hoạt và khả năng mở rộng cao nhờ vào sự phát triển của học sâu CF chủ yếu sử dụng dữ liệu tương tác giữa người dùng và sản phẩm để đưa ra dự đoán và gợi ý.
Nội dung (content-based) và ngữ cảnh (context-based) rất quan trọng trong việc kết hợp mô tả sản phẩm hoặc người dùng với các yếu tố như thời gian và địa điểm Việc điều chỉnh cấu trúc hoặc loại mô hình là cần thiết tùy thuộc vào loại dữ liệu đầu vào có sẵn.
Hệ thống gợi ý cần thu thập đánh giá và phản hồi của người dùng để hiểu sở thích của họ, bao gồm hai loại: phản hồi trực tiếp (explicit) và gián tiếp (implicit) Phản hồi trực tiếp yêu cầu người dùng thể hiện rõ ràng sự quan tâm, như đánh giá phim trên IMDB bằng sao hoặc nút thích trên Youtube Tuy nhiên, phản hồi trực tiếp thường không đầy đủ vì nhiều người không để lại đánh giá Do đó, hệ thống gợi ý cần dựa vào phản hồi gián tiếp, thông qua việc quan sát hành vi người dùng như lịch sử mua hàng và lượt xem Mặc dù phản hồi gián tiếp có thể chứa nhiễu, nhưng nó vẫn cung cấp những phán đoán quan trọng về sở thích của người dùng.
• Dựa trên nội dung (Content-based Filtering):
Một phương pháp phổ biến trong gợi ý sản phẩm là dựa trên nội dung, nơi mà các gợi ý được xây dựng dựa trên mô tả sản phẩm và sở thích của người dùng Phương pháp này đặc biệt hiệu quả khi đã có thông tin về sản phẩm như tên, vị trí và mô tả, nhưng chưa có dữ liệu về người dùng Gợi ý dựa trên nội dung coi việc đưa ra gợi ý như một bài toán phân loại cho từng người dùng, từ đó xây dựng mô hình phân loại dựa trên các đặc điểm của sản phẩm mà người dùng đã tương tác trước đó, nhằm xác định sản phẩm mà họ có thể thích hoặc không thích.
Phương pháp này được phát triển từ nghiên cứu về truy xuất và lọc thông tin, trong đó sản phẩm được mô tả qua từ khóa và mỗi người dùng có hồ sơ cá nhân để xác định sở thích Các thuật toán sẽ đề xuất sản phẩm tương tự dựa trên những sản phẩm mà người dùng đã đánh giá cao hoặc đang tìm kiếm Sản phẩm ứng viên sẽ được so sánh với những sản phẩm đã được người dùng đánh giá trước đó, từ đó gợi ý những sản phẩm phù hợp nhất.
Hồ sơ của người dùng được xây dựng dựa trên hai yếu tố chủ yếu là:
1 Mô hình sở thích của người dùng.
2 Lịch sử tương tác giữa người dùng và hệ thống gợi ý.
Hồ sơ sản phẩm là một tập hợp các thuộc tính và đặc điểm riêng biệt được sử dụng để mô tả sản phẩm trong hệ thống Để trừu tượng hóa các thuộc tính này, các thuật toán biểu diễn như TF-IDF được áp dụng Hồ sơ người dùng sẽ được tạo dựa trên vectơ trọng số, thể hiện mức độ quan trọng của từng đặc điểm trong các thuộc tính của sản phẩm, và có thể được tính toán từ các vectơ sản phẩm mà người dùng đã đánh giá trước đó.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính áp dụng nhiều phương pháp khác nhau để phân tích dữ liệu Các phương pháp đơn giản thường dựa vào giá trị trung bình của vectơ vật phẩm, trong khi các phương pháp phức tạp hơn sử dụng các kỹ thuật học máy như phân loại Bayes, phân tích cụm, cây quyết định và mạng nơ-ron nhân tạo.
Hiện nay, hầu hết các hệ thống gợi ý áp dụng phương pháp gợi ý lai, kết hợp lọc cộng tác, lọc dựa trên nội dung và các phương pháp khác Có nhiều cách triển khai hệ thống lai, như đưa ra dự đoán riêng biệt từ lọc nội dung và lọc cộng tác rồi kết hợp, hoặc bổ sung lọc nội dung vào lọc cộng tác và ngược lại Nghiên cứu cho thấy phương pháp lai mang lại gợi ý chính xác hơn so với lọc cộng tác hay lọc nội dung thông thường, đồng thời giúp giải quyết các vấn đề như khởi đầu nguội, thưa thớt dữ liệu và nút thắt cổ chai trong các hệ thống gợi ý dựa trên kiến thức.
Hệ thống gợi ý của Netflix là một ví dụ điển hình của phương pháp gợi ý lai, kết hợp giữa lọc cộng tác và lọc dựa trên nội dung Netflix sử dụng thói quen xem và tìm kiếm của người dùng có điểm chung để đưa ra gợi ý, đồng thời đề xuất các bộ phim tương tự với những bộ phim mà người dùng đã đánh giá cao.
Hệ thống gợi ý bài chia sẻ testcase cho sinh viên
- link hệ thống gợi ý và mhh chủ đề
TF-IDF (Term Frequency-Inverse Document Frequency)
Forum content feature extraction is a crucial technique for analyzing discussions and extracting meaningful insights This article explores the application of TF-IDF (Term Frequency-Inverse Document Frequency) as a foundational method for this purpose Previous research [x] has successfully employed TF-IDF, demonstrating its effectiveness in identifying relevant features within forum content In this study, we adopt TF-IDF as our baseline due to its ability to highlight significant terms and phrases, making it particularly suitable for the analysis of forum discussions Its role is vital in enhancing the understanding of user interactions and information flow within online communities.
TF-IDF (Tần suất từ - Tần suất ngược tài liệu) là phương pháp đánh giá tầm quan trọng của từ trong tài liệu so với toàn bộ tập hợp tài liệu Phương pháp này điều chỉnh để phản ánh rằng một số từ xuất hiện phổ biến trong nhiều tài liệu Giống như mô hình túi từ, TF-IDF biểu diễn tài liệu dưới dạng tập hợp từ mà không quan tâm đến thứ tự, nhưng cải tiến bằng cách gán trọng số cho các từ dựa trên tần suất xuất hiện của chúng trong toàn bộ tập hợp tài liệu.
TF-IDF là một phương pháp phổ biến trong truy xuất thông tin, khai phá văn bản và xây dựng mô hình người dùng Một khảo sát năm 2015 cho thấy 83% hệ thống gợi ý sử dụng kỹ thuật này để cải thiện độ chính xác và hiệu quả.
Trong báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024, các văn bản trong thư viện số đã áp dụng phương pháp TF-IDF Nhiều công cụ tìm kiếm cũng sử dụng các biến thể của TF-IDF như một công cụ chính để đánh giá và xếp hạng mức độ liên quan của tài liệu đối với truy vấn của người dùng.
TF-IDF được xây dựng dựa trên hai thành phần chính:
1 Tần suất từ (Term Frequency - TF):
Tần suất từ (TF) đo lường mức độ xuất hiện của một từ trong tài liệu, với tần suất cao hơn cho thấy từ đó có thể quan trọng hơn Công thức tính TF giúp xác định sự nổi bật của từ trong nội dung.
• f(t,d): Số lần từt xuất hiện trong tài liệud.
• |d|: Tổng số từ trong tài liệud.
Có nhiều cách khác nhau để định nghĩa tần suất xuất hiện của từ như:[14]
• Số lần xuất hiện thô (raw count):
T F(t,d) =1nếu từt xuất hiện trong tài liệudvà bằng0nếu ngược lại.
• Tần suất được chuẩn hóa theo logarit:
Tần suất được hiệu chỉnh (augmented frequency) là một khái niệm được sử dụng để loại bỏ sự thiên lệch đối với các tài liệu có độ dài khác nhau Định nghĩa này thực hiện bằng cách chia tần suất thô của từ cho tần suất của từ xuất hiện nhiều nhất trong tài liệu đó.
2 Nghịch đảo tần suất tài liệu (Inverse Document Frequency - IDF):
IDF, được Karen Spärck Jones giới thiệu vào năm 1972, là một chỉ số đo lường lượng thông tin mà một từ cung cấp trong toàn bộ tập corpus Chỉ số này giúp xác định mức độ quan trọng của từ trong các tài liệu, với các từ phổ biến thường có giá trị thấp hơn trong việc cung cấp thông tin.
“và”, “là”) sẽ có trọng số thấp, trong khi các từ đặc trưng hơn sẽ có trọng số cao Công thức tính IDF là:
• |D|: Tổng số tài liệu trong tập corpus D.
Trong tập D, ký hiệu |d∈D:t∈d| đại diện cho số lượng tài liệu chứa từ t Nếu từ t không xuất hiện trong bất kỳ tài liệu nào của tập corpus, mẫu số sẽ bằng 0, dẫn đến phép chia cho 0 không hợp lệ Do đó, để khắc phục vấn đề này, người ta thường cộng thêm 1 vào mẫu số trong công thức tính toán.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
Giá trị TF-IDF được tính bằng cách nhân TF với IDF được biểu diễn qua công thức:
Kết quả của TF-IDF đánh giá tầm quan trọng của từ trong tài liệu so với toàn bộ tập tài liệu Những từ có giá trị TF-IDF cao xuất hiện nhiều trong tài liệu cụ thể và ít trong các tài liệu khác, giúp lọc ra từ khóa có giá trị Mặc dù TF-IDF là một đặc trưng tốt để xác định chủ đề văn bản, phương pháp này vẫn có những hạn chế, như giảm thiểu chiều không đáng kể và cung cấp ít thông tin về cấu trúc nội tại của văn bản Do đó, chúng ta cần tìm hiểu các phương pháp hiệu quả hơn, chẳng hạn như mô hình hóa chủ đề.
Mô hình hóa chủ đề
Giới thiệu chung về mô hình hóa chủ đề
A.Tổng quan về mô hình hóa chủ đề Trong thời đại số hóa hiện nay, khi phần lớn các tài liệu trong mọi lĩnh vực được lưu trữ dưới dạng kỹ thuật số qua các cơ sở dữ liệu điện tử, thư viện số hay mạng xã hội, việc xử lý khối lượng lớn thông tin này trở thành thách thức lớn đối với con người Các nhà nghiên cứu cần các công cụ tự động mạnh mẽ để phân tích, hiểu và khám phá các chủ đề tiềm ẩn trong dữ liệu một cách hiệu quả Mô hình hóa chủ đề (Topic Modeling) ra đời như một nhóm các thuật toán giúp tiết lộ, phát hiện và chú thích cấu trúc chủ đề của tập hợp tài liệu, từ đó hỗ trợ phân loại và phân cụm thông tin.[5]
Mô hình không gian vector (Vector Space Model - VSM) là nền tảng cho nhiều kỹ thuật truy xuất thông tin hiện đại và các mô hình chủ đề VSM, dựa trên ma trận từ - tài liệu, cho phép trích xuất thông tin ngữ nghĩa từ cách sử dụng từ ngữ Với phương pháp "Bag of Words" (BOW), VSM phân tích văn bản mà không cần quan tâm đến thứ tự từ, chỉ tập trung vào tần suất xuất hiện của từng từ Mô hình này đã được ứng dụng rộng rãi trong nhiều lĩnh vực như học máy, công cụ tìm kiếm, xử lý ngôn ngữ tự nhiên và dịch máy, đặc biệt trong việc đo lường sự tương đồng giữa các khái niệm và ngữ cảnh giữa từ, cụm từ và tài liệu.
Trong các hệ thống truy xuất thông tin như công cụ tìm kiếm và bộ sưu tập kỹ thuật số, không phải từ nào cũng có tầm quan trọng như nhau Do đó, việc gán trọng số cho mỗi từ dựa trên tần suất xuất hiện của nó trong tài liệu là cần thiết Phương pháp phổ biến nhất để thực hiện điều này là TF-IDF (Term Frequency-Inverse Document Frequency), giúp xác định mức độ quan trọng của từ dựa trên sự xuất hiện của nó trong toàn bộ tập hợp tài liệu.
Các thuật toán mô hình hóa chủ đề như Phân tích ngữ nghĩa tiềm ẩn (LSA), Phân tích ngữ nghĩa tiềm ẩn có xác suất (PLSA) và Phân bổ Dirichlet tiềm ẩn (LDA) đóng vai trò quan trọng trong việc phân tích và khai thác thông tin từ văn bản Những phương pháp này giúp xác định các chủ đề tiềm ẩn, cải thiện khả năng tìm kiếm và tổ chức thông tin hiệu quả hơn.
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 trình bày sự phát triển và ứng dụng mạnh mẽ trong việc tìm kiếm ngữ nghĩa tiềm ẩn, đồng thời khai phá các chủ đề tiềm ẩn trong tài liệu.
2.3.1.1 Các phương pháp mô hình hóa chủ đề
Mô hình hóa chủ đề là kỹ thuật quan trọng giúp giảm chiều dữ liệu từ các tập văn bản lớn, khám phá các chủ đề tiềm ẩn và đặc trưng nổi bật Sự phát triển công nghệ máy tính và web đã tạo ra khối lượng dữ liệu khổng lồ, cần các phương pháp hiệu quả để phân tích và khai thác ý nghĩa từ dữ liệu Kỹ thuật này biểu diễn dữ liệu trong không gian thấp hơn, giữ lại các mối quan hệ quan trọng và phù hợp với ngữ cảnh ứng dụng Các phương pháp mô hình hóa chủ đề được phân chia thành hai nhóm chính.
• Mô hình phi xác suất(hay còn gọi là mô hình đại số)
Các phương pháp phi xác suất như Phân tích ngữ nghĩa tiềm ẩn (LSA) và Phân tích ma trận không âm (NNMF) đã xuất hiện từ những năm 1990 Những phương pháp này dựa trên phân tích đại số, đặc biệt là phân rã ma trận, nhằm khám phá các chủ đề tiềm ẩn trong tập hợp văn bản.
Các phương pháp phi xác suất, như mô hình Túi từ vựng (Bag of Words - BOW), tập trung vào tần suất xuất hiện của từ mà bỏ qua thứ tự từ trong văn bản Mặc dù đã đóng góp nhiều cho nghiên cứu mô hình hóa chủ đề, những phương pháp này vẫn gặp phải hạn chế lớn, bao gồm việc thiếu khả năng diễn giải ngữ nghĩa chính xác và không tích hợp thông tin ngữ cảnh.
Để khắc phục những hạn chế của các phương pháp phi xác suất, các mô hình xác suất như Phân tích ngữ nghĩa tiềm ẩn xác suất (PLSA) và Phân bổ Dirichlet tiềm ẩn (LDA) đã được phát triển Những mô hình này không chỉ dựa vào cấu trúc đại số mà còn tích hợp yếu tố xác suất, từ đó giúp mô hình hóa mối quan hệ giữa từ ngữ, chủ đề và tài liệu một cách hiệu quả hơn.
LDA (Latent Dirichlet Allocation) là một trong những phương pháp mô hình hóa chủ đề phổ biến, giả định rằng mỗi tài liệu bao gồm sự pha trộn của nhiều chủ đề Mỗi chủ đề được đặc trưng bởi một phân phối xác suất trên tập từ vựng, điều này giúp dễ dàng diễn giải và mở rộng quy mô trên các tập dữ liệu lớn.
Cả PLSA và LDA ban đầu được phát triển dưới dạng không giám sát, nhưng sau đó đã có các biến thể giám sát hoặc bán giám sát nhằm phục vụ cho các ứng dụng trong các lĩnh vực cụ thể.
Các phương pháp mô hình hóa chủ đề đã trải qua sự phát triển đáng kể, từ các kỹ thuật đại số đơn giản như LSA và NNMF đến các mô hình xác suất phức tạp như PLSA và LDA.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
Mặc dù các mô hình sử dụng Bag Of Word có những hạn chế như bỏ qua ngữ cảnh và thứ tự từ, chúng vẫn đóng vai trò quan trọng trong xử lý ngôn ngữ tự nhiên, phân tích văn bản và khai phá dữ liệu Trong Đồ án chuyên ngành này, nhóm em sẽ tập trung vào hai phương pháp mô hình hóa chủ đề: Phân tích ngữ nghĩa tiềm ẩn (LSA) thuộc mô hình phi xác suất và Phân bổ Dirichlet tiềm ẩn (LDA) thuộc mô hình xác suất.
Phân tích ngữ nghĩa tiềm ẩn (LSA)
Phân tích ngữ nghĩa tiềm ẩn (Latent Semantic Analysis - LSA) là một phương pháp đại số dựa trên phân tích suy biến (Singular Value Decomposition - SVD), nhằm biểu diễn không gian ngữ nghĩa của tài liệu Phương pháp này giúp phân tích mối quan hệ giữa các từ trong tài liệu cũng như giữa các tài liệu trong tập corpus Mục tiêu chính của LSA là khai thác cấu trúc toàn cục của tài liệu để phát hiện các mối quan hệ tiềm ẩn, từ đó nâng cao hiểu biết về sự liên kết giữa các từ và tài liệu trong tập dữ liệu.
LSA, được đề xuất bởi Landauer và Dumais vào năm 1997, ban đầu nhằm mô hình hóa kiến thức ngôn ngữ của con người Phương pháp này đã được áp dụng rộng rãi trong các lĩnh vực như truy hồi thông tin, xử lý ngôn ngữ tự nhiên và khai phá dữ liệu văn bản Cơ sở lý thuyết của LSA dựa trên giả thuyết phân phối, cho rằng các từ có ý nghĩa tương tự thường xuất hiện gần nhau trong ngữ cảnh.
2.3.2.2 Phân tích suy biến (SVD)
Phân tích suy biến (SVD) là một phương pháp toán học quan trọng trong Phân tích ngữ nghĩa tiềm ẩn (LSA), giúp tách ma trận dữ liệu thành các yếu tố trực giao để khai thác mối quan hệ ngữ nghĩa giữa từ và tài liệu Ma trận quan tâm trong LSA là ma trận từ - tài liệu (Term-Document Matrix - TDM), với các cột đại diện cho tài liệu và các hàng cho từ ngữ SVD cho phép giảm số chiều của không gian vector, cô lập các khái niệm ngữ nghĩa quan trọng và loại bỏ yếu tố nhiễu Phân rã ma trận có kích thước M∗N, trong đó M là số từ và N là số tài liệu.
1 Tạo ma trận A: Ma trận từ - tài liệu (TDM)A có các phần tửa i j , trong đó mỗi phần tử biểu thị số lần xuất hiện của từitrong tài liệu j.
2 Phân rã SVD: Phân rã SVD của ma trậnAđược thực hiện như sau:
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 13/34
• U là ma trận trực giao có các vector riêng của ma trậnAA T đại diện cho không gian ngữ nghĩa của từ.
• ∑Ma trận đường chéo, chứa các giá trị đặc biệtσi, biểu thị mức độ ảnh hưởng của mỗi chiều ngữ nghĩa.
• V là ma trận trực giao có các vector riêng của ma trậnA T Ađại diện cho không gian ngữ nghĩa của tài liệu.
LSA hoạt động bằng cách phân tích ma trận thuật ngữ-tài liệu được trích xuất từ tập văn bản Bằng cách áp dụng phân rã ma trận, LSA giúp giảm chiều dữ liệu, cô lập các khái niệm ngữ nghĩa tiềm ẩn và giảm thiểu yếu tố nhiễu do đa nghĩa hoặc đồng nghĩa của từ Các bước hoạt động của giải thuật LSA bao gồm việc xử lý ma trận và xác định các khái niệm chính.
1 Xây dựng ma trận từ - tài liệu: Một ma trậnAđược tạo, trong đó hàng là các từ và cột là các tài liệu Mỗi phần tử a i j ủa ma trận biểu thị số lần xuất hiện hoặc trọng số của từ i trong tài liệu j.
2 Áp dụng hàm trọng số: Để phản ánh tầm quan trọng của mỗi từ trong một tài liệu và toàn bộ tập corpus, một hàm trọng số chẳng hạn như TF-IDF sẽ được áp dụng Hàm này giúp giảm trọng số của các từ phổ biến nhưng ít quan trọng và tăng trọng số của các từ hiếm nhưng mang nhiều thông tin.
3 Áp dụng phân tích suy biến (SVD) để phân rã ma trận A.
4 Rút gọn không gian ngữ nghĩa: Ma trận∑được rút gọn thành ma trận∑ k chỉ giữ lạikgiá trị đặc biệt lớn nhất Điều này giúp giảm chiều dữ liệu, loại bỏ các yếu tố nhiễu và chỉ giữ lại các khái niệm ngữ nghĩa quan trọng nhất Ma trậnA k =U k ∑kV k T là xấp xỉ tốt nhất của ma trận ban đầuAtrong không gian ngữ nghĩa có thứ hạng thấp hơn.
Mặc dù LSA là một phương pháp hiệu quả trong việc giảm chiều và phân tích ngữ nghĩa, nó vẫn tồn tại một số hạn chế:
LSA không xem xét thứ tự từ trong văn bản vì nó dựa trên mô hình túi từ vựng (BOW) Điều này dẫn đến việc không tích hợp được thông tin về thứ tự từ và ngữ cảnh mở rộng, ảnh hưởng đến khả năng hiểu sâu sắc nội dung.
• Tính phức tạp tính toán: Quá trình phân rã SVD yêu cầu tài nguyên tính toán lớn, đặc biệt với các tập dữ liệu lớn.
Mô hình LSA thiếu cơ chế xác suất, không cung cấp cách giải thích trực quan về xác suất của từ hoặc chủ đề Điều này khiến nó không thể so sánh với các mô hình xác suất hiện đại như LDA, vốn mang lại cái nhìn rõ ràng hơn về mối quan hệ giữa các từ và chủ đề trong văn bản.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
Phân bổ Dirichlet tiềm ẩn (LDA)
Phân bổ Dirichlet tiềm ẩn (LDA) là một phương pháp mô hình hóa chủ đề phổ biến, được giới thiệu bởi David Blei, Andrew Ng và Michael Jordan vào năm 2003 LDA dựa trên lý thuyết xác suất và mô hình biến ẩn, nhằm khám phá cấu trúc thống kê giữa các tài liệu thông qua phân phối trộn các chủ đề Mỗi chủ đề trong LDA được định nghĩa là một phân phối xác suất trên bảng từ vựng, và mỗi tài liệu trong tập dữ liệu chứa một tỷ lệ nhất định của các chủ đề này Mô hình giả định rằng mỗi tài liệu được tạo ra từ một tập hợp các chủ đề, với mỗi chủ đề xuất hiện trong tài liệu với tỷ lệ xác suất nhất định.
LDA (Latent Dirichlet Allocation) là một mô hình sinh, trong đó quá trình tạo ra tài liệu được dựa trên phân phối xác suất Một đặc điểm nổi bật của LDA là không xem trọng thứ tự của các từ trong tài liệu, mà chỉ sử dụng phương pháp Bag of Words (BOW), tập trung vào sự xuất hiện của từ mà không xét đến ngữ cảnh hay thứ tự của chúng.
2.3.3.2 Ký hiệu và thuật ngữ
Trong mô hình LDA, nhóm tác giả [6] sử dụng ngôn ngữ liên quan đến tập hợp văn bản, với các khái niệm như “từ,” “tài liệu,” và “tập hợp tài liệu” (corpus), giúp trực quan hóa mô hình và giới thiệu các biến tiềm ẩn để biểu diễn các khái niệm trừu tượng như chủ đề (topic) Mô hình LDA không chỉ giới hạn trong phân tích văn bản mà còn có thể áp dụng cho nhiều bài toán khác, bao gồm lọc cộng tác (collaborative filtering), truy xuất hình ảnh theo nội dung (content-based image retrieval), và phân tích dữ liệu sinh học (bioinformatics) Các thuật ngữ chính trong mô hình được định nghĩa một cách chặt chẽ bởi nhóm tác giả.
• Từ được xem là đơn vị cơ bản của dữ liệu rời rạc, được định nghĩa là một phần tử trong tập từ vựng, được đánh số từ1,2, ,V.
Từ được biểu diễn dưới dạng vector đơn vị, trong đó chỉ có một phần tử bằng 1 và các phần tử còn lại bằng 0 Ví dụ, từ "thứv" trong từ vựng được biểu diễn bằng vector với giá trị V-chiều sao cho v = 1 và u = 0 với mọi u khác v.
• Một tài liệu là một chuỗiN từ, được ký hiệu làw= (w 1 ,w 2 , ,w n )vớiw n là từ thứ ntrong chuỗi.
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 15/34
Mỗi tài liệu có thể được xem như một tổ hợp tuyến tính của các chủ đề, trong đó trọng số của từng chủ đề thể hiện mức độ liên quan của nó trong nội dung tài liệu.
3 Tập hợp các tài liệu (Corpus):
• Corpus là một tập hợp gồmMtài liệu được ký hiệu làD= (w 1 ,w 2 , ,w M )
Mô hình LDA sẽ phân tích và phát hiện các chủ đề tiềm ẩn trong tập dữ liệu, đồng thời biểu diễn các chủ đề này thông qua phân phối xác suất của từ vựng.
2.3.3.3 Mô hình Phân bổ Dirichlet tiềm ẩn (LDA)
LDA (Latent Dirichlet Allocation) là một mô hình sinh xác suất được sử dụng cho tập hợp tài liệu Mô hình này thể hiện các tài liệu như những hỗn hợp ngẫu nhiên của các chủ đề tiềm ẩn, trong đó mỗi chủ đề được xác định bởi một phân phối xác suất trên các từ trong từ vựng.
LDA giả định rằng quá trình sinh ra một tài liệuwtrong tập corpusDdiễn ra theo các bước sau:
1 Chọn số từN∼Poisson(ξ)vớiξ là tham số của phân phối Poisson.
2 Chọn phân phối chủ đềθ ∼Dir(α)vớiα là tham số của phân phối Dirichlet,θ là vector biểu diễn xác suất củakchủ đề trong tài liệu.
3 Đối với mỗi từw n trong tài liệu:
(a) Chọn một chủ đề z n ∼Multinomial(θ) Nghĩa là chủ đề z n được chọn ngẫu nhiên dựa trên phân phối chủ đềθ.
(b) Chọn từw n từ một phân phốip(w n |z n ,β), một xác suất đa thức có điều kiện trên chủ đềz n
Mô hình truy xuất chủ đề cho bài đăng testcase
Mô tả bài toán
Để sinh viên nhanh chóng tiếp cận các bài đăng testcase phù hợp với trình độ và tiến trình học tập của mình, mô hình đề xuất cần đáp ứng một số điều kiện nhất định, nhằm nâng cao hiệu suất làm bài tập cho sinh viên.
Mô hình này có khả năng xác định chủ đề cho từng testcase trong hệ thống Dựa vào các chủ đề này, nó sẽ so khớp với những chủ đề mà sinh viên đang tập trung trong quá trình làm bài Khi các chủ đề trùng khớp, hệ thống sẽ gợi ý các testcase phù hợp nhất cho sinh viên.
Mô hình sẽ phân tích lịch sử làm bài của sinh viên, bao gồm các kết quả đúng và sai, nhằm đưa ra những gợi ý testcase phù hợp nhất Điều này giúp cải thiện khả năng và hiệu suất học tập của sinh viên một cách hiệu quả.
Cụ thể, bài toán sẽ có Input và Output như sau:
– Tiêu đề và mô tả bài tập lớn
– Tiêu đề và nội dung của các bài giảng trên lớp
– Tiêu đề và mô tả của bài đăng testcase
– Lịch sử làm bài của sinh viên
• Output: Mức độ tương đồng giữa các bài đăng testcase với sinh viên
Hình cấu trúc bài đăng testcase ở đây (bổ sung sau)
Mô hình đề xuất
Để xác định chủ đề cho từng testcase, trước tiên cần lựa chọn mô hình phù hợp Mô hình LDA được đề xuất nhằm giải quyết bài toán này, kết hợp với phương pháp TF-IDF để phân tích và so sánh mức độ tương đồng giữa bài đăng testcase và sinh viên.
3.1.2.1 Sử dụng mô hình LDA để tính sự tương đồng
Nhóm lựa chọn mô hình LDA dựa trên các lý do sau:
Mô hình LDA có khả năng phát hiện các chủ đề ẩn trong các bài đăng testcase mà không cần gán nhãn cụ thể, ngay cả khi tiêu đề hoặc mô tả của bài đăng không rõ ràng về chủ đề.
Mô hình LDA cung cấp phân phối xác suất cho từng chủ đề, cho phép xác định mức độ liên quan của mỗi bài đăng testcase với các chủ đề cụ thể Điều này tạo điều kiện thuận lợi cho việc gợi ý testcase phù hợp cho sinh viên.
Từ tập dữ liệu ban đầu, bao gồm:
• Tiêu đề và mô tả bài tập lớn
• Tiêu đề và nội dung của các bài giảng trên lớp
Nhóm sẽ chuyển đổi các văn bản không có cấu trúc thành định dạng phù hợp cho xử lý ngôn ngữ tự nhiên (NLP) Sau đó, dữ liệu này sẽ được tiền xử lý để trở thành đầu vào cho mô hình LDA, giúp phân tích các chủ đề tiềm ẩn từ nội dung bài giảng và bài tập lớn.
Sau đó, sử dụng mô hình đã huấn luyện được để suy ra phân phối chủ đề cho từng bài đăng testcase.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
Giới thiệu Hệ thống chia sẻ testcase
Kiến trúc hệ thống
- viết z xong hôm sau hỏi mấy anh xem thông tin ddể đâu - vẽ kiên trúc hệ thống (nhin là hiểu, không cần quy ước)
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 19/34
Phân tích và thiết kế hệ thống
Phân tích yêu cầu hệ thống
1 Sinh viên:Người dùng chính của hệ thống Sinh viên đăng tải, tìm kiếm, và thử nghiệm các testcase Họ cũng có thể tương tác với các bài chia sẻ testcase thông qua việc phản hồi/bình luận và đánh giá.
2 Giảng viên:Người theo dõi và quản lý sự tương tác của sinh viên thông qua hệ thống Họ cũng có thể đánh giá, phản hồi về testcase mà sinh viên chia sẻ.
3 Quản trị viên: Người quản lý hệ thống, bao gồm việc duy trì và bảo đảm tính ổn định của hệ thống.
Thứ tự User Story Acceptance Criteria
1 Là một sinh viên, tôi muốn tạo tài khoản và đăng nhập vào hệ thống để sử dụng các tính năng chia sẻ và thử nghiệm testcase.
- Sinh viên có thể tạo tài khoản mới với MSSV và mật khẩu hợp lệ.
- Sinh viên có thể đăng nhập vào hệ thống sau khi đã đăng ký.
- Hệ thống thông báo lỗi khi đăng nhập hoặc đăng ký không thành công.
- Sinh viên có thể yêu cầu và đặt lại mật khẩu mới nếu quên mật khẩu.
Là sinh viên lần đầu đăng nhập vào hệ thống, tôi mong muốn nhận được những gợi ý về các bài viết liên quan đến những vấn đề tôi có thể gặp phải trong bài tập của mình.
- Sinh viên được chọn và chạy thử testcase từ một vài bài viết được gợi ý sẵn.
- Hệ thống đưa ra gợi ý dựa trên bài viết sinh viên chọn và kết quả chạy testcase ban đầu của sinh viên.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
Thứ tự User Story Acceptance Criteria
3 Là một sinh viên, tôi muốn chia sẻ testcase của mình lên hệ thống để các sinh viên khác có thể thử nghiệm và phản hồi.
- Sinh viên có thể tạo một bài post mới để chia sẻ testcase bao gồm tiêu đề, mô tả, và các testcase đính kèm.
- Bài post phải có thể được gán nhãn theo topic liên quan.
- Hệ thống lưu lại bài post và cho phép người khác xem và tương tác.
4 Là một sinh viên, tôi muốn tìm kiếm các testcase được chia sẻ để dễ dàng chọn được các testcase phù hợp với bài làm của mình.
- Sinh viên có thể sử dụng công cụ tìm kiếm để tìm các bài post theo tiêu đề, mô tả, hoặc topic.
- Kết quả tìm kiếm hiển thị danh sách các bài post liên quan.
Là một sinh viên, tôi muốn tải mã nguồn của mình lên hệ thống để kiểm tra với các testcase đã chọn và nhận kết quả chi tiết cho từng testcase.
- Sinh viên có thể upload file code của mình lên hệ thống từ giao diện bài post của testcase.
- Hệ thống phải chạy thử code với các testcase trong bài post và hiển thị kết quả (pass/fail, logs, thời gian chạy).
6 Là một sinh viên, tôi muốn nhận được gợi ý về các testcase liên quan mà tôi có thể quan tâm.
- Hệ thống phải gợi ý các bài chia sẻ testcase dựa trên lịch sử tìm kiếm, bài post đã xem, và các topic mà sinh viên quan tâm.
- Gợi ý phải xuất hiện trên trang chính, trang tìm kiếm hoặc khi sinh viên duyệt các bài post.
7 Là một sinh viên, tôi muốn nhận được gợi ý về các testcase liên quan đến những testcase mà tôi đã chạy trong một bài post.
- Hệ thống phải gợi ý các bài chia sẻ testcase dựa trên kết quả chạy test- case của sinh viên.
- Gợi ý phải xuất hiện ngay trong trang chi tiết của bài post.
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 21/34
Thứ tự User Story Acceptance Criteria
8 Là một sinh viên, tôi muốn xem các bài post phổ biến hoặc được đánh giá cao để chọn được testcase chất lượng.
- Sinh viên có thể lọc bài post theo số lượng like hoặc đánh giá.
- Hệ thống hiển thị bài post được sắp xếp theo mức độ phổ biến hoặc tiêu chí nào đó.
9 Là một sinh viên, tôi muốn lưu lại những bài post theo từng mục có thể tùy chỉnh để tiện xem lại sau này.
- Sinh viên có thể tạo các bộ sưu tập, lưu các bài post vào bộ sưu tập và xóa các bài post khỏi bộ sưu tập.
- Hệ thống lưu lại các bộ sưu tập và bài post sinh viên đã lưu.
- Sinh viên truy cập các bài post đã lưu từ bộ sưu tập của mình.
Thứ tự User Story Acceptance Criteria
1 Là một giảng viên, tôi muốn theo dõi sự tương tác của sinh viên với các testcase để đánh giá chất lượng của testcase/assignment.
- Giảng viên có thể xem báo cáo thống kê về số lượng sinh viên sử dụng mỗi testcase, số lượt phản hồi, và số lượt like.
- Hệ thống hiển thị bảng tổng hợp dữ liệu theo từng assignment hoặc topic cụ thể.
Là giảng viên, tôi mong muốn nhận thông báo khi có quá nhiều thảo luận về một bài đăng hoặc một phần cụ thể của bài tập, để có thể kiểm tra lại và xử lý kịp thời nếu đề bài gặp lỗi.
- Hệ thống sẽ tự động gửi cảnh báo khi có lượng lớn bài post, phản hồi, hoặc thảo luận tập trung vào một phần cụ thể của assignment.
- Giảng viên có thể tùy chỉnh ngưỡng số lượng thảo luận để kích hoạt cảnh báo.
3 Là một giảng viên, tôi muốn xác minh (verify) một bài chia sẻ test- case là đúng để tăng độ uy tín của bộ testcase được chia sẻ.
- Giảng viên có thể xác minh (ver- ify) một bài chia sẻ testcase từ giao diện xem bài post.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
Thứ tự User Story Acceptance Criteria
- Hệ thống hiển thị trạng thái "đã xác minh" hoặc "đã kiểm tra" cho bộ testcase được chia sẻ sau khi giảng viên xác nhận.
- Sinh viên và giảng viên khác có thể thấy bài post đã được xác minh.
4 Là một giảng viên, tôi muốn giới thiệu (recommend) một bài chia sẻ testcase để sinh viên khác có thể tham khảo.
- Giảng viên có thể giới thiệu (rec- ommend) một bài chia sẻ testcase từ giao diện xem bài post.
- Hệ thống hiển thị trạng thái "Rec- ommended" hoặc "Gợi ý từ giảng viên" cho bộ testcase.
- Sinh viên và giảng viên khác có thể thấy bài post được recommend.
3 Đối với quản trị viên
Thứ tự User Story Acceptance Criteria
Là một quản trị viên hệ thống, tôi muốn hạn chế quyền truy cập vào hệ thống bằng cách nhập danh sách sinh viên và giảng viên của môn học vào hệ thống.
- Quản trị viên có thể import danh sách sinh viên và giảng viên của từng học kỳ ứng với từng môn học lên hệ thống.
- Chỉ có những sinh viên có tên trong danh sách này mới có thể tạo tài khoản bằng MSSV/mail của mình.
• Hệ thống phải cho phép sinh viên và giảng viên đăng ký tài khoản với xác thực qua email.
• Hệ thống phải cho phép người dùng cập nhật thông tin cá nhân, reset mật khẩu qua email.
2 Quản lý bài post và testcase
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 23/34
• Hệ thống phải hỗ trợ tạo, sửa, xóa bài post với testcase kèm theo tiêu đề, mô tả, và gán nhãn topic.
Hệ thống cho phép sinh viên nhập thủ công từng testcase, bao gồm cả input và expected output, trong một bài post Mỗi bài post có giới hạn tối đa 5 testcase.
3 Tìm kiếm và phân loại bài post
• Hệ thống phải có công cụ tìm kiếm và bộ lọc cho phép tìm kiếm bài post theo tiêu đề, mô tả, hoặc topic.
• Bài post phải được phân loại và có thể tìm kiếm theo topic hoặc assignment cụ thể.
4 Tải mã nguồn và chạy thử
• Hệ thống phải hỗ trợ sinh viên đăng tải các testcase và chạy thử với các testcase đã chọn.
• Hệ thống phải hiển thị kết quả test trực quan, bao gồm kết quả pass/fail, log lỗi, và thời gian chạy.
5 Đánh giá và phản hồi
• Hệ thống phải cho phép sinh viên đánh giá (like/rating) và phản hồi trên các bài post.
• Phản hồi phải được hiển thị dưới dạng luồng bình luận có thể trả lời hoặc đánh giá.
• Hệ thống phải cho phép giảng viên xác minh (verify) một bài chia sẻ testcase, gắn nhãn "đã xác minh".
• Hệ thống phải cho phép giảng viên giới thiệu (recommend) một bài chia sẻ testcase, gắn nhãn "Recommended".
Hệ thống cần tự động phân loại các testcase theo độ khó, giúp sinh viên dễ dàng chọn lựa testcase phù hợp với khả năng của mình.
• Hệ thống phải tự động gợi ý các bài post liên quan dựa trên lịch sử hoạt động của sinh viên.
• Gợi ý phải được cá nhân hóa theo từng người dùng.
Sinh viên lần đầu đăng nhập sẽ nhận được gợi ý từ những bài viết được đánh giá cao trong hệ thống, bao gồm các bài viết có nhiều đánh giá, bình luận và được người dùng recommend.
8 Báo cáo và cảnh báo
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
• Hệ thống phải cung cấp các báo cáo thống kê về sự tương tác với từng bài post hoặc testcase.
• Hệ thống phải có khả năng cảnh báo tự động khi phát hiện có sự gia tăng đột biến về thảo luận liên quan đến một assignment cụ thể.
3.3.1.4 Yêu cầu phi chức năng
Hệ thống cần phải xử lý lượng truy cập lớn và đảm bảo thời gian phản hồi nhanh chóng, dưới 3 giây, cho các thao tác như tìm kiếm, tải trang và tải file.
• Hệ thống phải bảo vệ thông tin cá nhân của người dùng bằng các phương thức mã hóa và xác thực.
Dữ liệu của sinh viên, bao gồm các file code mà họ tải lên hệ thống, cần được bảo vệ nghiêm ngặt Chỉ những người được ủy quyền mới có quyền truy cập vào các thông tin này.
Hệ thống cần được thiết kế với khả năng mở rộng linh hoạt, cho phép bổ sung tài nguyên như máy chủ và cơ sở dữ liệu một cách dễ dàng khi số lượng người dùng tăng cao.
• Hệ thống phải có khả năng khôi phục nhanh chóng sau khi xảy ra sự cố, với thời gian downtime tối đa không quá 5 phút.
• Hệ thống phải có cơ chế sao lưu dữ liệu định kỳ và khôi phục dữ liệu khi cần thiết.
• Hệ thống phải hoạt động tốt trên nhiều trình duyệt (Chrome, Firefox, Safari, Edge) và các thiết bị khác nhau (máy tính, tablet, smartphone).
• Giao diện hệ thống phải dễ sử dụng, trực quan, 90% sinh viên có thể sử dụng dễ dàng theo hướng dẫn của hệ thống.
• Người dùng mới có thể sử dụng sau khi được hướng dẫn khoảng 5 - 10 phút.
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 25/34
Các lược đồ thiết kế hệ thống
3.3.2.1 Lược đồ cơ sở dữ liệu
3.3.2.2 Lược đồ ánh xạ cơ sở dữ liệu
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
Usecase diagram cho toàn bộ hệ thống:
Hình 3.1: Usecase cho toàn bộ hệ thống
Bảng mô tả các usecase chính của hệ thống:
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 27/34
1 Đăng ký tài khoản Đối với người dùng (sinh viên/giảng viên) mới, cần phải đăng ký tài khoản để sử dụng hệ thống.
2 Đăng nhập Người dùng (sinh viên/giảng viên) cần đăng nhập để được phân quyền sử dụng hệ thống.
3 Cập nhật thông tin Người dùng (sinh viên/giảng viên) cập nhật thông tin cá nhân của mình trên hệ thống.
Hệ thống xác thực tài khoản sẽ kiểm tra tính hợp lệ của tài khoản người dùng khi đăng nhập Nếu tài khoản không hợp lệ, hệ thống sẽ gửi thông báo cho người dùng.
Hệ thống xác thực cung cấp hỗ trợ người dùng trong việc khôi phục mật khẩu bằng cách gửi một mật khẩu mới qua email hoặc số điện thoại.
6 Tạo testcase chia sẻ Sinh viên tạo một bài post mới để chia sẻ testcase của mình với các sinh viên khác.
7 Phân loại testcase Sinh viên chọn chủ đề (topic) phù hợp với testcase được chia sẻ để phân loại bài post.
8 Sửa testcase Sinh viên có thể chỉnh sửa nội dung các testcase đã đăng trước đó.
9 Tracking change Hệ thống tự động lưu lại lịch sử bài chia sẻ của sinh viên.
10 Upload code Sinh viên upload file code của mình để kiểm thử với các testcase đã chọn.
11 Kiểm thử với testcase Hệ thống chạy thử code của sinh viên với testcase sinh viên chọn và hiển thị kết quả.
12 Gợi ý testcase Hệ thống gợi ý các testcase liên quan dựa trên lịch sử hoạt động của sinh viên.
13 Bình luận/phản hồi Sinh viên có thể bình luận và phản hồi về các testcase được chia sẻ bởi người khác.
14 Đề xuất bộ testcase Giảng viên có thể giới thiệu và đề xuất các bài chia sẻ test- case mà họ cho là chất lượng.
15 Verify testcase Giảng viên kiểm tra và xác nhận testcase là đúng, sau đó gắn nhãn xác minh cho testcase.
16 Đánh giá testcase Sinh viên và giảng viên có thể đánh giá testcase bằng cách like hoặc rating bài post.
17 Báo cáo thống kê Giảng viên xem báo cáo thống kê về sự tương tác với các bài chia sẻ testcase.
Hệ thống tự động cảnh báo giảng viên khi phát hiện sự tăng đột biến về thảo luận hoặc tương tác liên quan đến một phần cụ thể của bài tập Điều này giúp giảng viên nắm bắt kịp thời các vấn đề, từ đó có thể hỗ trợ sinh viên hiệu quả hơn Việc theo dõi các hoạt động này không chỉ nâng cao chất lượng giảng dạy mà còn tạo điều kiện cho sinh viên tham gia tích cực hơn trong quá trình học tập.
Trường Đại Học Bách Khoa - Đại học Quốc gia TP.HCM
Khoa Khoa Học & Kỹ Thuật Máy Tính
19 Tạo sự kiện Giảng viên tạo sự kiện liên quan đến các assignment để khuyến khích sinh viên tham gia chia sẻ testcase.
Usecase diagram cho module chia sẻ testcase: Bảng mô tả testcase:
Use Case Name Tạo bài chia sẻ
Description Sinh viên tạo một bài post mới để chia sẻ testcase.
Preconditions Sinh viên đã đăng nhập vào hệ thống.
Trigger Sinh viên chọn chức năng "Create Post".
Normal flow 1 Sinh viên điền vào tiêu đề và mô tả cho những testcase mà mình chia sẻ.
2 Sinh viên tạo thủ công từng testcase bằng cách nhập vào input và expected tương ứng của mỗi testcase.
3 Sinh viên nhấn vào “Add testcase” nếu muốn tạo thêm testcase cho bài chia sẻ và quay lại bước 2.
4 Sinh viên gán nhãn cho bài chia sẻ của mình với các topic liên quan.
5 Sinh viên nhấn vào “Upload post” để đăng tải bài chia sẻ lên diễn đàn.
Khi sinh viên không còn ý định tạo bài post, họ có thể nhấn vào biểu tượng “X” để thoát và trở về giao diện trước đó Hệ thống sẽ thông báo nếu việc tạo post không thành công, kèm theo một số nguyên nhân cụ thể.
- Thiếu thông tin cần thiết (tiêu đề, mô tả).
- Định dạng testcase không hợp lệ.
Alternative flow Alternative 1: tại bước 1
1b Sinh viên thay đổi tiêu đề, mô tả của bài chia sẻ.
Alternative 2: tại bước 2 2a Sinh viên xóa hoặc thay đổi testcase đã tạo.
Postconditions Bài chia sẻ được đăng tải và mọi người dùng có thể xem trên hệ thống.
Bảng 3.5: Use case Scenario - Tạo bài chia sẻ
Use Case Name Tìm kiếm
Báo cáo Đồ án chuyên ngành (CO4029) - HK1 2023 - 2024 Trang 29/34
Description Sinh viên tìm kiếm bài chia sẻ dựa trên tiêu đề, mô tả hoặc topic.
Preconditions Sinh viên đã đăng nhập vào hệ thống.
Trigger Sinh viên nhập từ khóa vào thanh tìm kiếm.
Normal flow 1 Sinh viên nhập từ khóa vào thanh tìm kiếm.
2 Hệ thống hiển thị kết quả là danh sách các bài chia sẻ có liên quan đến từ khóa đó.
Exceptions 2a Hệ thống thông báo không có kết quả tìm kiếm phù hợp.
Alternative flow Alternative 1: tại bước 1
1a Sinh viên sử dụng bộ lọc để thu hẹp phạm vi kết quả tìm kiếm.
Postconditions Danh sách các bài chia sẻ liên quan được hiển thị.
Bảng 3.6: Use case Scenario - Tìm kiếm
Use Case Name Kiểm thử testcase
Description Sinh viên kiểm thử với các testcase có sẵn từ một bài chia sẻ.
Preconditions Sinh viên đã tìm thấy bài post chứa testcase và đã upload code lên hệ thống.
Trigger Sinh viên chọn chức năng "Run code".
Normal flow 1 Hệ thống chạy code của sinh viên với các testcase trong bài post.
2 Hệ thống hiển thị kết quả (pass/fail, logs, thời gian chạy) tương ứng với mỗi testcase.
Exceptions 1a File code tải lên bị lỗi khi biên dịch hoặc chạy thử, khi nào hệ thống hiển thị thông báo lỗi tương ứng khi chạy.
Postconditions Kết quả kiểm thử được hiển thị cho sinh viên.
Bảng 3.7: Use case Scenario - Kiểm thử testcase
Thực nghiệm và đánh giá kết quả
Demo reproduce
Mô hình chủ đề LDA
Kế hoạch thực hiện đưuọc vẽ theo gantz theo tuần (vẽđẹp xíu)
Gediminas Adomavicius and Alexander Tuzhilin's 2005 survey in the IEEE Transactions on Knowledge and Data Engineering explores the advancements in recommender systems, highlighting the current state-of-the-art technologies and potential future enhancements Their research emphasizes the importance of improving recommendation accuracy and user satisfaction, while also addressing challenges such as scalability and personalization The authors propose various extensions to existing models, aiming to guide the development of next-generation recommender systems that better meet user needs and preferences.
[2] Charu C Aggarwal An introduction to recommender systems InRecommender Systems
[3] Remigiusz Baran, Andrzej Dziech, and Andrzej Zeja A capable multimedia content dis- covery platform based on visual content analysis and intelligent data enrichment Multi- media Tools and Applications, 77:14077–14091, 2018.
[4] Joeran Beel, Bela Gipp, Stefan Langer, and Corinna Breitinger Research-paper rec- ommender systems : a literature survey International Journal on Digital Libraries,
[5] David M Blei Probabilistic topic models Communications of the ACM, 55(4):77–84,
[6] David M Blei, Andrew Y Ng, and Michael I Jordan Latent dirichlet allocation Journal of Machine Learning Research, 3:993–1022, 2003.
[7] Paul Covington, Jay K Adams, and Emre Sargin Deep neural networks for youtube rec- ommendations.Proceedings of the 10th ACM Conference on Recommender Systems, 2016.
[8] S P Crain, K Zhou, S H Yang, and H Zha Dimensionality reduction and topic mod- eling: From latent semantic indexing to latent dirichlet allocation and beyond InMining Text Data, pages 129–161 Springer Boston, 2012.
[9] S Deerwester, S T Dumais, T K Landauer, G W Furnas, and R Harshman Indexing by latent semantic analysis Journal of the American Society for Information Science,
[10] Sandrine Dudoit, Jane Fridlyand, and Terence P Speed Comparison of discrimination methods for the classification of tumors using gene expression data Journal of the Amer- ican Statistical Association, 97:77–87, 2002.