Tải bản đầy đủ (.pdf) (61 trang)

Hệ thống gợi ý hỗ trợ thực hành lập trình

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.79 MB, 61 trang )

ĐẠI HỌC QUỐC GIA TP. HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
--------------------

VŨ VĂN TIẾN

HỆ THỐNG GỢI Ý
HỖ TRỢ THỰC HÀNH LẬP TRÌNH

Chuyên ngành: Khoa học Máy tính
Mã số: 8480101

LUẬN VĂN THẠC SĨ

TP. HỒ CHÍ MINH, tháng 07 năm 2023


CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI
TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM
Cán bộ hướng dẫn khoa học 1: TS. Phạm Hoàng Anh
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ hướng dẫn khoa học 2: PGS.TS. Huỳnh Tường Nguyên
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ chấm nhận xét 1 : TS. Trang Hồng Sơn
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Cán bộ chấm nhận xét 2 : TS. Lê Thị Thủy
(Ghi rõ họ, tên, học hàm, học vị và chữ ký)
Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp. HCM
ngày 11 tháng 7 năm 2023
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
(Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ)


1. Chủ tịch:
TS. Nguyễn Đức Dũng
2. Thư ký:
TS. Nguyễn Tiến Thịnh
3. Phản biện 1:
TS. Trang Hồng Sơn
4. Phản biện 2:
TS. Lê Thị Thủy
5. Ủy viên:
PGS.TS. Huỳnh Tường Nguyên
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên
ngành sau khi luận văn đã được sửa chữa (nếu có).
CHỦ TỊCH HỘI ĐỒNG

TRƯỞNG KHOA KHOA HỌC
VÀ KỸ THUẬT MÁY TÍNH

i


ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc

NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: VŨ VĂN TIẾN

MSHV: 2170579


Ngày, tháng, năm sinh: 03/04/1999

Nơi sinh: Quảng Ngãi

Chuyên ngành: Khoa học Máy tính

Mã số: 8480101

I. TÊN ĐỀ TÀI: HỆ THỐNG GỢI Ý HỖ TRỢ THỰC HÀNH LẬP TRÌNH
(RECOMMENDATION SYSTEM FOR PROGRAMMING PRACTICE)
II. NHIỆM VỤ VÀ NỘI DUNG:
- Tìm hiểu các kiến thức và các nghiên cứu liên quan đến hệ thống gợi ý,
- Trên cơ sở học liệu về lập trình và các dữ liệu đã thu thập từ nhiều năm, học viên
cần đánh giá, phân tích nhằm đề xuất giải pháp gợi ý học lập trình phù hợp với khả
năng của người học,
- Xây dựng kiến trúc và hiện thực giải pháp đề xuất, sau đó cần tìm cách ứng dụng
triển khai thử nghiệm ngồi thực tế,
- Đánh giá kết quả của hệ thống gợi ý đề xuất dựa trên bộ dữ liệu thu thập được
trong quá trình triển khai thử nghiệm.
III. NGÀY GIAO NHIỆM VỤ: 06/02/2023
IV. NGÀY HOÀN THÀNH NHIỆM VỤ: 11/06/2023
V. CÁN BỘ HƯỚNG DẪN (Ghi rõ học hàm, học vị, họ, tên): TS. Phạm Hoàng Anh,
PGS.TS. Huỳnh Tường Nguyên

Tp. HCM, ngày 10 tháng 07 năm 2023
CÁN BỘ HƯỚNG DẪN 1
(Họ tên và chữ ký)

CÁN BỘ HƯỚNG DẪN 2

(Họ tên và chữ ký)

HỘI ĐỒNG NGÀNH
(Họ tên và chữ ký)

TRƯỞNG KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH
(Họ tên và chữ ký)

Ghi chú: Học viên phải đóng tờ nhiệm vụ này vào trang đầu tiên của tập thuyết minh LV
ii


Lời cảm ơn
Để hoàn thành được bài Luận văn Thạc sĩ này, tơi xin bày tỏ sự cảm kích đặc biệt tới các cố
vấn của tơi, Tiến sĩ Phạm Hồng Anh và Phó giáo sư Tiến sĩ Huỳnh Tường Nguyên - Những
người đã định hướng, trực tiếp dẫn dắt và cố vấn cho tôi trong suốt thời gian thực hiện đề tài
nghiên cứu khoa học. Tôi xin gửi lời cảm ơn đến các thầy bằng tất cả tấm lòng và sự biết ơn của
mình.
Tơi cũng xin gửi lời cảm ơn chân thành đến gia đình, những người ln động viên và khuyến
khích tơi hồn thành Luận văn Thạc sĩ này.
Xin chân thành cảm ơn tất cả mọi người!
Tp. HCM, ngày 10 tháng 07 năm 2023
Học viên
Vũ Văn Tiến

iii


Tóm tắt
Trong bối cảnh nhu cầu nhân lực Cơng nghệ thông tin (CNTT) ngày càng tăng cao tại Việt

Nam, thực hành lập trình trở nên quan trọng nhằm giúp người học rèn luyện và phát triển kỹ
năng lập trình. Luận văn đã tìm hiểu các kiến thức và nghiên cứu liên quan đến các Hệ thống
Gợi ý trong lĩnh vực giáo dục nhằm hỗ trợ thực hành lập trình. Từ đó, Luận văn đề xuất một
kiến trúc hệ thống gợi ý chung giúp người học được gợi ý các bài tập phù hợp với khả năng
và tốc độ học tập cá nhân. Kiến trúc gợi ý này được áp dụng tập trung vào gợi ý testcase trong
Bài tập lớn, nơi mà người học cần giải quyết một vấn đề lập trình phức tạp. Phương pháp gợi
ý testcase được đề xuất kết hợp giữa phương pháp Hệ thống Gợi ý (Recommendation System RS) và Vùng phát triển gần (Zone of Proximal Development - ZPD) giúp đưa ra testcases phù
hợp với năng lực của người học. Một hệ thống gợi ý testcases được hiện thực để sử dụng thực
tiễn trong quá trình triển khai bài tập lớn. Đánh giá hệ thống được thực hiện thơng qua phân tích
đặc điểm của hệ thống cũng như xem xét hiệu suất tương tác của người học. Thơng qua việc
thực hành lập trình phù hợp, hệ thống hướng đến tăng cường sự hứng thú và khả năng tự học
của người học.
Các từ khóa: Hệ thống Quản lý Học tập (LMS), Hệ thống Học tập thích ứng (ALS), Hệ
thống Gợi ý (RS), Hệ thống Gợi ý Testcases (TRS), Phương pháp Vùng phát triển gần (ZPD),
Phương pháp phân tích suy biến (SVD).

iv


Abstract
In Vietnam, the demand for Information Technology (IT) is growing rapidly, making practical programming skills increasingly important for learners to develop. This thesis delves into the
realm of educational recommendation systems to support programming practice. The goal is to
propose a comprehensive recommendation system architecture that suggests suitable exercises
based on individual learners’ abilities and learning pace. Specifically, the architecture focuses
on recommending testcases for complex programming problems encountered in Assignments.
By combining Recommendation Systems (RS) technique and the Zone of Proximal Development (ZPD), the proposed method ensures that the testcases provided align with learners’ capabilities. A practical testcase recommendation system is deployed and evaluated by analyzing
its characteristics and assessing learners’ interaction performance. Ultimately, through effective
programming practice, the system aims to encourage learners’ enthusiasm and enhance their
self-learning abilities.
Keywords: Learning Management System (LMS), Adaptive Learning System (ALS), Recommendation System (RS), Testcases Recommedation System (TRS), Zone of Proximal Development (ZPD), Singular Value Decomposition (SVD).


v


Lời cam đoan
Tơi xin cam đoan đây là cơng trình nghiên cứu của riêng tôi dưới sự hướng dẫn của TS.
Phạm Hoàng Anh và PGS. TS. Huỳnh Tường Nguyên. Nội dung nghiên cứu và các kết quả đều
là trung thực và chưa từng được công bố trước đây. Các nội dung nghiên cứu trình bày trong đây
đa phần là tơi tự tìm hiểu, phân tích và tổng hợp. Tơi cũng có sử dụng một số nhận xét, đánh giá
và số liệu của các tác giả khác, cơ quan tổ chức khác. Tất cả đều có trích dẫn và chú thích nguồn
gốc. Nếu phát hiện có bất kỳ sự gian lận nào, tơi xin hồn tồn chịu trách nhiệm, trường Đại học
Bách Khoa - ĐHQG Tp.HCM không liên quan đến những vi phạm tác quyền, bản quyền do tôi
gây ra trong quá trình thực hiện.
Tp. HCM, ngày 10 tháng 07 năm 2023
Học viên
Vũ Văn Tiến

vi


Mục lục
1

2

Giới thiệu

1

1.1


Động cơ nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.2

Mục tiêu nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.3

Đối tượng và phạm vi nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.4

Phương pháp nghiên cứu . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3

1.5

Ý nghĩa của đề tài . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

1.6


Cấu trúc của Luận văn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5

Kiến thức nền tảng

6

2.1

Phân tích hồ sơ người học trong Hệ thống Quản lý Học tập (LMS) . . . . . . .

6

2.1.1

Hệ thống Quản lý Học tập . . . . . . . . . . . . . . . . . . . . . . . .

6

2.1.2

Phân tích hồ sơ người học . . . . . . . . . . . . . . . . . . . . . . . .

7

2.1.3

Hệ thống Học tập Thích ứng (ALS) . . . . . . . . . . . . . . . . . . .


8

Hệ thống Gợi ý trong lĩnh vực giáo dục (RS) . . . . . . . . . . . . . . . . . . .

10

2.2.1

Hệ thống Gợi ý . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.2.2

Phương pháp Vùng phát triển gần (Zone of Proximal - ZPD) . . . . . .

14

2.2.3

Các phương pháp đánh giá Hệ thống Gợi ý . . . . . . . . . . . . . . .

15

Kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2


2.3
3

Hệ thống gợi ý hỗ trợ thực hành lập trình

17

3.1

Đề xuất kiến trúc hệ thống học tập thích ứng (ALS) . . . . . . . . . . . . . . .

17

3.2

Hệ thống gợi ý testcase (TRS) . . . . . . . . . . . . . . . . . . . . . . . . . .

21

3.2.1

Quá trình gợi ý testcases . . . . . . . . . . . . . . . . . . . . . . . . .

24

3.2.2

Phương pháp gợi ý testcases SVD-ZPD . . . . . . . . . . . . . . . . .


25

Kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

3.3
4

Đánh giá kết quả

27

4.1

Đánh giá kiến trúc hệ thống ALS . . . . . . . . . . . . . . . . . . . . . . . . .

27

4.2

Đánh giá Hệ thống Gợi ý Testcase (TRS) . . . . . . . . . . . . . . . . . . . . .

29

4.3

Kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39


vii


5

Kết luận

41

Danh mục các cơng trình khoa học

44

Tài liệu tham khảo

48

viii


Danh sách bảng
2.1

Khảo sát các hệ thống ALS trước đây

. . . . . . . . . . . . . . . . . . . . . .

9


4.1

Thiết lập các thơng số cho q trình học tập thích ứng . . . . . . . . . . . . . .

29

4.2

Phản hồi của sinh viên về q trình học tập thích ứng . . . . . . . . . . . . . .

29

4.3

Các đặc điểm trong triển khai BTL ở 3 học kỳ . . . . . . . . . . . . . . . . . .

31

4.4

So sánh sự triển khai BTL ở 3 học kỳ liên quan đến các yếu tố về môi trường . .

33

4.5

So sánh sự triển khai BTL ở 3 học kỳ liên quan đến các yếu tố về người học . .

34


4.6

Kết quả thống kê sau khi triển khai BTL ở 3 học kỳ . . . . . . . . . . . . . . .

35

ix


Danh sách hình vẽ
2.1

Ví dụ về câu hỏi CodeRunner . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2.2

Các phương pháp trong Hệ thống Gợi ý - Recommendation System (RS) . . . .

11

2.3

Ví dụ về lọc cộng tác (slide từ khố học Stanford CS246: Mining Massive
Datasets) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

3.1


Kiến trúc hệ thống thực hành lập trình thích ứng được đề xuất . . . . . . . . . .

18

3.2

Giao diện kết quả của Bộ phân loại câu hỏi . . . . . . . . . . . . . . . . . . .

20

3.3

Quá trình gợi ý testcases . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

4.1

Cài đặt của một Bài thực hành bắt buộc . . . . . . . . . . . . . . . . . . . . .

28

4.2

Ví dụ về Bài thực hành bắt buộc . . . . . . . . . . . . . . . . . . . . . . . . .

28

4.3


Ví dụ về một Bài thực hành luyện tập . . . . . . . . . . . . . . . . . . . . . . .

29

4.4

So sánh giữa nhóm người Use và Not-use TRS trong SEM-222 . . . . . . . . .

37

4.5

Phân bố số ngày người học nộp bài trên hai hệ thống . . . . . . . . . . . . . .

38

4.6

Số lượng yêu cầu testcases mới trên TRS trong 03/2023 . . . . . . . . . . . . .

39

x


Danh mục viết tắt
AGS Hệ thống chấm điểm tự động - Automatic Grading System. 21, 23
ALS Hệ thống Học tập Thích ứng - Adaptive Learning System. 8, 27, 39, 40, 42
BTL Bài tập lớn. 1, 2, 4, 17, 21, 23, 24, 26, 27, 29, 30, 32, 35, 38–42

CBF Phương pháp lọc nội dung - Content-based filtering. 10, 12, 14
CF Phương pháp lọc cộng tác - Collaborative filtering. 12, 14
CNTT Công nghệ thông tin. 1, 41
CP Code Practice. 27
LMS Hệ thống Quản lý Học tập - Learning Management System. 3, 6, 8
MF Phân rã Ma trận - Matrix Factorization. 13
RS Hệ thống Gợi ý - Recommendation System. x, 2, 10, 11, 13, 41
SVD Singular Value Decomposition. 13, 14, 26
TB Trung bình. 35, 36
TRS Hệ thống Gợi ý Testcases - Testcases Recommendation System. 30, 38, 40, 42
ZPD Vùng phát triển gần - Zone of Proximal. 4
ĐHBK Đại học Bách Khoa - ĐHQG TP.HCM. 29, 40, 41

xi


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

Chương 1
Giới thiệu
1.1

Động cơ nghiên cứu

Báo cáo về thị trường IT Việt Nam năm 2021 của TopDev thông báo rằng nhu cầu nhân lực
ngành Công nghệ thông tin (CNTT) tại Việt Nam không ngừng tăng cao trong 5 năm 2018 2022. Dựa trên tốc độ tăng trưởng số lượng lập trình viên tại Việt Nam, năm 2021 Việt Nam cần
450.000 nhân lực CNTT. Tuy nhiên, tổng số lập trình viên tính đến Q1/2021 là 430.000, dẫn
đến khoảng 20.000 vị trí lập trình viên bị thiếu hụt. Số lượng sinh viên (SV) CNTT tốt nghiệp
hằng năm chuyên ngành phần mềm là khoảng 55.000, nhưng chỉ có khoảng 16.500 đáp ứng

nhu cầu của doanh nghiệp 1 . Từ đó, Bộ Thơng tin và Truyền thơng đã thông qua Dự thảo Định
hướng phát triển ngành Thông tin và Truyền thông nhằm tập trung đào tạo nhân lực CNTT. Do
đó, nhu cầu đào tạo nhân lực CNTT cần được chú trọng quan tâm, đặc biệt là ở các trường đại
học. Tuy nhiên, với hiện trạng tại các trường đại học trong nước hiện nay, hầu hết số lượng người
học trong lĩnh vực CNTT có số lượng khá lớn. Trong đó, các mơn học lập trình cơ bản là môn
học nền tảng bắt buộc của sinh viên - dù theo học chuyên ngành nào trong CNTT. Do vậy, các
mơn học lập trình cơ bản gặp thách thức trong việc hướng dẫn học một cách phù hợp cho số
lượng lớn người học.
Người học ngành CNTT cần thực hành lập trình để rèn luyện kĩ năng như quan sát, giải
quyết vấn đề và tìm lỗi (debug) [1]. Việc thực hành lập trình thường được thực hiện thơng qua
giải quyết các câu hỏi lập trình. Câu hỏi lập trình thường có hai loại chính là thí nghiệm và Bài
tập lớn (BTL). Trong đó, bài tập thí nghiệm là những bài tập nhỏ để người học luyện tập sau khi
đã học nội dung lý thuyết. BTL là một bài tập phức tạp với nhiều yêu cầu và dùng để kiểm tra
tổng hợp các chủ đề lập trình khác nhau. Thơng qua BTL, người học luyện tập cách chia nhỏ
vấn đề thành các phần nhỏ hơn để xử lý. Đồng thời, người học học cách sử dụng phối hợp các
kĩ thuật trong các chủ đề lập trình khác nhau để giải quyết một vấn đề phức tạp. Cách đánh giá
thường dùng của các bài tập lập trình là chạy mã nguồn trên một tập đầu vào (input) và kiểm
1 Báo

cáo năm 2019 của Bộ GD & ĐT

LUẬN VĂN TỐT NGHIỆP

Trang 1/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

tra đầu ra (output) có trùng với đầu ra mong đợi hay khơng. Đầu ra mong đợi thường là kết quả

chạy mã nguồn đáp án của người dạy trên tập đầu vào. Một bộ đầu vào, đầu ra mong đợi được
gọi là một testcase. Điểm cho bài tập lập trình được tính bằng tỉ lệ testcases đúng. Số lượng
testcases của BTL thường nhiều hơn rất nhiều so với số lượng testcases của bài tập thí nghiệm.
Nguyên nhân do BTL thường hỏi nhiều vấn đề nên cần có nhiều testcases để kiểm tra các khả
năng xảy ra.
Hiện nay, để hỗ trợ cho việc học tập được hiệu quả, hệ thống quản lý học liệu trực tuyến
(LMS - Learning Management System) đã được sử dụng tại các trường Đại học. Đơn cử và
thông dụng hiện nay, chúng ta có thể kể đến là Moodle LMS - hệ thống quản lý học tập trực
tuyến hỗ trợ hiệu quả cho việc tạo, quản lý, và triển khai các khóa học trực tuyến. Moodle LMS
cho phép cung cấp các loại câu hỏi khác nhau giúp đánh giá người học, trong đó loại câu hỏi
lập trình cũng được hỗ trợ thơng qua tiện ích CodeRunner [2]. Với CodeRunner, người học có
thể thấy được kết quả làm bài ngay lập tức trên Moodle LMS. Từ đó, người học có hứng thú và
động lực để điều chỉnh câu trả lời ngay tại thời điểm làm bài. Moodle LMS và CodeRunner đã
giúp hỗ trợ được số lượng lớn người học trong các mơn học lập trình cơ bản.
Để thu hút người học tương tác nhiều hơn, các hệ thống LMS cần tìm cách đưa ra các vấn
đề phù hợp với khả năng của từng người học. Đây gọi là học tập Cá nhân hóa, nghĩa là việc học
tập mà trong đó tốc độ học và phương pháp hướng dẫn được tối ưu hóa cho từng người học; các
hoạt động học tập có ý nghĩa được thúc đẩy bởi sở thích của người học [3]. Tuy nhiên, do mỗi
người học có các đặc điểm khác nhau như hiệu suất học tập, tốc độ học tập, kiến thức từ trước,
một nhóm bài tập thực hành lập trình cụ thể khó đáp ứng để phù hợp được với mọi đặc điểm của
người học. Do vậy, đây là thách thức lớn của hệ thống số hóa hỗ trợ học tập trực tuyến LMS khi
mà có số lượng lớn người học có khả năng khác nhau cùng đăng ký học chung một khóa học.
Hệ thống Gợi ý - Recommendation System (RS) là một phương pháp nhằm đề xuất những
sản phẩm hoặc thơng tin có khả năng hữu ích và phù hợp với người dùng. RS hoạt động dựa
trên việc thu thập, phân tích dữ liệu người dùng về sở thích, hành vi tiêu dùng trong quá khứ.
RS được sử dụng phổ biến và mang lại hiệu quả khi ứng dụng trong thương mại điện tử [4].
Luận văn này hướng đến đề xuất kiến trúc hệ thống gợi ý bài tập thực hành lập trình phù
hợp với khả năng người học. Các kỹ thuật Hệ thống Gợi ý được tìm hiểu và áp dụng vào kiến
trúc gợi ý bài tập thực hành. Kiến trúc này được tập trung áp dụng vào gợi ý testcase trong BTL.
Kiến trúc hệ thống sẽ được triển khai và thu thập dữ liệu làm bài thực tế của người học. Dữ liệu

thực tế này được sử dụng để đánh giá lợi ích hệ thống đối với người học lập trình. Từ đó, hệ
thống hướng đến tăng cường sự hứng thú và khuyên khích khả năng tự học khi được gợi ý các
bài tập phù hợp.

LUẬN VĂN TỐT NGHIỆP

Trang 2/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

1.2

Mục tiêu nghiên cứu

Trong khuôn khổ của Luận văn Thạc sĩ, báo cáo trình bày các nhiệm vụ đã thực hiện được,
bao gồm các mục như sau:
• Tìm hiểu các kiến thức và các nghiên cứu liên quan đến hệ thống gợi ý (RS - Recommendation system);
• Trên cơ sở học liệu về lập trình và các dữ liệu đã thu thập từ nhiều năm, học viên đánh
giá, phân tích nhằm đề xuất giải pháp gợi ý học lập trình phù hợp với khả năng của người
học;
• Xây dựng kiến trúc và hiện thực giải pháp đề xuất, sau đó tìm cách ứng dụng triển khai
thử nghiệm ngồi thực tế;
• Đánh giá kết quả của hệ thống gợi ý đề xuất dựa trên bộ dữ liệu thu thập được trong quá
trình triển khai thử nghiệm.

1.3

Đối tượng và phạm vi nghiên cứu


Đối tượng nghiên cứu chính trong đề tài bao gồm các đối tượng liên quan đến:
• Mơn học Kỹ thuật lập trình bao gồm các câu hỏi thực hành lập trình, các bài tập lớn liên
quan;
• Nhóm đối tượng người học tham gia q trình học lập trình có sử dụng hệ thống quản lý
học liệu (LMS - Learning Management System).
Về giới hạn của Luận văn Thạc sĩ, phạm vi nghiên cứu được tập trung cụ thể như sau:
• Chỉ quan tâm đến mơn Kỹ thuật lập trình dành cho sinh viên năm nhất tại khoa Khoa học
và Kỹ thuật Máy tính, trường Đại học Bách Khoa, Đại học Quốc Gia Tp.HCM.
• Việc thực hành lập trình có thể được hỗ trợ gợi ý thơng qua các bài tập lớn.
• Thực hiện nghiên cứu xây dựng kiến trúc giải pháp trên hệ thống Moodle LMS có tích
hợp CodeRunner.

1.4

Phương pháp nghiên cứu

Một số phương pháp được đề xuất sử dụng nhằm thực hiện công việc nghiên cứu trong Luận
văn này bao gồm:
LUẬN VĂN TỐT NGHIỆP

Trang 3/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

• Phương pháp nghiên cứu lý thuyết: dựa trên tổng hợp các nghiên cứu có liên quan đến hệ
thống gợi ý từ nguồn các tài liệu như sách, báo, tạp chí đã cơng bố trong cộng đồng khoa
học và trên Internet.

• Phương pháp quan sát khoa học: với mục tiêu hướng đến hỗ trợ người học ngày càng tốt
hơn, học viên thu thập thông tin về các cách triển khai giảng dạy và hỗ trợ thực hành lập
trình từ trước nay. Việc đánh giá, so sánh các hệ thống là phương pháp cơ sở được sử dụng
trong Luận văn làm nền tảng cho việc đề xuất giải pháp gợi ý testcase cho người học trong
q trình giải quyết bài tập lớn được giao.
• Phương pháp mơ hình hóa: đề xuất cách số hóa thơng tin liên quan đến q trình học và
giải bài tập của người học nhằm hoàn thành nhiệm vụ trong các bài tập lớn.
• Phương pháp phân tích logic: phân tích cấu trúc tương tác trên hệ thống Moodle LMS
hiện có cũng như cách thức tích hợp Code Runner vào, nhằm đề xuất kiến trúc tương tác
với người học phù hợp với thói quen học tập từ trước.
• Phương pháp phân tích và tổng kết kinh nghiệm: giải pháp đề xuất chính yếu trong Luận
văn được thử nghiệm trong thực tế và làm cơ sở để đánh giá mơ hình đề xuất được hiện
thực thông qua sử dụng các phương pháp đánh giá về tính đúng đắn, về mức độ hiệu quả
nhằm làm rõ mức độ khả thi khi áp dụng thực tiễn.

1.5

Ý nghĩa của đề tài

Trong khuôn khổ của đề tài Luận văn Thạc sĩ, học viên đề xuất thử nghiệm các kỹ thuật của
một hệ thống gợi ý vào lĩnh vực giáo dục, cụ thể là gợi ý để người học có thể hồn thành nhiệm
vụ cần thực hiện trong các câu hỏi thực hành lập trình.
Xét về mặt khoa học, đóng góp của Luận văn cho thấy một hướng mới áp dụng các phương
pháp Hệ thống Gợi ý đã mang lại hiệu quả trong lĩnh vực thương mại điện tử, vào lĩnh vực Giáo
dục. Cụ thể, Hệ thống gợi ý được áp dụng để gợi ý testcase cho người học trong q trình làm
BTL của mơn học lập trình. Mỗi người học sẽ có một mức độ và khả năng giải quyết vấn đề
khác nhau. Do vậy, đối với mỗi người học, số lượng mẫu testcase cần gợi ý để hiểu bài và thiết
kế bài giải là khác nhau và còn phụ thuộc vào cảm quan tức thời của người học. Luận văn đề
xuất áp dụng phương pháp của Hệ thống Gợi ý và kết hợp phương pháp Vùng phát triển gần Zone of Proximal (ZPD) để xác định mức độ khó phù hợp với người học. Từ đó, phương pháp
đề xuất đưa ra gợi ý phù hợp với năng lực người học.

Xét về mặt công nghệ, kết quả nghiên cứu cho thấy một môi trường tương tác học liệu mới
và có khả năng mở rộng triển khai cho các trường có đào tạo học lập trình, đặc biệt là có sử
dụng hệ thống Moodle LMS. Đây là ví dụ một minh họa plug-in trên Moodle để hỗ trợ người
học phát triển phù hợp với năng lực của họ.
LUẬN VĂN TỐT NGHIỆP

Trang 4/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

Xét về mặt thực tiễn, kết quả của Luận văn cho thấy được tiềm năng của các hệ thống gợi ý
- không chỉ áp dụng cho các lĩnh vực thương mai mà còn ứng dụng trong lĩnh vực giáo dục. Kết
quả nghiên cứu là một hệ thống giúp người học làm các bài tập lập trình được gợi ý phù hợp
với khả năng người học. Người học có thể làm các bài tập này theo tốc độ và hoàn cảnh của cá
nhân. Người học nhanh có thể gặp các câu hỏi khó để cảm thấy được sự thách thức; ngược lại,
người học còn chậm sẽ tiếp xúc với nhiều câu hỏi dễ hơn. Từ đó, khi người học cảm thấy các bài
tập là phù hợp, tác giả mong rằng người học sẽ có nhiều hứng thú và tự học nhiều hơn. Người
học rèn luyện được khả năng tự học sẽ tăng khả năng theo kịp các yêu cầu của chương trình đào
tạo, hơn nữa là các yêu cầu công việc ở doanh nghiệp. Từ đó, hệ thống hướng đến góp phần đào
tạo nhân lực CNTT chất lượng cho nhu cầu thực tiễn từ doanh nghiệp.

1.6

Cấu trúc của Luận văn

Nhằm làm rõ công sức thực hiện trong Luận văn này, báo cáo sẽ bao gồm các chương có nội
dung chính như sau:
• Chương 1 - Giới thiệu: chương này trình bày về tổng quan vấn đề cần phải nghiên cứu,

trong đó bao gồm động cơ thực hiện đề tài, nhiệm vụ/mục tiêu nghiên cứu, đối tượng và
phạm vi nghiên cứu, và các tác động từ kết quả thu được thơng qua đề tài.
• Chương 2 - Kiến thức nền tảng: chương này sẽ tổng hợp và phân tích các kiến thức nền
tảng, các cơng trình nhiên cứu và các kết quả liên quan; được chia thành bốn nhóm: phân
tích hồ sơ người học trong Hệ thống Quản lý Học tập, Hệ thống Gợi ý, và các phương
pháp đánh giá Hệ thống gợi ý.
• Chương 3 - Giải pháp đề xuất: chương này đề xuất một kiến trúc giải pháp chung nhằm
hướng đến gợi ý cho người học thực hành lập trình trong quả trình giải các bài tập thực
hành lập trình từ câu hỏi đơn giản đến các bài tập lớn. Từ đó, học viên đề xuất triển khai
cụ thể hơn vào trường hợp phức tạp nhất - đó là hỗ trợ gợi ý người học để hoàn thành
nhiệm vụ thực hiện trong các bài tập lớn.
• Chương 4 - Đánh giá kết quả: chương này trình bày các kết quả từ việc phân tích định
tính nhằm nêu bật hệ thơng gợi ý đề xuất cũng như môi trường mới dùng cho việc hỗ
trợ thực hành lập trình thơng qua bài tập lớn. Chương này cũng trình bày về kết quả thực
nghiệm thu được và đánh giá kết quả của giải pháp khi áp dụng thực tiễn.
• Chương 5 - Kết luận: đánh giá lại toàn bộ các kết quả mà đề tài đã thực hiện và đạt được
trong quá trình thực hiện Luận văn Thạc sĩ này. Chương này cũng chỉ ra những khó khăn
trong q trình thực hiện cũng như các giới hạn của kết quả, và từ đó đề xuất những hướng
phát triển tiếp theo.
LUẬN VĂN TỐT NGHIỆP

Trang 5/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

Chương 2
Kiến thức nền tảng
Trong chương này, một số kiến thức nền tảng được trình bày để hiểu rõ hơn về các khái niệm

và phương pháp liên quan đến hệ thống gợi ý trong lĩnh vực giáo dục. Đầu tiên, các kỹ thuật
phân tích hồ sơ người học trên các Hệ thống Quản lý Học tập - Learning Management System
được giới thiệu. Tiếp theo, các hệ thống gợi ý trong lĩnh vực giáo dục được khảo sát gồm: Hệ
thống Gợi ý và Vùng phát triển gần. Sau cùng, chương này trình bày một số phương pháp đánh
giá cho Hệ thống Gợi ý trong lĩnh vực giáo dục.

2.1

Phân tích hồ sơ người học trong Hệ thống Quản lý Học
tập (LMS)

2.1.1

Hệ thống Quản lý Học tập

Hệ thống Quản lý Học tập - Learning Management System (LMS) là một cơng cụ sử dụng
trong giáo dục, có thể được thiết kế như một ứng dụng hoặc một trang web, giúp hỗ trợ cho
việc học tập trực tuyến, tự động hóa các cơng việc quản lý, triển khai các khóa học, tài liệu học
tập và các hoạt động liên quan [5]. Tác giả trong nghiên cứu [6] nhấn mạnh rằng một LMS nên
năng động, linh hoạt, có khả năng tùy chỉnh và thích ứng.
Bên cạnh đó, Moodle là một LMS mã nguồn mở với số lượng người dùng lớn. Theo nghiên
cứu [5] được thực hiện ở năm 2020, Moodle có gần 100.000 trang web đã đăng ký ở 229 quốc
gia. Moodle cung cấp các loại câu hỏi đánh giá khác nhau cho người học như câu hỏi trắc
nghiệm, trả lời ngắn, câu hỏi ghép cặp, v.v.
Mặt khác, câu hỏi lập trình là loại câu hỏi cần thiết cho người học trong các khóa học lập
trình. Các câu hỏi lập trình thường yêu cầu người học nộp lên hệ thống mã nguồn được viết trên
một ngơn ngữ lập trình nhất định. Hệ thống cần có khả năng biên dịch mã nguồn thành chương
trình và chạy chương trình này. Các câu hỏi lập trình đã được hỗ trợ trên Moodle thơng qua
tiện ích CodeRunner [2]. Hình 2.1 minh họa kết quả làm bài của người học trên một câu hỏi
LUẬN VĂN TỐT NGHIỆP


Trang 6/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

(a) Mơ tả đề

(b) Vùng điền mã nguồn của người học

(c) Kết quả chấm điểm
Hình 2.1: Ví dụ về câu hỏi CodeRunner

CodeRunner liên quan đến ngơn ngữ lập trình C++. Hình 2.1a minh họa mô tả đề của một câu
hỏi CodeRunner. Trong mô tả đề này cịn có một số testcases mẫu giúp người học hiểu rõ mơ
tả hơn. Hình 2.1b minh họa vùng điền mã nguồn của người học. Người học có thể viết trực tiếp
mã nguồn vào vùng này và CodeRunner sẽ điền mã nguồn này vào một vùng xác định trong
một chương trình. Do đó, tuy mã nguồn này khơng có hàm main (một hàm bắt buộc phải có để
chạy chương trình C++) nhưng chương trình vẫn có thể chạy được. Hình 2.1c sẽ được hiển thị
sau khi người dùng nhấn nút nộp mã nguồn. CodeRunner sẽ chạy mã nguồn của người học trên
một số testcases có sẵn. Kết quả thường gồm đầu vào, đầu ra mong đợi và đầu ra từ mã nguồn
của người chạy. Nếu hai đầu ra này giống nhau, người học sẽ thấy màu xanh được tơ màu trên
testcases đó. Điểm của người học bằng số testcases đúng trên tổng số testcases.
Việc sử dụng CodeRunner mang lại ưu điểm cho cả người dạy và người học [2]. Người dạy
cảm thấy hài lịng vì có thể đánh giá trực tiếp kỹ năng lập trình thơng qua kết quả chấm bài nộp
của người học được trả về ngay lập tức. Từ đó người dạy có thể xem xét liệu người học có hiểu
được nội dung mà người dạy vừa giảng hay khơng? Người dạy cũng có thể xem mã nguồn của
người dạy tại trang quản lý kết quả và xem thử người học gặp lỗi gì ở mã nguồn. Người học
cũng có phản ứng tích cực đến kết quả phản hồi mà họ nhận được. Họ có thể thấy kết quả chấm

bài, tìm lỗi và sửa lỗi ngay lập tức sau khi nộp bài.

2.1.2

Phân tích hồ sơ người học

Phân tích hồ sơ người học là một kỹ thuật phổ biến để tạo điều kiện cho việc cá nhân hóa
trong các hệ thống hỗ trợ học tập [7]. Phân tích hồ sơ người học bao gồm việc thu thập dữ liệu
LUẬN VĂN TỐT NGHIỆP

Trang 7/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

về đặc điểm, sở thích, hành vi của người học. Dữ liệu về hồ sơ người học thu thập được có thể
được sử dụng để tùy chỉnh trải nghiệm học tập theo nhu cầu cá nhân, cung cấp gợi ý cá nhân
hóa, điều chỉnh nội dung và chiến lược giảng dạy, và hỗ trợ quy trình ra quyết định trong LMS.
Nó giúp người dạy có cái nhìn sâu hơn về tiến trình học tập, điểm mạnh, điểm yếu và sở thích
của người học, từ đó tăng cường hiệu quả và hiệu suất của quá trình học tập. Các nghiên cứu
trước đây trong LMS chia Phân tích hồ sơ người học thành 2 phương pháp chính [7, 8].
a) Phân tích tường minh (explicit profiling): Phân tích tường minh liên quan đến việc thu
thập thơng tin trực tiếp từ người học thông qua các khảo sát, bảng câu hỏi hoặc bảng tự
đánh giá [9]. Loại phân tích này cho phép người học cung cấp thơng tin về sở thích, mục
tiêu, kiến thức đã có (prior-knowledge) và sở thích học tập của họ. Điểm thuận lợi của
phương pháp này là người học có khả năng xác định và kiểm sốt các thơng tin cung cấp
cho hệ thống [10]. Tuy nhiên, người học cũng tốn nhiều nỗ lực để nhập các dữ liệu cho
phương pháp phân tích tường minh [10].
b) Phân tích ngầm định (implicit profiling): Phân tích ngầm định liên quan đến việc thu

thập dữ liệu về người học một cách không công khai và không cần người học phải chủ
động cung cấp thông tin. Việc này có thể được thực hiện thơng qua việc theo dõi tương
tác của người học trong LMS. Một số ví dụ về dữ liệu phân tích ngầm định như dữ liệu
nháy chuột (click-through) [9, 11], lịch sử hoạt động học tập trên hệ thống [9, 12], thời
gian dành cho các hoạt động khác nhau như xem video, làm bài tập, hoặc kết quả trong
các bài kiểm tra,... Phân tích ngầm định hướng đến hiểu hành vi, mơ hình và nhu cầu của
người học dựa trên hành động và tương tác của họ trong môi trường học tập. Người học
cảm thấy rằng phương pháp phân tích ngầm định có phần tiện lợi hơn phân tích tường
minh với sự chấp nhận có ít sự vi phạm quyền riêng tư của người dùng [13].

2.1.3

Hệ thống Học tập Thích ứng (ALS)

Hệ thống Học tập Thích ứng - Adaptive Learning System (ALS) là hệ thống nhằm cung cấp
một trải nghiệm học tập hiệu quả và tùy chỉnh cho phù hợp với người học [14]. ALS sử dụng dữ
liệu về quá trình học tập và các thuật tốn, mơ hình để phân tích dữ liệu học tập, nhận diên mơ
hình học tập của người học. Từ đó, hệ thống có khả năng điều chỉnh mức độ khó, tốc độ, phong
cách giảng dạy, và cung cấp phản hồi phù hợp để tối ưu hóa q trình học tập cho từng người
học. Trong khuôn khổ luận văn này, một số ALS được khảo sát với hai yếu tố quan tâm: cách
thức mà ALS xác định năng lực của người học, và cách thức gợi ý học liệu của ALS. Bảng 2.1
ghi lại kết quả khảo sát trên 5 hệ thống ALS.
a) Nhận xét về cách thức xác định năng lực người học
Một cách xác định năng lực người học là áp dụng phân tích tường mình như u cầu người
học làm các bài kiểm tra [15, 17, 16]. Tuy không được đề cập rõ trong các nghiên cứu,
LUẬN VĂN TỐT NGHIỆP

Trang 8/49



Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính
Bảng 2.1: Khảo sát các hệ thống ALS trước đây
Bài báo

Cách thức xác định năng lực người học

Cách thức gợi ý học liệu

[15]

Người học cần làm một bài kiểm ở cuối mỗi
chương của môn học. Nếu người học vượt qua bài
kiểm tra này thì người học sẽ được học chương tiếp
theo.

Hệ thống sử dụng thuật tốn k-NN để tìm k người
đã làm bài kiểm trả và có kết quả giống với người
dùng mục tiêu. Sau đó, hệ thống xem xét tất cả tài
liệu học tập mà k người học này sử dụng. Những tài
liệu học tập được có thời gian sử dụng nhiều hơn
thời gian sử dụng trung bình của tất cả học liệu sẽ
được đưa cho người dùng mục tiêu.

[16]

Hệ thống dùng tỉ lệ số câu hỏi làm sai của người
học để phân loại người học thành 3 mức độ: thấp,
trung bình, cao. Bên cạnh đó, một bảng câu hỏi
về phong cách học tập được sử dụng để nhận dạng

phong cách học tập cá nhân của người học.

[17]

Một bảng câu hỏi trắc nghiệm về kiến thức của
người học được đưa ra để xác định mức độ của
người học.

Không đề cập.

[18]

Dựa trên tương tác với hệ thống, một bản ghi hoạt
động được phân tích để xác định phong cách học
của mỗi người.

Hệ thống sử dụng mỗi chuỗi các Chuẩn đầu ra môn
học để gợi ý đến người học. Hệ thống tính tốn
điểm xếp hạng cho mỗi Chuẩn đầu ra và sắp xếp
các Chuẩn đầu ra này cho phù hợp với phong cách
học của mỗi cá nhân.

[19]

Người học cần làm đủ nhiều câu hỏi trong mỗi chủ
đề để thể hiện là đã đạt được chủ đề đó. Tuy nhiên,
bài báo chưa nói rõ số lượng câu hỏi như thế nào là
đủ với một người học.

Hệ thống đề xuất sử dụng Mũi tên mục tiêu (target

arrow) để hướng người học đến những chủ đề cần
học. Mũi tên này sẽ đánh dấu chủ đề nào đã đạt,
chủ đề nào chưa đạt, hoặc chủ đề nào là cần phải
học trước khi học một chủ đề xác định.

Một bảng quan hệ được sử dụng để tìm ra vấn đề
của từng phong cách học và đưa ra hướng dẫn phù
hợp. Kết hợp với phong cách của người học, hệ
thống điều chỉnh loại của các học liệu để phù hợp
với mỗi người học.

phương pháp làm bài kiểm tra cần người dạy tham gia để tạo ra các bài kiểm tra này. Nói
cách khác, cách xác định năng lực người học phụ thuộc một phần vào các yêu cầu, kỳ
vọng từ người dạy. Mặt khác, nếu khơng có sự tham gia của người dạy, hệ thống có thể
áp dụng phân tích ngầm định để đo lường các đặc điểm dựa trên bản ghi tương tác với hệ
thống [18, 19].
Hạn chế của phương pháp làm kiểm tra là có thể gây khó chịu cho người học nếu cần phải
kiểm tra thường xuyên. Tuy nhiên, phương pháp này có sự tham gia của người dạy. Người
dạy phụ trách mơn học thường có nhiều kinh nghiệm trong lập trình và giảng dạy, vì vậy
họ có những kỳ vọng hợp lý đối với các kiến thức cần đạt được. Do vậy, người dạy nên
được tham gia vào quá trình kiểm tra và cung cấp các kỳ vọng để yêu cầu người học đạt
được kiến thức cụ thể. Bên cạnh đó, hệ thống gợi ý đề xuất hướng đến là một mơi trường
mở và ít áp lực cho người học. Các bài kiểm tra nên được hạn chế để hỗ trợ người học
luyện tập tự do trên hệ thống.
b) Nhận xét về cách thức gợi ý học liệu
Về cách thức gợi ý, các hệ thống trong [15, 17] đề xuất tài liệu dựa trên các người học có
LUẬN VĂN TỐT NGHIỆP

Trang 9/49



Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

năng lực tương tự với năng lực người học mục tiêu. Trong khi đó, các hệ thống ở [18, 19]
đề xuất người học cần làm lại các câu hỏi về chủ đề mà học mắc nhiều lỗi. Việc làm lại
các câu hỏi là một hình thức giúp người học duy trình khả năng học tập. Duy trì học tập
hỗ trợ người học chuyển kiến thức mới vào bộ nhớ dài hạn để người học hiểu kiến thức
đó và nhận dạng được bài tốn sử dụng kiến thức này trong tương lai. Lập trình là mơn
học mà người học cần rèn luyện để có được kỹ năng quan sát, giải quyết vấn đề và gỡ lỗi.
Các câu hỏi được trả lời đúng một lần không thể đảm bảo rằng người học đã nắm vững
câu hỏi đó. Tác giả trong nghiên cứu [1] cho rằng lập trình cần được thực hiện học bằng
cách làm (learn-by-doing) hơn là học thuộc lịng các câu hỏi. Do đó, hệ thống đề xuất sẽ
hướng đến duy trì học tập bằng cách đưa ra lặp lại các câu hỏi mà người học đã làm sao
cho hợp lý.

2.2
2.2.1

Hệ thống Gợi ý trong lĩnh vực giáo dục (RS)
Hệ thống Gợi ý

RS trở nên phổ biến và được sử dụng rộng rãi trong thương mại điện tử và các công ty số
[4]. Một số ví dụ nổi tiếng về những hệ thống như vậy bao gồm hệ thống gợi ý phim của Netflix
[20], hệ thống gợi ý sản phẩm của Amazon [21], tin tức cá nhân hóa của Google [22], tìm kiếm
quảng cáo của Google [22], gợi ý video của YouTube [22], và Last.fm cho âm nhạc [22]. Hệ
thống gợi ý chủ yếu được sử dụng cho hai nhiệm vụ chính: đưa ra dự đoán và đưa ra gợi ý
[23, 22]. Nhiệm vụ đưa ra dự đoán liên quan đến việc dự đoán người dùng sẽ đánh giá một sản
phẩm nào đó bằng bao nhiêu điểm. Điểm số đánh giá này thể hiện mức độ ưa thích của người
dùng cho sản phẩm. Nhiệm vụ đưa ra gợi ý liên quan đến việc gợi ý một tập hợp các sản phẩm

cho người dùng. Hệ thống gợi ý thu thập thông tin về hành vi trong quá khứ của người dùng đối
với một tập hợp các sản phẩm và sử dụng chúng để gợi ý. Hình 2.2 minh họa các phương pháp
trong RS. Các phương pháp này sẽ được trình bày chi tiết ở các phần tiếp theo.
a) Phương pháp lọc nội dung - Content-based filtering (CBF):
CBF cung cấp các gợi ý dựa trên các đặc điểm của người dùng và các sản phẩm, thường
được tạo dựa trên các sản phẩm mà người dùng tiêu thụ trong quá khứ. Các sản phẩm
được gợi ý là những sản phẩm có các đặc điểm tương tự với các sản phẩm được đánh giá
cao của người dùng mục tiêu [24].
Hình 2.3 minh hoạ một ví dụ cho CBF. Trong hình, người dùng đã sử dụng và đánh giá
cao các hình: trịn đỏ và tam giác đỏ. Từ các hình này CBF xác định các đặc điểm cần
quan tâm là hình trịn, hình tam giác và có màu đỏ đỏ. Sau đó, hệ thống sẽ gợi ý các sản
phẩm cũng có các đặc điểm này và gợi ý cho người dùng.

LUẬN VĂN TỐT NGHIỆP

Trang 10/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

Hình 2.2: Các phương pháp trong RS

Hình 2.3: Ví dụ về lọc cộng tác (slide từ khoá học Stanford CS246: Mining Massive Datasets)

LUẬN VĂN TỐT NGHIỆP

Trang 11/49



Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

Phương pháp CBF có những ưu điểm đáng chú ý [25]. Đầu tiên, phương pháp này không
yêu cầu dữ liệu từ những người dùng khác. Điều này có nghĩa là có thể gợi ý các sản phẩm
dựa trên sở thích riêng của từng người dùng. Thứ hai, CBF cho phép tạo ra gợi ý cá nhân
cho mỗi người dùng. Dựa trên đặc điểm và sở thích của người dùng, hệ thống có thể tìm
kiếm và đề xuất những sản phẩm phù hợp với từng người dùng cụ thể. Cuối cùng, phương
pháp này cung cấp khả năng giải thích về sản phẩm được gợi ý. Bằng cách liệt kê các đặc
điểm của sản phẩm, người dùng có thể hiểu rõ hơn về lý do tại sao sản phẩm được gợi ý
và có thể đáp ứng được sở thích của mình.
Bên cạnh đó, CBF cũng có những hạn chế cần chú ý. Đầu tiên, việc xác định các đặc điểm
quan trọng cần quan tâm trong phương pháp này có thể khó khăn. Cần phải xác định rõ
những đặc điểm này để có thể đánh giá tương quan giữa các sản phẩm. Thứ hai, xây dựng
hồ sơ cho người dùng mới là một thách thức vì CBF cần phải có đủ thơng tin về sở thích
và đặc điểm của người dùng. Tuy nhiên, việc thu thập các thơng tin này địi hỏi thời gian
và cơng sức. Một hạn chế khác của phương pháp này là sự chuyên môn quá cao cho từng
người học. CBF chỉ đề xuất các mục dựa trên hồ sơ nội dung của người dùng và không
mở rộng ra để đề xuất những mục nằm ngồi phạm vi đó. Điều này có thể hạn chế khả
năng khám phá và mở rộng sở thích của người dùng. Thêm vào đó, CBF khơng xem xét
khả năng người dùng có thể có nhiều sở thích và quan tâm đến nhiều lĩnh vực khác nhau.
Điều này có thể giới hạn sự đa dạng và sự phong phú của các sản phẩm được đề xuất.
Cuối cùng, phương pháp này không khai thác được thông tin từ đánh giá và phản hồi của
những người dùng khác. Điều này có thể bỏ qua thông tin quan trọng về đánh giá và phản
hồi từ cộng đồng người dùng.
Tóm lại, phương pháp content-based filtering mang lại sự linh hoạt và cá nhân hóa trong
việc gợi ý sản phẩm cho người dùng, đồng thời cung cấp khả năng giải thích và tùy chỉnh
cho từng cá nhân.
b) Phương pháp lọc cộng tác - Collaborative filtering (CF):
CF hoạt động dựa trên ý tưởng các người dùng có hành vi tương tự sẽ có sở thích hoặc

thói quen mua sắm tương tự [4]. Phương pháp này không sử dụng đặc điểm của sản phẩm
để đưa ra gợi ý. Thay vào đó, CF tìm các người dùng tương tự với người dùng mục tiêu và
gợi ý các sản phẩm mà nhóm người dùng tương tự thích. Độ tương tự này khơng khơng
được tính dựa trên hồ sơ người dùng hay đặc điểm sản phẩm, mà dựa trên đánh giá mức
độ ưa thích của người dùng cho sản phẩm. Dữ liệu đánh giá thường được biểu diễn thành
một ma trận có người dùng biểu diễn theo dịng và sản phẩm biểu diễn theo cột. Một phần
tử trong ma trận biểu diễn điểm đánh giá của người dùng ở hàng cho sản phẩm ở cột tương
ứng. Do vậy, ma trận đánh giá này còn thường được gọi là ma trận Người dùng-Sản phẩm
(user-item). Dựa trên cách xử lý dữ liệu trong ma trận đánh giá, CF được chia thành hai

LUẬN VĂN TỐT NGHIỆP

Trang 12/49


Đại học Quốc gia TP.HCM - Trường Đại Học Bách Khoa
Khoa Khoa học và Kỹ thuật Máy tính

phương pháp nhỏ hơn là phương pháp dựa trên bộ nhớ (memory-based) và phương pháp
dựa trên mơ hình (model-based) [26][27].
Phương pháp dựa trên bộ nhớ trong hệ thống gợi ý sử dụng các độ đo tương tự giữa các
người dùng hoặc các sản phẩm để xác định những hàng xóm liên quan [4]. Những hàng
xóm này sau đó được sử dụng để gợi ý hoặc dự đoán các sản phẩm. Phương pháp này cung
cấp cách thức triển khai và diễn giải kết quả một cách dễ dàng. Tuy nhiên, phương pháp
này yêu cầu tồn bộ ma trận đánh giá, làm cho nó ít phù hợp với dữ liệu có số chiều cao và
thưa thớt. Phương pháp dựa trên bộ nhớ còn được chia thành hai phương pháp nhỏ hơn
là phương pháp dựa trên người dùng (User-based) và phương pháp dựa trên sản phẩm
(Item-based).
Phương pháp dựa trên người dùng thường gồm các bước sau [28]:
• Xem xét người dùng mục tiêu x và một sản phẩm i chưa được đánh giá.

• Tìm một tập gồm các người dùng khác. Xem xét đánh giá của các người dùng này
so với đánh giá của người dùng x. Sau đó chọn ra k người dùng có đánh giá tương tự
với người dùng mục tiêu nhất.
• Dựa vào k người dùng này để tính điểm đánh giá cho sản phẩm i.
Phương pháp dựa trên sản phẩm thường gồm các bước sau [29]:
• Với sản phầm i đang quan tâm, tìm k sản phẩm khác tương tự với sản phẩm i. Độ
tương tự này được tính dựa trên đánh giá của các người dùng khác.
• Dự đốn điểm đánh giá cho sản phẩm i dựa trên k sản phẩm khác.
Bên cạnh đó, phương pháp dựa trên mơ hình học và điều chỉnh một mơ hình tham số
cho ma trận đánh giá Người dùng-Sản phẩm. Mơ hình này sau đó được sử dụng để thực
hiện các nhiệm vụ đưa ra gợi ý. Phân rã Ma trận - Matrix Factorization (MF) là một kỹ
thuật trong phương pháp dựa trên mơ hình đã trở nên phổ biến, đặc biệt sau Cuộc thi
Netflix Prize [27]. Các mơ hình MF nổi tiếng với độ chính xác tương đối cao, khả năng
mở rộng và giảm số chiều [4]. Phương pháp MF sử dụng trong RS bao gồm Principal
Component Analysis (PCA), Probabilistic Matrix Factorization (PMF) and Non-negative
Matrix Factorization (NMF). Trong khuôn khổ luận văn này, mô hình khảo sát là mơ hình
Singular Value Decomposition (SVD) được phát hiện là có hiệu suất tốt hơn phương pháp
dựa trên bộ nhớ trên dữ liệu về phim và thương mại điện tử [4].
Phương pháp SVD thực hiện thu giảm số chiều của ma trận đánh giá người dùng-sản
phẩm và tạo ra ma trận xấp xỉ có hạng thấp hơn. Ma trận này đại diện cho các đặc điểm
tiềm ẩn (latent features) của người dùng và sản phẩm đang có trong ma trận đánh giá. Ví
dụ, đối với sản phẩm thì các đặc điểm tiềm ẩn có thể là giá hoặc thương hiệu; đối với
LUẬN VĂN TỐT NGHIỆP

Trang 13/49


×