DANH MUC HỈNH ẢNHHình 1 Mô tả mối quan hệ về khái niệm mảng một chiễu...Hình 2 Cau trúc truy van SQL đơn giản Hình 3 Quy trình xây dung ontology về kỹ thuật lập trình Hinh 4 Mô hình lưu
Trang 1ĐẠI HỌC QUOC GIA TP.HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHO NGANH CONG NGHE THONG TIN
LUAN VAN THAC SY
NGANH CONG NGHE THONG TIN
Mã số: 8480201
TP HO CHÍ MINH NAM, 2021
Trang 2ĐẠI HỌC QUOC GIA TP.HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHO NGANH CONG NGHE THONG TIN
LUAN VAN THAC SY
NGANH CONG NGHE THONG TIN
Mã số: 8480201
NGƯỜI HƯỚNG DAN:
PGS.TS Đỗ Văn Nhơn
TP HÒ CHÍ MINH NĂM, 2021
Trang 3LỜI CẢM ƠNLời đầu tiên xin gửi lời cảm ơn chân thành đến PGS TS Đỗ Văn Nhơn đã hỗtrợ tận tình và hướng dẫn, giúp đỡ trong thời gian thực hiện luận văn.
Xin gửi lời cảm ơn đến ba mẹ, động viên tôi trên bước đường học tập cũng như
trong cuộc sống Xin gửi lời chân thành biết ơn thật nhiều dưới sự tận tình giảng day
và sự giúp đỡ của tat cả thầy cô tại trường Đại học Công Nghệ Thông Tin Tat cả cáckiến thức thay cô đã truyền đạt là hành trang vô giá dé tôi học tập, làm việc và nghiên
cứu, cũng như trong quá trình hoàn thiện nhân cách của mình.
Tp Hồ Chí Minh, ngày 30 tháng 06 năm 2021
Học viên
Võ Hoàng Thái
Trang 4LỜI NÓI ĐẦU
Đối với bắt kỳ sinh viên học công nghệ thông tin thì tên hai môn học: nhập mônlập trình và cầu trúc dit liệu không còn xa lạ gì nữa? nhưng kiến thức từ hai môn họcnày làm nên tảng cho các môn học khác Muốn tìm kiếm kiến thức nào về hai môn họcnày thì chưa có? Về tổ chức giảng dạy cũng chưa có thống nhất, nhưng đều xoayquanh những khái niệm cơ bản về máy tính, lệnh, cấu trúc kiều khiển, thuật toán, sắp
xếp Nếu một sinh viên muốn tìm kiếm bất kỳ một khái niệm hay thông tin về kiến
thức thuộc hai môn trên thì chưa có, phải xem lại tài liệu hay sách về phần kiến thước
đó Chưa hỗ trợ kịp thời và nhanh nhất có thê cho sinh viên Xuất phát từ những yêucầu nêu trên, cần xây dựng một hệ thống tìm kiếm thông minh trên cơ sở tri thức vềnhập môn lập trình, cấu trúc đữ liệu và giải thuật Gọi tắt là kỹ thuật lập trình cho sinh
viên công nghệ thông tin.
Trang 5LOI NÓI ĐÀU
CHUONG I: GIỚI THIỆU DE TÀI
2.1.2 Tri Thức về cấu trúc dự liệu và gi:
2.2 Phân tích yêu cau
CHUONG 3: THIET KE CƠ SỞ TRI THỨC VÀ XỬ LÝ CÂU TRUY VÁN 213.1 Thuyết kế cơ sơ tri thức về kỹ thuât lập trình
3.1.1 Mô hình cơ sở kỹ thuật lập trình(semantic programming techniques base — SPTB)
3.1.1.1 Mô hình cơ sở dit liệu vê kỹ thuât lập trình (DB)
3.1.1.2 Mô hình cơ sở tri thức của kỹ thuật lập trinh(PT_ONTO)
3.2 Thuyết kế Module suy luận câu truy vai
3.2.1 Xử lý câu truy vấn
3.2.2 Cú pháp từng loại câu truy vãi
CHƯƠNG 4: CÀI ĐẶT - THỬ NGHIỆM
4.1 Công nghệ áp dun;
4.2 Giao diện ứng dụng
4.2.1 Giao diện truy vân kiên thức
4.2.2 Giao
4.2.3 Giao diện truy vấn kiến thức về so sánh
truy vấn kiến thức về KN/DN và các quan hệ đi kèm
4.3 Dữ liệu truy vấn
4.4.1 Kết quả tìm theo khái niệm/ định nghĩ:
4.4.2 Kết quả tìm truy thức theo khái niệm và các tác vu
4.4.3 Kết quả tìm truy thức so sánh
4.4.4 Kết quả tìm kiếm truy thức liệt kê
Trang 6CHƯƠNG 5: KET LUẬN
5.1 Kết quả đạt được
5.2 Hạn chế và Hướng phát triểnTÀI LIỆU THAM KHẢO
Trang 7DANH MUC HỈNH ẢNHHình 1 Mô tả mối quan hệ về khái niệm mảng một chiễu
Hình 2 Cau trúc truy van SQL đơn giản
Hình 3 Quy trình xây dung ontology về kỹ thuật lập trình
Hinh 4 Mô hình lưu trữ tổng quát về kỹ thuật lập trình
Hình 5 Mô hình ontology về kỹ thuật lập trình
Hình 6 Quan hệ phân cấp trên lớp
Hình 7 Mô hình xây dựng đồ thị keyphrase biéu diễn về kỹ thuật lập trình
Hình 8 Mô hình cơ sơ dữ liệu (DB)
Hình 9 Mô hình cơ sở tri thức PT_ONTO lưu trên SQL server.
Hình 10 Mô hình tông quát xử lý tìm kiếm trên cơ sở tri thức về kỹ thuật lập trình 29Hình 11 Đồ thì biểu diễn câu truy vấn
Hình 12 Bảng kết quả phan trăm trả về của từng dang câu hỏi
Trang 8DANH MỤC KÝ HIỆU VÀ CHỮ VIET TAT
Ký hiệu Diễn giải Tiếng Việt
KN/DN Khái niệm/ Dinh Nghĩa Khái niệm/ Định Nghĩa
QH Quan Hệ Quan Hệ
SS So Sanh So Sanh
DB Database (Co sơ dữ liệu
Trang 9CHUONG 1: GIỚI THIEU DE TÀI
1.1 Tổng quan về đề tài
Hiện với sự phát triển không ngừng của công nghệ thông tin, bên cạnh đó côngnghệ web cũng có những thay đổi dé phù hợp và đáp ứng nhu cau hiện tại Công nghệ'Web đầu tiên (1.0) chỉ là những trang HTML thủ công, sau đo một bước mới cho máytính thực hiện các trang HTML động Hiện nay thế hệ web thứ 3 (3.0)- Web ngữnghia( Sematic Web) mạng lưới các thông tin được liên kết sao cho chúng có thé được
xử lý dễ dàng bởi máy tính Thông tin được tìm kiếm nhanh chóng và chính xác hơn,
dữ liệu được liên kết động
Bênh cạnh đó, kiến thức về môn học chưa được tổ chức thống nhất, mỗi nơi có mộtcách tô chức giảng dạy khác nhau, đặc biệt đối với sinh viên đại học ngành công nghệthông tin thì môn học nhập trình và cấu trúc dữ liệu và giải thuật gọi chung là kỹ thuậtlập trình thì không một sinh viên nào biết, nhưng cách tổ chức của trường, mỗi giảngviên lại khác nhau Việc tô chức dữ liệu chưa được tập trung và thống nhất
Ngoài ra nội dung về khái niệm/ định nghĩa có rất nhiều trên internet, bắc buộc sinh
viên phải lọc và phân biệt cái nào đúng và chính xác, nhưng không phải sinh viên nào
cũng biết và tìm ra, tốn nhiều thời gian cho việc tìm kiếm, dễ dẫn đến việc chán nản.Đặc biệt với một số sinh viên mắt kiến thức cơ bản, phân biệt cái nào đúng cái nào sai,
có đúng là nội dung mình cần tìm
Cộng thêm với sự đa dạng về từ ngữ trong tiếng việt, với một nội dung kiến thức cần
tìm nhưng với mỗi người lại có một cách hỏi, văn phong khác nhau, đôi khi với cáchhỏi khác nhau dẫn đến kết quả tìm kiếm khác nhau gây ảnh khó khăn trong việc học
tập, cũng cố kiến thức, tốn nhiều thời gian cho việc tìm kiếm Ví dụ với cụm từ “Cấutrúc dữ liệu và giải thuật” có định nghĩa là kết hợp và áp dụng một hoặc nhiều cầu
trúc dữ liệu nào đó vào một hoặc nhiều thuật toán nào đó để có được đầu ra mong
muốn một cách tối ưu và tốt nhất khi dữ liệu có số lượng cực lớn Ta lại có tiếp haiđịnh nghĩa Thứ nhất “Cấu trúc dữ I : cách lập trình đề lưu trữ dữ liệu đề dữ liệu
có thể được sử dụng một cách hiệu quả Thứ hai “Thuật toán”: thủ tục từng bước, xácđịnh một tập hợp các lệnh được thực hiện theo một thứ tự nhất định để có được đầu ra
mong muốn
Đặc biệt, hiện tại để hỗ trợ kịp thời và nhanh cho sinh viên, sinh viên mắt kiến
Trang 10thức căn bản tìm kiếm lại một kiến thức về kỹ thuật lập trình một các có hệ thống Cácứng dụng hiện tại hỗ trợ tra cứu thông tin theo chương mục: Liệt kê các chương mụctheo cầu trúc cây như trong các giáo trình, hay tra cứu theo chỉ mục: Liệt kê các từ
khóa theo thứ tự alphabet hoặc tra cứu theo từ khóa (terms) Hiện tại có nhiều website
để sinh viên có thể tìm kiếm, tra cứa thông tin về nhập môn lập trình, cấu trúc dit liệu
và dit liệu nhưng chủ yếu là tra cứu theo chương mục, nội dung được liệt kê theochương mục cây như trong các giáo trình, từ đó có thể xem tóm tắt nội dung củachương mục như nội dung chính, các ví dụ đơn giản, những từ khóa liên quan Bằngcách nhập một hoặc một số từ khóa vào trong ô tìm kiếm Nhược điểm là cùng một nội
dung nhưng với từ khoá khác nhau sẽ được liệt kê ra, số lượng chỉ mục rất nhiều, gâykhó khăn cho người dùng, có hai cách tra cứu thường dùng:
> Cách 1: Khi gõ một từ khóa cần tìm vào hệ thống sẽ gợi ý danh sách các từ
khóa có liên quan đến từ khóa mới gõ vào, ví dụ: trên web site có thanh tìmkiếm thông tin, người dùng gõ vào ô tìm kiếm từ khóa “mảng”, bên dưới ô tìmkiếm sẽ hiển thị danh sách các từ khoá liên quan nếu hệ thống có thông tin như:
“mang 1 chiều”, "mảng 2 chiều”, "mảng một chiều là”, "mảng là gì” Người dùng chọn vào một trong những từ khoá được gợi ý dé tìm kiếm thôngtin Nhược điểm là chỉ cho phép giới hạn số lượng từ nhập vào, danh sách các
từ được hiển thị theo mức độ trùng khớp với từ (các từ) theo từ , không baogồm hết tất cả trường hợp
VÀ đối tượng trong javascript chu
Trang 11được bao gồm các nội dung các từ khoá khác.
Chưa hỗ trợ người dùng việc tìm kiếm dựa trên ngữ nghĩa việc tìm kiếm, chưa đáp ứng
một số câu hỏi phức tập và nội dung trả về chưa phù hợp với mục đích tìm kiếm ban
đầu Tất cả các tìm kiếm trên chủ yếu dựa trên các keyword đã được cấu hình dưới cơ
sở dữ liệu, chỉ hỗ trợ tìm theo các keyword có sẵn, chưa hỗ trợ tìm kiếm theo ngữnghĩa, cùng một kiến thức nhưng với câu tìm kiếm khác ngữ nghĩa là hệ thống sẽkhông tìm kiếm được thông tin Bên cạnh đó, tất cả các tri thức điều được xem là kháiniệm hay định nghĩa, nhưng chưa có hệ thống nào phân biệt là tìm kiếm theo kháiniệm, định nghĩa, các quan hệ, tác vụ, bài toán liên quan đến kiến thức tìm kiếm
Tir những lý do trên để phục vụ vào nhu cầu học tập về kỹ thuật lập trình cho sinhviên xoay quanh kiến thức kỹ thuật lập trình một cách nhanh nhát, thống nhất về cách
tổ chức Luận văn đề xuất dé tài xây dựng hệ thống tìm kiếm thông minh trên miền trithức về nhập môn lập trình, cầu dữ liệu và thuật toán, với mục tiêu xây dựng ứng dụnggiúp sinh viên có thê truy cập dễ dàng, nhanh chóng, kiến thức được mô tả chỉ tiết,trực quan, dé hiéu, dễ tiếp thu, nhằm hỗ trợ cho giáo viên, sinh viên trong công tác dạy
và học Bên cạnh đó, chưa có yếu tô gọi là thông minh dé giải quyết nhu cầu tìm kiếmcủa sinh viên, thông minh ở đây là dựa vào ngữ nghĩa câu truy vấn dé trả về kết quả.Tìm kiếm theo ngữ là một cách tốt hơn dé cung cấp cho người dùng thông tin họ cần,đảm bảo kết quả thu được có liên quan đến thông tin cần tìm hơn là dựa trên khả năng
hiểu được nghĩa cảu từ (cụm từ) đang được tìm kiếm Yếu tố suy luận như con người
vào dé giải quyết bài toán, chẳng hạn khi hình vào một khuân mặt con người thì ta cóthé suy luận ra tâm trạng người đó đang vui hay buồn, v.v Luận án sẽ áp dụng tinhthông minh là tìm kiếm theo ngữ nghĩa tìm kiếm trong việc tìm kiếm kiến thức lậptrình dé hỗ trợ sinh viên, tìm kiếm thông minh ở đây không đôi hỏi quá cao về áp dụngtrí tuệ nhân tạo (AI), nhưng có thê dựa trên ngữ nghĩa câu hỏi để suy luận ra câu trả lời
phù hợp Chăng hạn cho biết các thuật toán tìm kiếm trên day? Với ứng dụng hiện tại
thì sẽ không hỗ trợ được câu trả lời chính xác cho câu hỏi trên, vì không có yếu tố suyluận hay xử lý câu hỏi để tìm theo ngữ nghĩa mà chỉ chủ yếu theo từ khóa hay chuỗi
ký tự.
1.2 Mục tiêu, phạm vi đề tài
Trang 121.2.1 Mục Tiêu
Mong muốn mang lại sự hỗ trợ kịp thời và nhanh chống cho sinh viên trongviệc học tập và cũng có kiến thức, tìm hiểu về kiến thức kỹ thuật lập trình Giúp đỡcho những sinh viên bị mất kiến thức cơ bản củng cố lại kiến thức bị mat dễ đàng vàhiệu quả, minh hoạt các hoạt động cấu trúc điều khiển và các thuật giải để sinh viên
nắm vũng Xuất phát từ những bắt cập trên luận văn tập trung vào:
> Thu thập tri thức về nhập môn lập trình, cấu trúc dữ liệu và giải thuật, sau đóphân loại tri thức, xác định các quan hệ, tác vụ, bài tập liên quan đến kiến thức
> Xây dựng mô hình cơ sở tri thức lưu trữ phù hợp về kiến thức kỹ thuật lập trìnhđáp ứng như cầu tìm kiếm của sinh viên Dựa trên môn hình cơ sở tài liệu cónghĩa [1], đưa ra mô hình tổ chức và quản lý về kỹ thuật lập trình
Thu thập câu hỏi liên quan đến kiến thức về hai môn nhập môn lập trình, cấu
Vv
trúc đữ liệu và giải thuật gọi chung là kỹ thuật lập trình Danh mục câu hỏi hon
250 câu hỏi được thu thập từ chuyên gia và lấy khảo xát từ sinh viên đang hoctại trường, sau đó chọn lọc và kiểm lại từ chuyên gia
> Tiến hành phân loại các câu hỏi thành các dạng khác nhau để xây dựng cácthuật giải phù hợp Xây dựng cấu trúc và ngôn ngữ quy định riêng cho từngloại Luận văn không tập trung vào xử lý ngôn ngữ tự nhiên, mà đưa ra quy ướcngôn ngữ truy vấn phủ hợp từng loại câu hỏi
> Thiết kế các thuật toán phù hợp với các loại câu hỏi được liệt kê phía trên Đốivới mỗi dang câu hỏi, cần xác định giá trị đầu vào (input) cửa câu hỏi là gi, giátrị đầu ra (output) là gì phù hợp với từng loại
> Thiết kế giao diện truy vấn thông tin đơn giản, dễ hiểu với từng cách hỏi, giaodiện phù hợp với kết quả trả về Với cách mỗi cách hỏi thì giao diện nhập đầu
vào khác nhau.
Hiện tại với “Nghiên cứu các giải pháp thiết kế và xây dựng phân hệ quản lý tài
nguyên học tập cho hệ thống E-Learning”[I] đã xây dựng được ontology cụ thé vềlĩnh vực tin học, đồ thị keyphrase về câu truy van mức độ tổng quát, chưa biểu diễn cụthể từng môn học, quan hệ hay tính chất giữa các khái niệm Luận văn tổ chức lưu trữ
cơ sở dữ liệu, cơ sở tri thức về nhập môn lập trình, cấu trúc dữ liệu và giải thuật lên
trên máy tính, xác định các khái niệm/ định nghĩa liên quan đến hai môn học, xác
Trang 13định và phân loại tri thức phù hợp với từng loại khái niệm Khi ta nói đến mảng một
chiều, thì đầu tiên ta có khái niệm về mảng một chiều, tiếp theo là khái niệm khởi tạo,
khai báo, nhập, xuất mảng một chiều Tất cả các khái niệm điều là tri thức nhưng có
mối liên hệ với nhau, ta thay rằng các khái niệm về khởi tạo, khai báo, nhập xuất mảnh
một chiều đều là tác vụ liên quan đến mảng một chiều
Khái niệm (TH thức)
Hình 1 mô tả mỗi quan hệ vẻ khái niệm mảng một chiều.
- Phân loại câu hỏi thành các dạng thường gặp, dựa trên tập câu hỏi thu thập,tiến hành xác định và phân loại câu hỏi thành các dạng khác nhau, mỗi dạng đưa rangôn ngữ quy ước riêng cho ứng dụng, từng đạng câu hỏi sẽ quy ước cách nhập vào,thuật giải và đầu ra phù hợp với từng dạng Không tập trung vào vấn đề giải quyếtngôn ngữ tự nhiên Xét ví dụ cho câu hỏi về mảng một chiều, có các cách hỏi khác
nhau như: Mang một chiều là gi?, Mang một chiéu?, Thế nào là mảng một chiều?,
Mang | chiều? Khái niệm mảng một chiều?, Định nghĩa mảng một chiều? Như thé nào
là mảng một chiều? Tất cả điều cùng một mục đích để trả lời khái niệm “mảng mộtchiều” Bên cạch đó, một cách hỏi khác vừa muốn biết khái niệm/ định nghĩa về một
kiến thức cụ thể và kèm theo một tác vụ hay quan hệ kèm theo, ta xem xét câu hỏi sau:
“Thế nào là mảng một chiều và cách khai báo?” Với cách hỏi này thì vừa muốn
biết KN/DN, mà còn thêm kiến thức về cách khai báo về mảng một chiều Hiện tạiluận văn tập trung và giải quyết bốn dang câu hỏi thường gặp dé giúp sinh viện tìm vàhọc tập hay ôn tập lại kiến thức về kỹ thuật lập trình một cách hiểu quả nhất
+ Dạng 1: câu hỏi tìm theo khái niệm/ định nghĩa Đối với dạng câu hỏi này
giải quyết nhanh cho sinh viên tìm nhanh về kiến thức mong muốn, thay vì cách tìmthử công theo chương, hay cây mục, chăng hạng với câu hỏi “Cây nhị phân là gì?sinh viên cân phân biệt câu hỏi nó năm ở môn học nào? Chương nào trong môn học.
Trang 14+ Dạng 2: câu hỏi về khái niệm/ định nghĩa và các quan hệ đi kèm Dạng 2
là dạng mở rộng của dạng 1, không dừng ở việc trả lời cho kiến thức cần tìm và cònkèm theo bat kỳ quan hệ hay tac vụ liên quan đến tri thức cần tìm Chang hạn câu hỏisau: “Khái niệm mảng một chiều và cách khai báo?” Với câu hỏi này thì gồm hai
câu hỏi nhỏ ở dạng 1, câu thứ nhất là “Khái niệm mảng một chiều?”, câu thứ hai là
“Khái niệm khai báo mảng một chiều?” Dạng câu hỏi này bao hàm khái niệm về
một kiến thức nào đó về kỹ thuật lập trình và các quan hệ tác vụ hay quan hệ đi kèm
+ Dạng 3: câu hỏi so sánh Không dừng lại ở việc tìm kiếm các tri thức về kỹ
thuật lập trình, mà còn so sánh các đặc tính giữa hai tri thức, những điểm giống nhau,
khác nhau, ưu điểm, nhược điểm Giúp sinh viên nắm một cách tổng quát nhất về trithức Đối với dạng 2 thì chỉ tìm kiếm theo 1 khái niệm, rồi xem xét các quan hệt haytác vụ liên quan, còn đó với dạng 3 thì xét hai khai niệm hoàn toàn khác khau Xét ví
dụ về câu hỏi “So sánh ngăn xếp và hàng đợi” Với câu hỏi trên cần cung cấp thông
tin về hai khái niệm là ngăn xếp và hàng đợi, ngoài ra còn phải thể hiện sự so sánh
giữa hai khái niệm, thông tin so sánh là bảng liệt kê các thông tin giữa hai khái niệm,
một bên là liệt kê tri thức thứ nhất, một bên liệt kê tri thức còn lại
+ Dạng 4: câu hỏi liệt kê Dạng câu 4 không chỉ trả về tri thức cần tìm kiếm,
mà còn thể hiện hết các khái niệm liên quan về nội dung tìm kiếm, nói đơn giản làvòng lặp các câu trả lời dạng 1 Xem xét câu hỏi sau “Liệt kê các thành phần máytính?” Với câu hỏi này thì dạng 1 sẽ không trả lời đầy đủ hết các thông tin về nộidung câu hỏi, chỉ cho biết được khái niệm về máy tính, còn dang 2 và 3 thì không phùhợp với câu trên, bắt buộc phải xây dựng thuật giải tìm ra hết các phần về máy tính,
sao đó quay về dạng câu 1 đề thé hiện lên cho sinh viên nắm hết
- Quy ước ngôn ngữ truy vấn riêng phù hợp với từng dạng câu hỏi, mỗi câu hỏicần xác định thuộc vào dang câu hỏi nào trên 4 dạng trên, sau đó xác định keyphrase
chính trong mỗi câu hỏi Nhưng chúng ta điều biết về ngôn ngữ truy vấnSQL(Structured Query Language), chuan tương tác với các cơ sở dit liệu quan hệ, dé
có thể tìm kiếm được nội dung nào đó, bạn phải viết theo cấu trúc quy định mà ngônngữ SQL đưa ra, như Hình 2, cho ta thấy để có thê tìm kiếm được thông tin thì phảituân thủ theo quy tắt của ngôn ngữ như phải có từ khóa “Seleet”,”From”,°Where”
SELECT cotumn1, column2,
FROM tabLe_name WHERE condition;
Hình 2 Cau trúc truy vẫn SOL đơn giảm
Trang 15Luận văn quy ước với mỗi dạng câu hỏi thì đầu vào và đầu ra là hoàn toàn khác nhau
đề có thé giải quyết và trả về nội dung phù hợp với câu hỏi, chăng hạn với dạng câuhỏi thì yêu cầu đầu vào là khái niệm cần tìm.
- Xây dựng thuật giải phù hợp dé giải quyết như cầu tìm kiếm và truy vấn kiếnthức Mỗi dạng câu hỏi khác nhau thì yêu cầu đầu vào, cú pháp nhập, đưa ra kết quảtrả về theo từng dang, phù hợp với mục dich đặc ra câu hỏi cũng khác nhau nhằm giúpsinh viên học tập tốt nhất
Minh họa động cơ chế hoạt động, xử lý của các cấu trúc điều khiển, và các
thuật toán Nhằm mang lại kết quả tốt nhất trong quá trình học tập và dé dàng tiếp thu
kiến thức, hiểu rõ quá trình thực hiện, chỉ tiết từng bước hoạt động của các thuật giải.1.2.2 Phạm vi đề tài
Nhằm phục vụ chủ yếu cho sinh viên ngành công nghệ thông tin nắm vữngkiến thức về kỹ thuật lập trình gồm hai môn học: nhập môn lập trình, cấu trúc dữ liệu
và thuật giải Đặc biệt là sinh viên mắt căn bản có thé dé dành tìm hiểu và cũng có lại
kiến thức một cách hiệu quả Đề tài tập trung chủ yếu vào việc giải quyết tìm kiếm trên
cơ sở tri thức về kỹ thuật lập trình, phân loại câu hỏi thường gặp thành các dạng khácnhau, đưa ra ngôn ngữ quy ước cho từng dang câu hỏi, không đi sâu vào van dé giảiquyết ngôn ngữ tự nhiên về các câu hỏi truy van
Xây dựng cơ sở dữ liệu và cơ sở tri thức lưu trữ lên máy tính, thu thập tri thức
và phân loại tri thức về nhập môn lập trình, cấu trúc dữ liệu và giải thuật theo từng loạinhư khái niệm/ định nghĩa, quan hệ, tác vụ, khác, phù hợp với từ tri thức.
Nội dung kiến thức được tổ chức và xây dựng từ đề cương môn học của Đạihọc quốc gia hồ chí minh - Trường đại học công nghệ thông tin thành phố hồ chí
minh:
- IT001 - NHẬP MÔN LAP TRÌNH
- IT003 - CẤU TRÚC DU LIỆU VÀ GIẢI THUẬT
1.3 Nghiên cứu liên quan
[1] Nghiên cứu các giải pháp thiết kế và xây dựng phân hệ quan lý tàinguyên học tập cho hệ thống E-Learning
Nhóm tác giả: VanNhon Do, ThanhThuong T Huynh, and TruongAn
PhamNguyen
Tom tắt: Nghiên cứu xây dựng một giải pháp bao gồm các mô hình, van dé,
thuật giải kỹ thuật và quy trình đề tổ chúc một kho tài nguyên học tập lĩnh vực
Trang 16công nghệ thông tin theo ngữ nghĩa Trong bài báo này, nhóm tác giả đã xây
dựng hệ thống quản lý tài nguyên học tập lĩnh vực công nghệ thông tin trongphạm vi của một trường đại học với hai nhóm chức năng chính: tô chức quản lýlưu trữ và tìm kiếm Mô hình cơ sở tài liệu có nghĩa (Semantic Document
Base_SDB) trong đó tích hợp các thành phần: mô hình ontology mô tả tri thứccủa tin học, mô hình lưu trữ theo hệ hồng thư mục có qui chuẩn, mô hình cáclớp cơ sở dit liệu của kho tài liệu, mô hình lớp semantic- quản lý ngữ nghĩa.
Cách thức tô chức cơ sở về các tài liệu theo mô hình SDB trên máy tính Xâydựng các đồ thị keyphrase biéu diễn tài liệu, câu truy vấn, bên cạnh đó nhómtác giả còn tính độ đo tương đồng ngữ nghĩa giữa các keyphrase, so khớp đồ thị
keyphrase Do độ liên quan ngữ nghĩa giữa tài liệu va câu truy van
Kết quả: Kết quả thực nghiệm cho thấy hệ thống xây dựng ontology cụ thể về
lĩnh vực tin học, đồ thị keyphrase biêu diễn tài liệu, câu truy vấn, tính độ tương
đồng ngữ nghĩa giữa các keyphrase, so khớp đồ thị keyphrase Do độ liên quanngữ nghĩa giữa tài liệu và các câu truy van, bài toán tìm kiếm theo ngữ nghĩa.1.4 Tóm tắt kết quả dữ kiến và bố cục luận văn
Ngôn ngữ truy vấn và kỹ thuật xử lý câu truy vấn Hệ thống không tập trungvào giải quyết ngôn ngữ tự nhiêu của người dùng nhập vào câu truy vấn, đưa rangôn ngữ quy ước dé người dùng chỉ cần nhập vào nội dung tìm kiếm Sau đó
xây dụng giải thuật dé xử lý câu truy vấn đưa ra kết quả cho người dùng
Cuối cùng ứng dụng hỗ trợ tìm kiếm thông tin về nhập môn lập trình, cấu trúc
dữ liệu và thuật toán hiểu giúp cho sinh viên tiếp thu, hiểu kiến thức một cách
dé dàng và nhanh chóng Ngoài ra còn có các minh họa động về các cấu trúcđiều khiển và các thuật toán
1.4.2 Bồ cục luận văn
> Chương 1: Giới thiệu đề tài Cung cấp thông tin tong quan, mục tiêu, phạm vi
về đề tài
Trang 17Chương 3: Thiết kế cơ sở tri thức và bộ suy luận Từ những yêu cầu thực tế,
trình bày về cách thiết kế mô hình tổ chức cơ sở dữ liệu về kỹ thuật lập trình, cơ
sở tri thức và xử lý câu truy vấn cho ứng dụng
Chương 4: Cài đặt - Thử nghiệm Trình bài các công nghệ áp dụng, thể hiệngiao điện tông quan, từng loại câu truy vấn , nguồn dữ liệu truy van và kết quả
đạt được.
Chương 5: Kết luận Trình bày kết quả đạt được và hạn chế, đưa ra hướng
phát triển
Trang 18CHƯƠNG 2: THU THẬP TRI THỨC VÀ PHÂN TÍCH YÊU CẦU
2.1 Thu nhập tri thức
2.1.1 Tri Thức về nhập môn lập trình
Dựa trên đề cương môn học nhập môn lập trinh(Introduction to Programming)cung cấp các kiến thức và kỹ năng căn bản và nền tảng nhất về máy tính và lập trình
cho tắt cả sinh viên các ngành Công nghệ thông tin Nội dung môn học bao gồm các
kiến thức cơ bản về máy tính, chương trình máy tính, thuật toán, các kỹ thuật lập trình
cơ bản Ngoài ra, môn học cung cấp các kiến thức về ngôn ngữ lập trình C++ và các
kỹ năng liên quan khi sử dụng ngôn ngữ lập trình C++ dé viết các chương trình trênmáy tính Dữ liệu thu thập từng chương sẽ được mô tả thành bảng gồm có: yếu tố trithức, nội dung, keypharse gốc, keypharse liên quan, phân loại được thé hiện ở phụ lụcthức về kỹ thuật lập trình, nội dụng tổng quát các chương về nhập môn lập trình [10].như sau:
- Chương 1 Giới thiệu tong quan về máy tính và lập trình: Thu thập tri thứckhái niệm về máy tính, cấu trúc tổng quan và các thiết bị ngoại vi, các khái niệm co
bản về lập trình, các ngôn ngữ lập trình, các hệ đếm trên máy tính, chuyền đổi giữa các
hệ đếm, công nghệ lập trình hiện đại và triển vọng tương lai,
- Chương 2: Giới thiệu về thuật toán: Tri thức về vấn đề/bài toán, khái niệm
thuật toán, sự cần thiết và các tiêu chuẩn, cũng như các cách biéu diện thuật toán
- Chương 3 Các kiêu đữ liệu cơ sở và phép toán trong C++: chương trình làgi?, khái niệm về biến và hằng, các kiểu dữ liệu cơ sở, khái niệm biểu thức, tri thức vềcâu lệnh gan và biểu thức gan
- Chương 4: Các cấu trúc điều khiển: Tri thức câu lệnh và khối lệnh trong lập
trình, phạm vi hoạt động của biến, cấu trúc rẽ nhánh if, if-else, switch-case, cấu trúc
lặp for,while, do while,
- Chương 5: Hàm và tham số của ham: Tri thức về hàm, phân biệt ham trong
toán học va trong lập trình, tri thức về lợi ích và cấu trúc viết hàm, các loại đệ quy,cũng như cách viết, nguyên tắc hoạt động của hàm đệ quy, ưu khuyết điểm của
phương pháp đệ quy,
- Chương 6: Mang: thu nhập kiến thức về mảng trong lập trình, lợi ich của việc
Trang 19sử dụng mảng các yếu tố để xác định mảng, các tác vụ trên mảng, thu thập kiến thức
về khai báo, khởi tạo, nhập xuất chuỗi,
- Chương 7: Cấu trúc: thu thập tri thức về khai báo, khởi tạo và sử dụng biếncấu trúc, cấu trúc phức hợp, vấn đề liên quan khác: Phép gán, truyền cấu trúc cho hàm,kích thước của cấu tric,
- Chương 8: Con trỏ: Thu thập tri thức về khai vai trò, tầm quan trọng, Vai trò,
tam quan trọng của con trỏ,
- Chương 9: Lập trình với tập tin: Tri thức thu thập về tập tin dang văn bản, quitrình chung và cơ chế đọc ghi dữ liệu, một số thao tác trên tập tin van bản,
2.1.2 Tri Thức về cấu trúc dự liệu và giải thuật
Tương tự như tri thúc về cầu trúc dữ liệu và giải thuật cũng được mô tả ở bảnphụ lục tri thức về kỹ thuật lập trình, nội dung từng chương về cấu trúc dữ liệu và giảithuật như sau[ 1 1].
- Chương 1-2 : Tổng quan về giải thuật và cấu trúc dữ liệu: cấu trúc dữ liệu làgì? Tri thức về kiểu dữ liệu trừ tượng, về thuật toán, biểu diễn thuật toán và độ phứctạp, phân tích, phân lớp thuật toán, Tìm kiếm và sắp xép: tri thức thu thập được ở
chương này là các giải thuật tìm kiếm nội, bài toán tim kiếm
- Chương 3: Cấu trúc dữ liệu động: kiến thức có được ở chương này bao gồm
kiểu dit liệu con trỏ, danh sách liên kết, các hình thức tô chức danh sách, cấu trúc dữ
liệu dạng danh sách liên kết khac,
- Chương 4: Ngăn xếp, hàng đợi: tri thức được thu thập ở chương này về ngăn
xếp, hàng đợi, ví dụ ngăn xếp, hàng đợi,
- Chương 5: Cấu trúc cây: thu thập các kiến thức về cấu trúc, tinh chat cây, cây
nhị phân, cây tổng quát, cây nhị phân tìm kiếm,
- Chương 6: Bảng băm: các kiến thức thu thập được như bảng băm là gì,
phương pháp băm, phân tích bảng băm, giải quyết đụng độ
2.2 Khái niệm về cơ sở tri thức
Theo Nikoletta Bika [4], cơ sở tri thức là một thư viện trực tuyến, nơi thông tin
về một chủ đề được thu thập, sắp xếp và dé dàng truy cập Được thiết kế đề cung cấpcâu trả lời nhanh chóng cho người sử dụng khi họ cần đến chúng Cơ sở tri thức bao
Trang 20gồm các tài liệu, các hướng dẫn, các câu hỏi thường gặp, v.v.
Còn theo Mathew Patterson[5], cơ sở tri thức là một bộ sưu tập thông tin có tổ
chức, được quản lý về một lĩnh vực chủ đề cụ thê - một cách làm cho thông tin đó dễ
tiếp cận và sử dụng hơn Cơ sở tri thức là một công cụ tự phục vụ, cung cấp cho kháchhàng để họ tự tìm câu trả lời mà không cần yêu cầu và chờ đợi của người khác
Từ hai định nghĩa trên ta thấy rằng cơ sở tri thức có đặc điểm chính là một hệthống phục vụ thông tin trực tuyến, cung cấp thông tin chỉ tiết về một lĩnh vực nào đó
cụ thé và trả lời các câu hỏi phổ biến
Kiến thức trong cơ sở tri thức có thể có được từ nhiều nguồn, những nhà
chuyên gia thuộc lĩnh vực liên quan sẽ bô sung và mở rộng nội dung Với mục tiên xây
dựng cơ sở tri thức về kỹ thuật lập trình nhằm kết hợp con người với công nghệ thôngtin dé tạo lập, quản lý, chia sẻ và sử dụng tri thức Giúp phần lớp sinh viên gặp lỗ hỗng
về kiến thức hai môn học tại trường là nhập môn lập trình, cấu trúc dữ liệu vả giải
thuật Bên cach đó, cơ sở tri thức còn được trình bày dưới dang văn bản, hình ảnh,video, âm thanh, hay bất kỳ định dạng phương tiện nào khác Nên có thể cung cấpthông tin cho người dung một cách tiếp thu hiệu quả nhất
Đặc biệt là với phần mềm cơ sở tri thức cụ thể, chẳng hạn trong luận văn là về
kỹ thuật lập trình thì người sử dụng có thể được cung cấp đúng thông tin, nhanh hơn
Mà một trong những mô hình biểu diễn một lĩnh vực và được sử dụng để suy luận vềcác đối tượng trong lĩnh cu thé và mối quan hệ giữa chúng là Ontology sẽ được trìnhbài ở mục 2.3.
2.3 Ontology
2.3.1 Giới tl lệu chung vỀ ontology
Một trong những định nghĩa phổ biến về ontology, R Arp và cộng sự [2]:Ontology là một sản phẩm trình diễn do con người tạo ra, với thành phần đặc thù làmột bảng phân loại biểu diễn tường minh một tổ hợp nào đó của các kiểu, các lớp
được định nghĩa và một sô quan hệ giữa chúng Chang han Ontology ứng dụng (application ontology) được tạo ra nhằm mục đích thực hiện một số bài toán hoặc ứng
dụng cụ thẻ
Ontology cung cấp một bộ từ vựng chung bao gồm các khái niệm, các thuộc
Trang 21tính quan trọng và các định nghĩa về các khái niệm và các thuộc tính, cung cấp cácràng buộc Các ontology được sử dụng như là một biéu mẫu trình bai tri thức về thếgiới hay một phần của nó Các thành phần trong ontology gồm:
- Cá Thẻ (Individuals): La các thành phan cơ bản, nền tang của một ontology,bao gồm các đối tượng cụ thể (con người, động vat, ) căng như các cá thể trừu tượng
- Lớp(Classes): Là các nhóm, tập hợp các đối tượng trừa tượng Các ontologybiến đổi tùy thuộc vào cấu trúc và nội dung, một lớp có thé chứa các lớp con, lớp tông
quát chứa tat cả mọi thứ, cũng có thé chỉ chứa những cal thé riêng lẻ
- Thuộc tính(Properties): các đối tượng trong ontology có thề được mô tả thôngqua việc khai báo các thuộc tính Mỗi thuộc tính đều có tên và giá trị Được sử dụng đểlưu trữ các thông tin mà đối tượng có thể có
- Mối quan hệ(Relation): Mô tả mối liên hệ giữa các đối tượng trong ontology
Một mối quan hệ là một thuộc tính có giá trị là một đối tượng nào đó.
2.3.2 Các bước xây dựng ontology
Năm lý do ma Natalya F.Noy [3] dưa ra đê xây dựng một ontology như sau:
Thứ nhất: việc chia sẽ sự “hiểu” về các cầu trúc thông tin giữa con người và các phần
mềm là mục tiêu lớn nhất trong sự phát triển của ontology Ví dụ, nhiều website chứa
đựng các thông tin hay dịch vụ về tin học, các website này chia sẽ trên cơ sở sử dụng
các thuật ngữ của cùng mồ ontology thì máy tính có thẻ trích chọn và tích hợp thông
tin, trả lời cho các truy vấn người dùng hay làm input cho một ứng dụng khác
Thứ hai: xây dung ontology cho phép khả năng sử dụng lại các tri thức miễn
"Thứ ba: cho phép khả năng sử dụng lại các tri thức miền
Thứ tư: việc xây dựng ontology cho phép tách biệt tri thức miền với tri thức thi hành
Thứ năm: phân tích tri thức miễn là hoàn toàn có thể thi hành được khi đã biết đượccác định nghĩa của các khái niệm trong ontology được xây dựng.
Natalya F.Noy [3] đã chỉ ra 7 bước chính dé xây dung ontology, bao gồm:
Bước 1: Xác định miền cần xây dựng ontology và phạm vi của việc xây dựng
ontology
Bước 2: Ra soát, phân tích các ontology đã được xây dựng có liên quan đến miền cần
Trang 22xây dựng ontology, qua đó xem xét việc tái sử dụng và tích hợp các ontology đã có.
Bước 3: Phân tích, trích xuất từ các nguồn đữ liệu, qua đó xác định được các khái
niệm, thuật ngữ quan trọng của ontology cần xây dựng
Bước 4: Xác định các khái niệm và cây phân cấp các khái niệm của ontology cần xâydựng.
Bước 5: Định nghĩa các thuộc tính của các khái niệm.
Bước 6: Định nghĩa miền giá trị của các thuộc tính của các khái niệm
Bước 7: Tạo các thể hiện của các khái niệm và quan hệ giữa các thể hiện của các khái
Bước 2: Làm giàu ontology, thông kê trên tập tri thức thu thập với kết quả tìm kiếmtrên Internet, nếu chưa có thì bổ sung vào đề làm tăng số lương ontology về kỹ thuậtlập trình.
Bước 3: Rút chích keyphrase và mối quan từ Bước 2 Xây dựng ontology từ dữ liệu
đó, mô hình cụ thể để xây dựng và lưu trữ là PT_ONTO sẽ được trình bài cụ thể ởchương 3.
Bước 4: Chuẩn hóa Ontology Dưới sự giám sát của chuyên gia, các ontology lần lượtđược xây dựng và lưu vào hệ thống
Trang 23Thu nhập Thống kê tập Rút ra các Giám xác
Ontology từ kiến thức với keyphrase và của chuyên
nhiều nguồn kết quả tìm quan hệ từ gia
trên internet tập tri thức
Tiến hành thu Kiểm tra tập tri Xây dựng Chuan hóa
thập dữ liệu kỹ thức với kết quả ontology từ tập ontology
thuật lập trình tìm kiếm trên kiến thức và
và tích hợp internet, làm giàu các quan hệ
- Phần 2: Việt hóa ontology, nếu ton tại các ontology có khái niệm bằng tiếng anh, thìcần chuyền sang tiếng Việt
- Phần 3: Cụ thể Ontology Kỹ thuật lập trình Với ontology từ phần 1 và phần 2 chỉ
bao gồm các khái niệm và chưa đủ bao quát cho tri thức về kỹ thuật lập trình Cần phải
nâng cáp ontology dự theo mô hình [1] theo ba bước cơ bản sau:
> Bước 1: Bồ sung các khái niệm nhằm hiệu tăng lượng chi kiến thức kỹ thuật lậptrình một cách đầy đủ
> Bước 2: Bổ sung các quan hệ giữa các khái niệm, bồ sung các lớp, phân lớp các
khái niệm.
> Bước 3: Bồ sung các thể hiện các khái niệm và các thể hiện của các quan hệgiữa các khái niệm.
2.3.3 Mô hình Ontology Kỹ thuật lập trình
Mô hình tổng quát về kỹ thuật lập trình gồm có hai phần chính, một là mô hình
cơ sở đữ liệu (DB) lưu thông tin về kỹ thuật lập trình, hai là mô hình cơ sở tri thức
Trang 24Mô hình cơ sở kỹ thuật lap
trình (semantic programming techniques
base - SPTB)
Mô hình t thie kỹ thuật lập trình
Mô hình cơ sở dữ liệu Bi
Lưu tre kiến thức tông quát về Mô hình Ontology cho các
„ wn Ty thuật lập tr keyphrase in lớp.kỹ thuật lập trình ypi lược pl lớp.
Hình 4 Mô hình lưu trữ tổng quát về kỹ thuật lập trình
Phần tổ chức lưu trữ mô hình cơ sở dữ liệu DB sẽ được trình bài cụ thể ở chương 3, ởđây tập chu chủ yêu vào mô hình Ontology cho các keyphrase được phân lớp vè kỹ
thuật lập trình( PT_ONTO), mô hình gồm 5 thành phần: K, C, Rxx Rxc.Rcc.
Trong đó thành phần K(Keyphrase), tập hợp các keyphrase về kỹ thuật lập trình.Thanh phan chính dé hình thành các khái niệm của ontology, một đơn vị ngôn ngữ họccấu trúc như một từ, một từ kép, làm yếu tố đơn vị để mô tả tri thức Keyphare đơn
được cấu tạo bằng một đơn vị từ vựng đơn, ví dụ: “Hằng”,”Biến” Keyphare tổ hợp lànhiều đơn vị từ vựng đơn kết hợp Keyphrase là tổng hợp của cả keyphrase đơn và tổ
hợp Ký hiệu C (tập hợp các lớp keyphrase), mỗi lớp là tập hợp các keyphrase có liênquan với nhau theo một tính chất hay ngữ nghĩa Sự phân lớp trong keyphrase được
phân thành nhiều cấp theo mức độ cụ thể cảu khái niệm tăng dần Một keyphrase có
thé thuộc nhiều lớp khác nhau Vi dụ, lớp cấu trúc dit liệu sẽ gồm các keyphrase như
Trang 25ngăn xếp, hàng đợi, danh sách, cây, sắp xép,
Ký hiệu Rkx(tập hop quan hệ trên keyphrase) Có 3 nhóm quan hệ thường được sửdụng là quan hệ tương đương, phân cấp và không cấp Chẳng hạng trong nhóm quan
hệ tương đương có 3 mối liên hệ thường dùng như thứ nhất: Keyphrase A đồng nghĩavới B( quan hệ ngữ nghĩa Synonym), thứ 2:Keyphrase A là cách viết tắt của B (quan
hệ Acronym), thứ 3:Keyphrase A gần nghĩa với B (quan hệ ngữ nghĩa Near synonym)Nhóm quan hệ phân cấp có hai quan hệ phổ biến: thứ nhất: Keyphrase A là mộtphần/công đoạn của B( quan hệ ngữ nghĩa là “A part of”), thứ 2: Keyphrase A là mộtdang của B( quan hệ ngữ nghĩa “A kind of”) Hiện tại luận văn mới xét tới hai nhómtrên, chưa xét đến nhóm quan hệ nhóm không phân cấp
Ký hiệu Rxc(tap hợp quan hệ giữa keyphrase và lớp) Một keyphrase có thé chứa tronglớp này, cũng có thé chứa trong lớp kia, hiện tại luận văn chỉ mới xét 1 mối quan hệ
“thuộc về (mại).
Ký hiệu Rec( tập quan hệ giữa lớp và lớp) Hiện tại luận văn tập trung xét hai mốiquan hệ là quan hệ phân cấp, và quan hệ có liên quan Chẳng hạng với mối quan hệliên quan ta có, lớp “Ngôn ngữ lập trình” liên quan với “Phương pháp lập trình” Vớiquan hệ phân cấp trên lớp, ta có lớp chính là “Lập trình” chứa các lớp con là “Ngôn
ngữ lập trình” và “Phương pháp lập trình”, trên lớp “Phương pháp lập trình” lại chứa
các lớp con như “Lập trình hướng đối tượng”, “Lập trình Logic”, “Lap trình chức
năng”.
Lập trình
Phương pháp lập trình Ngôn ngữ lập trình
Lập trình chức năng Lập trình hướng đổi tượng| | Lập trình Logic
Hình 6 Quan hệ phân cấp trên lớp
Sau khi đã có chỉ tiết về thành phần của mô hình PT_ONTO, tiến hành chuyển khai
mô hình đó thành đối tượng cụ thé đề lưu trữ vào máy tính, mà chỉ tiết cụ thể về các
đối tượng, mối quan hệ sẽ được chuyển thành các bảng cụ thể lưu vào cơ sở dữ liệu
Trang 26SQL server, cụ thể ở chương 3.
2.4 Tìm kiếm thông minh (Tìm kiếm theo ngữ nghĩa)
Tìm kiếm thông minh về kỹ thuật lập trình ở đây hơn các tìm kiếm thông
thường như từ khóa hay chuỗi ký tự được truyền vào là dựa trên ngữ nghĩa câu hỏi đểtìm ra câu trả lời, dé giải quyết bài toán tìm kiếm theo ngữ nghĩa vừa nêu, dựa trên
cách giải quyết vấn đề bài toán về tìm kiếm ngữ nghĩa của tài liệu[1], áp dụng vào bài
toán tìm kiếm ngữ nghĩa về kỹ thuật lập trình cần giải quyết một số van dé như sau:
- Cần xây dựng dé thị keyphrase biểu diễn ngữ nghĩa Với mỗi keyphrase thu được,
biểu dién(ndi dung) thành đồ thì keyphrase tương ứng
Trích xuất thông Rit trích keyphrase
Tài liệu về kỹ thuật fin đặc trưng
Danh sách
keyphrase
VY
Dùng ontologu suy Dùng ontologu suy
diễn các moi quan hệ|“L———— ]diễn các moi quan hé|
File Semantics ngữ nghĩa trên tap |^,————] ngữ nghĩa trên tập
Keyphrase Keyphrase
Hình 7 Mô hình xây dựng dé thi keyphrase biểu diễn vẻ kỹ thuật lập trình
Các đồ thị keyphrase biểu diễn tài liệu được lưu lại theo định dang plaintext có cấu
trúc dựa trên một sô từ khóa và qui ước vé cú pháp đơn giản [1].
Trang 27{ "keyphrase":
["Dinh danh Keyphrase 1"."Dinh danh Keyphrase 2"."Định danh Keyphrase
3","Định danh Keyphrase 4"."Định danh Keyphrase 5" ]
- Tính độ tương quan ngữ nghĩa giữa keyphrase và câu truy vấn Với mục tiêu là tìm
độ đo sự tương đồng( giông nhau) về ngữ nghĩa giữa các đỉnh keyphrase và giữa cácđỉnh quan hệ có trong hai đồ thị Tồn tại một phép chiếu bộ phận từ dé thị keyphrase Htới đồ thị keyphrase G nếu và chỉ nếu tồn tại một phép chiếu H’, một đồ thi keyphrasecon của H, tới G Mô hình lượng giá cho phép chiếu bộ phận chỉ phụ thược vào tậpđỉnh của H’ và được định nghĩa như phép chiếu Độ tương quan ngữ nghĩa giữa hai đồ thị.
Rel(H,G)=Max{v„(I) | II là phép chiếu bộ phận từ H tới G}
Trong đó: Một phép từ đồ thị keyphrase H=(KH,RH,EH) tới đồ thị keyphrase G=
(KG,RG,EG) là một cặp có thứ tự II=(f, g) của 2 ánh xạ f: RH->RG, g: KH-KG thỏa điều kiện: Don ánh, phép chiếu bảo toàn “quan hệ kề” giữa các đỉnh va ¡cung r c RH, B
ứ, f(r)) #0, k c KH, a(k, g(k)) Z0 Một mô hình lượng giá cho phép chiếu có trọng số
Trang 28[P|
idf (k) =log|————k———
1+|{d e D,k ed}|
Phan ánh mức độ quan trọng của keyphrase dựa vào vị trí xuất hiện của keyphrase(ip:
importance of Position)[9] Với w;: trọng số phản ánh độ quan trọng của phan nội dung
thứ ¡ trong cấu trúc tài liệu, n, là số lần xuất hiện của keyphrase k trong phần nội dungtương ứng với ràng buộc: w; € [0,1], 3)w¡=l.
» Win,
ip(k,d) = aya
i 7
Cho k, k € K, định nghĩa một quan hệ hai ngôi P trên K, gọi là quan hệ “tồn tại một
dẫn xuất từ k đến k` như sau P(k, k) khi và chỉ khi k=k’ hoặc tồn tại S= (s), ,s,) là daycác số nguyên c [1,t] (với t=lRkl sao cho: k ry) ky, ky to kạ, ,Kn- Tạp k Néu không có
bat ky lién két ngữ nghĩa nào giữa k va k’: a(k, k)=0 if notP(k, k), nguge lai nếu tồn
tại quan hệ từ k và k: a(k, k)= Max(V(k rg ky, ky rạ kạ, Kạ fon K)}
Trang 29CHUONG 3: THIẾT KE CƠ SO TRI THỨC VA XỬ LÝ CÂU TRUY VAN
3.1 Thuyết kế cơ sơ tri thức về kỹ thuật lập trình
3.1.1 Mô hình cơ sở kỹ thuật lập trình (semantic programming techniques base —
SPTB)
Như đã trình bày ở chương 2, phần mô hình ontology về kỹ thuật lập trình Mô
hình cơ sở kỹ thuật lập trình có nghĩa gồm mô hình cơ sở dữ liệu về kỹ thuật lập
trình(DB-Database), mô hình cơ sở tri thức mô của kỹ thuật lập trình(PT_ONTO) Với
mô hình trừ tượng PT_ONTO gồm 5 thành phan keyphrase, Lớp, quan hệ giữa
keyphrase va keyphrase, quan hệ giữa lớp và lớp, quan hệ giữa keyphrase và lớp Tiến
hành chuyên đôi thành các đối tượng cụ thê là các bảng, có các hàng cột, khóa chính
để lưu trữ lên máy tính và công cụ dé lưu trữ va quan lý dữ liệu là SQL Server Chỉ tiết
cụ thể về các thành phần trong DB và PT_ONTO được mô tả ở các mục phía dưới
3.1.1.1 Mô hình cơ sở dữ liệu về kỹ thuật lập trình (DB)
- Mô hình cơ sở dữ liệu lưu trữ thông tin về nhập môn lập trình gồm các thực thể như
sau:
+ Kiến thức( Knowledge): lưu trữ thông tin về tri thức về kỹ thuật lập trình,
gồm các thuộc tính về mã kiến thức (Knowledgeld) nhằm xác định cụ thể mỗikiến thức với nhau không có sự trùng lặp Mỗi mã kiến thức sẽ có định danh tên
phù hợp(KnowledgeName) để xác định kiến thức, sau đó để mô tả cụ thể về
tên gọi trên thì cần thuộc tính mô tả (Description), với mỗi kiến thức trên cần cóthuộc tính dé nói lên mối quan hệ một kiến thức thì có từ từ khoá nào mô tả lênkiến thức đó (RelatedkeywordId)
+ Loại kiến thức (KnowledgeType): nhằm mục đích phân biệt kiến thức thuộc
vào loại KN/DN hay quan hệ, tác vu gồm hai thuộc tính là mã loại kiến thức
(KnowledgeTypeld), xác định loại kiến thức, với mỗi mã loại kiến thức thì có
được gán một tên phù hợp (KnowleTypeName).
+ Môn học (Subject): tri thức được lưu trữ thì được trích ra từ môn học nhập
môn lập trình, cấu trúc dữ liệu và giải thuật gồm hai thuộc tính là mã môn học
(SubjectId), phân biệt các môn học với nhau, mỗi mã môn học sẽ có tên
(SubjectName) gọi khác nhau.
+ Các từ khóa liên quan(RelatedKeywords): mỗi kiến thức sẽ có các từ khoáliên quan, ví dụ kiến thứ về cấu trúc dữ liệu(data structure) thì các từ khoá liên
Trang 30quan như: stack, queue, hash table, sorting, gồm các thuộc tính là mã các từkhoá liên quan (Relatedkeywordld), nhằm phân biệt các từ kháo liên quan với
nhau trong hệ thống, mỗi mã sẽ được gắn tên tiếng việt(RelatedkeywordVie)
và tên tiếng anh (RelatiedkeywordEng) riêng biệt
+ Mối quan hệ từ khóa có liên quan (RelatedKeywordRelation): nhằm gắn kếtthông tin giữa kiến thức và các từ khoá liên quan với nhau, thực thể gồm haithuộc tính là mã kiến thức (Knowledgeld) và mã các từ khoá liên
quan(RelatedkeywordId).
+ Méi quan hệ giữa kiến thức và môn học (KnowledgeSubjectRelation): thể
hiện chỉ tiết kiến thức thuộc vào môn học gồm hai thuộc tính là mã kiến thức(Knowledgeld) và mã môn học (SubjectId).
+Mối quan hệ giữa kiến thức và loại kiến thức(KnowledgeKnowledgeTypeRelation) : tất cả kiến thức điều là khái niệm định
nghĩa, nhưng kiến thức có thé là có mối quan hệ với kiến thức khác hay cũng có
thể là một tác vụ nào đó của kiến thức kia, gồm hai thuộc tính mã kiến thức(Knowledgeld) va mã loại kiến thức (KnowledgeTypeld)
- Tổ chức cơ sở dữ liệu DB gồm ệ
+ Bảng Kiến thức (Knowledge): có khoá chính là Knowledgeld, và các thuộc tính :KnowledgeName, Relatedkeywordld, Description, Subjectld, KnowledgeTypeld,
KnowledgeTypeld | INT
được mô tả chi tiét ở bảng sau:
STT | Tên Thuộc tính Kiêu dữ liệu Khoá Cho Khoá
Trang 31STT | Tên Thuộc tính Kiểu dữ liệu Khoá Cho Khoá
+ Bảng Cac từ khoá liên quan: có khoá chính là Relatedkeywordld và thuộc tính tên
tiếng việt và tên tiếng anh
STT | Tên Thuộc tính Kiêu dữ liệu Khoá | Cho Khoá
+ Bang quan hệ giữa kiến thức va từ khoá: gồm có hai thuộc tính là mã kiến thức lay
từ bảng Kiến thức (Knowledge) và mã loại kiến thức từ bảng Loại kiến
Trang 32STT | Tên Thuộc tính Kiểu dữ liệu Khoá | Cho Khoá
+ Bảng Quan hệ giữa kiến thức và môn học: gồm hai thuộc tính là mã kiến thức lấy từ
bảng Kiến thức (Knowledge) và mã môn học từ bảng môn hoc(Subject)
STT | Tên Thuộc tính Kiéu dữ liệu | Khoá Cho phép | Khoá
chính NULL ngoai
1 Knowledgeld INT
2 Subjectld INT
+ Bảng Quan hệ giữa kiên thức va loại kiên thức: gôm hai thuộc tinh là mã kiên thức
lấy từ bảng Kiến thức (Knowledge) và mã môn học từ bảng loại kiến thức
Trang 333.1.1.2 Mô hình cơ sở tri thức của kỹ thuật lập trinh(PT_ONTO)
Tổ chức lưu trữ PT_ONTO (K,C, Rẹc, Rec, Rxk)
+ Bảng Từ khóa (Keyphrase): có khoá chính là Keyphraseld và thuộc tính mô tả từ khóa, danh sách các từ khóa liên quan.
STT | Tên Thuộc tính Kiêu dữ liệu Khoá | Cho Khoá
+ Bang quan hệ lớp va từ khoá: gôm có hai thuộc tinh là mã lớp từ khoá lây từ bang
Lớp từ khóa (KeyPhraseClass) và mã từ khóa lấy từ bảng Từ khóa(Keyphrase)
STT | Tên Thuộc tính Kiêu dữ liệu Khoá Cho Khoá
chính phép ngoại
NULL
1 KeyPhraseClassId INT
2 Keyphraseld INT
+ Bảng Lớp Từ khóa: có khoá chính là KeyPhraseClassId và thuộc tinh tên lớp.
STT | Tên Thuộc tính Kiéu dữ liệu Khoá | Cho Khoá
chính | phép ngoại
NULL
1 KeyPhraseClassId INT x
2 KeyPhraseClassName | NVARCHAR(1000)
+ Bảng Lop Quan Hệ(ClassRelation): có khoá chính là ClassRelationId và thuộc tính
mã lớp con và mã quan hệ giữa lớp và lớp.
STT | Tên Thuộc tính Kiêu dữ | Khoá Cho Khoá
liệu chính phép ngoại
NULL
1 ClassRelationId INT x
Trang 34+ Bang các Quan hệ từ khoa(KeyPhraseRelationship): có khoá chính là
KeyphraseRelationshipId và thuộc tính tên quan hệ và mô tả chỉ tiết
STT | Tên Thuộc tính Kiêu dữ liệu K_ | Cho Kho
ho | phép |á
a NUL | ngoa
ch |L i in
+ Bảng Mối Quan hệ từ khoá và khoá (KeyPhraseKeyPhraseRelation): có mã mối
quan hệ từ khoá và từ khoá là Sourceld , hai thuộc tính là mã quan hệ từ khoá lấy từbảng Quan hệ từ khóa (KeyphraseRelationship) và mã từ khóa lấy từ bảng từ khóa
(Keyphrase).
Trang 35STT | Tên Thuộc tính Kiêu dữ liệu Kh | Cho Kho
oá |phép |á chí |NUL |ngo
Hình 9 Mô hình cơ sở tri thức PT_ONTO lưu trên SQL server
3.1.2 Kết quả xây dung ontology cho kiến thức về kỹ thuật lập trình
Sau khi đã xây dựng môn hình cơ sở tri thức PT_ONTO trên cơ sở dữ liệt
p trình baoserver Tiến hành xây dựng bộ từ điển khái niệm thuật ngữ về kỹ thuật
gồm 506 khái niệm, 30 lớp các khái niệm, 3.579 mối quan hệ giữa khái niệm và kháiniệm.
Bên cạnh đó với tập hon 250 câu hỏi được thé hiện ở phần phụ lục câu hỏi truy van lànhững câu hỏi và câu trả lời kèm theo do chuyên gia cung cấp, cũng như thư thập trực
tiếp từ ý kiến của sinh viện học tại trường đại học công nghệ thông tin sau đó được rút
trích và đánh giá lại câu trả lời từ chuyên gia để đảm bảo với nội dung câu trả lời phù
hợp với nội dung câu hỏi.
3.2 Thuyết kế Module xử lý câu truy vấn
3.2.1 Xử lý câu truy vẫn
Trang 36Sau khi tổ chức lưu trữ kiến thức vào cơ sở dữ liệu PT_ONTO, tiến hành chuyềnhóa thành các đồ thị keyphrase lưu trữ thành các file semantic Tương tự đối với câutruy van cũng phải rút trích keyphrase đặc trưng theo từng câu hỏi ra, sau đó tiễn hành
tính độ tưng quan ngữ nghĩa để xem keyphare nào trong hệ thống có độ tương quan
cao nhất, sao đó truy xuất thông tin, trả lại kết quả ra giao diện Mô hình xử lý tổng
quát như sau:
Trang 37Xử lý tri thức.
3ï liêu về kế thud Tổ chức tr thức ấu diễn ngữ
Tài liệu về kỹ thuật E—=Db E—> Biểu diễn ngữ Rt trinh thông tin|
_ Xử ý „ Biểu diễn câu Sokhóp EY) Truyxuấtthông
câu truy van truy van tin
Hình 10 Mô hình tổng quát xử lý tìm kiếm trên cơ sở tri thức vẻ kỹ thuật lập trình.
Trên hình 10, phần xử lý câu truy vấn sẽ được chia thành quy ước ngôn ngữ đầu vào,
sẽ được trình bày ở mục 3.2.2 Phần biểu diễn câu truy vấn sẽ phân tách nội dung tìm
Trang 38kiếm, rút trích ra các từ, cụm từ( keyphrase) để so khớp với các keyphrase trongPT_ONTO, dò tìm các quan hệ ngữ nghĩa kèm theo, xây dựng đồ thị keyphrase biểudiễn câu truy vấn, sau đó xây dựng đồ thị biểu diễn câu truy vấn, chỉ tiết mô tả ở hình
10.
Câu truy vẫn Phân tách phần nội ——``Ï Phân tích và rút trích
dung muốn tìm kiếm [—v⁄} ra các từ, cụm từ
Hình 11 Đỗ thì biểu diễn câu truy vẫn
3.2.2 Cú pháp từng loại câu truy vẫn
- Cú pháp câu truy vấn khái niệm hoặc định nghĩa
%Define”,”knowledge”?
Nhập vào khái niệm hoặc định nghĩ cần tìm về kiến thức, giữa khái niệm hoặcđịnh nghĩa và kiến thức nối với nhau qua dấu “,” và kết thức đâu bằng dấu “?”.Luu ýkhông nhập khoản trắng, sử dụng tiếng việt không dấu
Ví dụ: Khái niệm mảng một chiều? > Define,mangmotchieu?
> mô tả quy trình sử lý, minh hoạt động thuật giải, viết thành thuật giải
- Câu truy vấn khái niệm và các quan hệ đi kèm
Trang 39- Câu truy vấn so sánh
“Compare”,“knowledgel”,”knowledge2”?
Nhập vào kiến thức thứ nhất, nhập kiến thức hai, kết thúc bằng dau “2”
Vi dụ: Sự khác nhau giữa Stack và Queue? > “Compare”,*stack”,”queue”?
- Câu hỏi truy vấn đạng liệt kê
“Listed”,”knowledge”?
Nhập vào nội dung cần tìm kiếm, giữa khái niệm hoặc định nghĩa và kiến thứcnối với nhau qua dau “,” và kết thức đâu bằng dấu “?”
Ví dụ: Các thành phần của một hệ thống máy tính gồm những thành phầnnào? Listed,thanhphanmaytinh?
Trang 40CHƯƠNG 4: CÀI ĐẶT - THU NGHIỆM
ứng dụng kỹ thuật lập trình AJAX Với AJAX, một trình duyệt, tạm gọi máy khác sẽ
liên lạc với máy chủ web và gửi yêu cầu để nhận được dữ liệu, Sau quá trình sử lý, tạo
ra sự thay đồi trang web, mà không cần phản tai lại toàn bộ trang web đó,
Công cụng lập trình là Microsoft Visual Studio Community 2015 Hỗ trợ việc
lập trình nhiều ngôn ngữ khách nhau từ C/C++,C#, cho đến F# Với phiên bản visualstudio 2015 có hỗ trợ code trên ngôn ngữ Python Khả năng gỡ réi( Debug) vô cùnghiệu quả và dé dang qua việc chạy câu lệnh và quan sát thay đổi của chương trình quacác biến, cách vận hành của mã Ngoài ra với giao diện dé dàng, gần gửi với người
dùng mới bat đầu thông qua việc kéo thả Cho đến người dùng chuyên nghiệp xây
dựng chuyên nghiệp Đặc biệt công cụ còn hỗ trợ phát triển ứng dụng desktop trênWindows Form hay Universal App Các ứng dụng mobile IOS và Android Xamarin.
Ứng dụng Web Form, ASP.NET MVCS
Ứng dụng được xây trên :
+ Máy tính ASUS K55A, chạy hệ điều hành windows 10 Pro
+Processor :Intel(R) Core i5-3210M CPU @ 2.50GHz
+RAM :8GB
+System: 64 bit
4.2 Giao diện ứng dụng
Hiện tại dé đáp nhu cầu tìm kiếm kiến thức về kỹ thuật lập trình với 4 dang câu hỏi
truy vấn khác nhau : KN/DN, loại câu hỏi khái niệm và các tác vụ, loại câu hỏi về sosánh, câu hỏi liệt kê Mỗi cau hỏi sẽ có yêu cầu đầu vào, kết quả thể hiện khác nhau
phù hợp với nội dung câu hỏi Giao diện tổng quan gồm 2 phan chính:
> Phan thứ nhat(input): yêu cầu đầu vào gồm các thông tin về loại câu truy vấn và