Môi trường phát triển

Một phần của tài liệu LUẬN VĂN: HỆ THỐNG HỌC THÍCH NGHI DỰA TRÊN KIẾN THỨC docx (Trang 40 - 49)

4. Cài đặt thử nghiệm

4.3.Môi trường phát triển

4.3.1. Apache

Hệ thống được xây dựng trên nền web với ngôn ngữ là PHP, chạy trên web server là Apache.

4.3.2. MySQL

4.3.3. Java

Các thao tác với mạng Bayes sẽ rất khó thực hiện với ngôn ngữ PHP. Tuy nhiên, công việc sẽ trở nên dễ dàng hơn nếu sử dụng ngôn ngữ Java.

4.3.4. Netica [6]

a. Giới thiệu Netica

Netica là một chương trình linh hoạt, nhanh, thân thiện mà bạn có thể sử dụng để tìm các mẫu hình trong dữ liệu, tạo các biểu đồ mã hoá kiến thứ hoặc mô tả các vấn đề quyết định, sử dụng những cái này để trả lời truy vấn và tìm quyết định tối ưu, và tạo ra các hệ chuyên gia xác suất. Nó là phù hợp cho các ứng dụng trong các lĩnh vực chuẩn đoán, dự đoán, phân tích quyết định, mô hình xác suất, quản lý rủi ro, xây dựng hệ chuyên gia. Netica được xây dựng và phát triển bởi tập đoàn phần mềm Norsys (Norsys Software Corp.). Netica là hệ thống phát triển mạng Bayes được sử dụng rộng rãi nhất hiện nay.

Để thực hiện các thao tác với mạng Bayes, chúng ta sử dụng các API có sẵn được cung cấp bởi Netica. Có thể nói, Netica là trái tim của hệ thống. Không có nó, hệ thống chỉ là các trang PHP bình thường. Nhưng chúng ta có thể tạo mạng Bayes, thực hiện các thao tác trên mạng với Netica.

Netica-J là một thư viện đầy đủ của các lớp Java để làm việc với mạng Bayes và đồ thị ảnh hưởng. Nó chứa các hàm để xây dựng, học từ dữ liệu, thay đổi, chuyển đổi, thực hiện kiểm tra, lưu và đọc các mạng. Nó có thể quản lý các “trường hợp” và một tập các trường hợp, và có thể kết nối trực tiếp với hầu hết phần mềm cơ sở dữ liệu.

Ở đây, khoá luận không trình bày đầy đủ về các API của Netica mà chỉ những phần được sử dụng trong hệ thống.

b. Các thao tác với mạng Bayes của chương trình

Nếu chỉ tính riêng các thao tác liên quan đến mạng Bayes thì hệ thống có hai cái sau:

 Thao tác đầu tiên là chúng ta cần tạo một mạng Bayes.

 Thao tác thứ hai là cho vào các xác suất likelihood, chúng ta cần tính các giá trị xác suất cho tất cả các node trong mạng.

Đầu tiên, chúng ta tạo tạo một mạng Bayes với giao diện đồ hoạ của Netica. Bạn không cần phải viết một dòng code nào cả. Các thao tác đều là kéo thả.

Khi người dùng thực hiện các bài test sẽ nhận được các kết quả đánh giá. Đó chính là các “bằng chứng” cho mạng Bayes. Công việc đặt ra là cập nhật lại các xác suất cho các node của mạng. Sau đây là một giả mã để thực hiện công việc đó:

// Khởi tạo ban đầu.

Environ env = new Environ(null);

Net net = new Net(new Streamer(<tên của file chứa mạng>)); while (<vẫn còn bằng chứng>) {

Tìm node tương ứng, giả sử đó là biến n. Node n;

Cho các xác suất vào mảng a. float[] a = new float[2]; // Tạo bằng chứng.

n.finding().enterLikelihood(a); }

// Dịch mạng, cập nhật các xác suất. net.compile();

// Thao tác với các xác suất vừa tính được. NodeList list = net.getNodes();

for (int i = 0; i < list.size(); i++) { Node node = list.getNode(i); float[] a = node.getBeliefs();

// Bạn có thể làm gì đó, ví dụ in ra file hoặc cập nhật cơ sở dữ liệu. }

env.finalize();

Chú ý rằng hiện tại chúng ta chỉ có thể sử dụng Netica với các ngôn ngữ Java và C, không làm được trên PHP. Tuy nhiên từ file PHP, chúng ta có thể thực hiện thao tác mà được viết bằng Java hoặc C với hàm EXEC.

Một chú ý nữa là các bằng chứng ở đây thuộc kiểu likelihood. Trong trường hợp này, chúng ta nhận thông tin không chắc chắn về giá trị của một số node cụ thể. Nó có thể từ một bộ đo không hoàn hảo, hoặc từ một người nào đó người mà không phải luôn luôn đúng. Giả sử chúng ta có một cái cảm biến để đo nhiệt độ, và khi nhiệt độ cao thì nó sẽ bật sáng. Thực tế chúng ta thấy rằng khi nhiệt độ thấp, cảm biến không bao giờ sáng; khi nhiệt độ trung bình nó sáng 10% trong các lần như thế; và khi nhiệt độ cao nó luôn luôn sáng. Nếu trong một thời điểm cụ thể, chúng ta quan sát cảm biến đang sáng, và muốn nhập vào các bằng chứng cho node Temperature, thì chúng ta ta sử dụng bằng chứng likelihood. Một bằng chứng likelihood bao gồm một giá trị xác suất cho mỗi trạng thái của node. Đối với ví dụ của chúng ta, bằng chứng likelihood sẽ là (0, 0.1, 1). Một hiểu nhầm phổ biến là nghĩ rằng bằng chứng likelihood là xác suất của trạng thái được cho bởi quan sát (trong trường hợp đó tổng các giá trị sẽ bằng 1, nhưng tổng các bằng chứng likelihood không yêu cầu bằng 1).

4.4. Cấu trúc và hoạt động của các trang web (adsbygoogle = window.adsbygoogle || []).push({});

Các trang web có cùng header và footer, được định nghĩa tương ứng trong các file header.php và footer.php.

Cấu trúc các trang php khác là: <? include ("header.php"); ?> <?

// Content of the page. ?>

<? include ("footer.php"); ?>

Trong file header.php, chúng ta sẽ khởi tạo session PHP vì hầu hết các trang đều sử dụng session. Việc khởi tạo cần đặt ở phần đầu tiên của file, đây là yêu cầu của PHP.

Trong file header.php, chúng ta cũng khởi tạo bố cục của các trang. Ngoài ra, chúng ta cũng kiểm tra xem người dùng đã đăng nhập chưa. Nếu người dùng đã đăng nhập thì đưa ra lời chào, còn nếu chưa thì đưa ra tuỳ chọn đăng nhập hoặc đăng ký.

Trong file footer.php, chúng ta sẽ kết thúc những gì đã khởi tạo trong trang header.php (ví dụ, thêm các thẻ đóng cho các thẻ mở tương ứng ở file header.php) để hoàn tất một trang web hoàn chỉnh.

Trang đầu tiên, mặc định là index.php. Trang này chỉ đưa ra một số thông tin giới thiệu về hệ thống.

Khi người dùng chọn đăng nhập thì sẽ được đưa đến trang login.php. Còn nếu người dùng chọn đăng ký thì sẽ được đưa đến trang register.php.

Khi người dùng đã có đủ thẩm quyền để truy cập hệ thống thì trang tiếp theo sẽ là list.php. Trang này liệt kê các khoá học khác nhau sẵn có trong hệ thống.

Sau khi đã vào được hệ thống, người dùng sẽ được đưa tới trang list.php. Trang này liệt kê các khoá học.

Sau khi người dùng chọn một khoá học thì sẽ đến trang course.php. Trang này trình bày mục lục của khoá học, các liên kết đến từng mục, liên kết đến trang questionaire.php để làm bài kiểm tra đánh giá kiến thức ban đầu, liên kết đến trang assignment.php để làm các bài tập đánh giá quá trình học.

Trang questionaire.php liệt kê các câu hỏi thuộc các khái niệm khác nhau. Dạng kiểm tra là trắc nghiệm.

Trang check.php dùng để đánh giá điểm bài kiểm tra và cập nhật lại các giá trị đạt được của người dùng.

4.5. Thử nghiệm 4.5.1. Dữ liệu thử nghiệm 4.5.1. Dữ liệu thử nghiệm

Chúng ta sẽ đi xây dựng bộ test cho người học có userid trong cơ sở dữ liệu là một số nào đó, ví dụ <userid>.

Việc kiểm thử gồm có hai loại: kiểm thử cho bài kiểm tra đánh giá ban đầu và kiểm thử cho việc làm các bài tập.

a. Kiểm thử bài kiểm tra đánh giá ban đầu

Với mỗi người học, để đánh giá trình độ kiến thức ban đầu, chúng ta có một file bằng chứng có tên là <userid>question.txt, và có định dạng như sau:

18:* 10:* 21:55 20:62 23:45 12:42 14:88 15:* 16:* 34:44 39:47 40:*

Mỗi dòng là một cặp node-bằng chứng cách nhau bằng dấu hai chấm. Ký tự * có nghĩa là node đó chưa có bằng chứng.

Để có thể thử nghiệm hệ thống, chúng ta sẽ đưa ra các bộ test tự động và bằng tay. Tự động có nghĩa là chúng ta sinh ngẫu nhiên các bằng chứng trong file bằng chứng, còn bằng tay có nghĩa là chúng ta tự mình nhập từng bằng chứng vào file bằng chứng.

b. Kiểm thử việc làm các bài tập

Để tạo bộ test cho việc làm các bài tập, chúng ta cũng có thể tạo một bộ test tương tự như cho việc đánh giá ban đầu. Tuy nhiên, chúng ta cũng có thể thay đổi bộ test một chút. Ví dụ, chúng ta có thể chỉ có một file bằng chứng với các bài tập, nhưng chúng ta không tính các xác suất một lần dựa vào toàn bộ file đó, mà chúng ta sẽ chia thành các giai đoạn. Như vậy sẽ có vẻ giống thực tế hơn: người dùng sẽ làm từng bài assigment một cách tuần tự, và các xác suất sẽ được cập nhật ngay sau mỗi khi người học làm xong.

Ví dụ chúng ta có file kiểm thử cho người dùng <userid>, có tên là <userid>.txt và có dạng như sau: 18:45 10:78 21:55 20:62 23:45 12:42 14:88 34:44 39:47

Mỗi dòng vẫn là các cặp node-bằng chứng. Tuy nhiên, các dòng không liên tục mà có khi cách nhau bởi một dòng trắng. Mỗi dòng trắng thể hiện kết thúc một giai đoạn. Trong file ví dụ trên, việc cập nhật kiến thức của người dùng sẽ được thực hiện bốn lần, sau khi người học làm xong các bài tập tương ứng trong bốn giai đoạn: (18, 10), (21, 20, 23), (12, 14), (34, 39).

4.5.2. Kết quả thử nghiệm

Bằng cách sử dụng công cụ Netica, chúng ta sẽ tính được giá trị xác suất của các node trong mạng để đánh giá kiến thức ban đầu của người học, và in ra file output dưới dạng như sau:

1: 85.0 2: 86.75

18: 85.56999 3: 79.121666 7: 47.68178 8: 48.145428 9: 50.923615 17: 48.876522 22: 85.0 5: 73.75 4: 85.0 (adsbygoogle = window.adsbygoogle || []).push({});

Mỗi dòng ở đây là một cặp node-xác suất cách nhau bằng dấu hai chấm. Giá trị xác suất để đo mức độ kiến thức của người học về node tương ứng.

4.5.3. Đánh giá kết quả

Hiện tại, các bảng xác suất có điều kiện cũng như các ngưỡng học đều dựa trên kinh nghiệm. Như vậy, nó có độ chính xác không cao lắm. Với các bộ test, chúng ta có thể điều chỉnh các giá trị này chính xác hơn.

Kết luận

Trong phần mở đầu, khoá luận đã nêu lên bốn mục tiêu cần đạt được. Sau đây là các kết quả tương ứng.

1. Tìm hiểu về E-learning. Khoá luận đã nêu ra được khái niệm, đặc trưng, lợi ích, lịch sử phát triển, xu thế của E-learning.

2. Tìm hiểu học thích nghi. Khoá luận đã nêu ra khái niệm của học thích nghi, cũng như các phương thức và kỹ thuật thích nghi. Cụ thể, khoá luận đã đưa ra câu trả lời cho các câu hỏi mà người đọc có thể đưa ra đó là: “Thích nghi cái gì?” (kiến thức, mục tiêu, nền tảng, kinh nghiệm, sở thích) và “Cái gì có thể được thích nghi?” (trình bày, trợ giúp điều hướng).

3. Nghiên cứu mô hình ACGS. Khoá luận đã đưa ra các thành phần cơ bản của mô hình, và cách áp dụng của mạng Bayes vào trong mô hình.

4. Phân tích thiết kế và cài đặt thử nghiệm mô hình ACGS. Từng thành phần, từng thao tác của hệ thống được khoá luận trình bày chi tiết, rõ ràng.

Tài liệu tham khảo

[1] Beaumont. User modeling in the interactive anatomy tutoring system. 1994. User Modeling and User-Adapted Interaction, volume 4, pages 21-45.

[2] Boyle & Encarnacion. MetaDoc: an adaptive hypertext documentation. 1994. User Modeling and User-Adapted Interaction, volume 4, pages 1-19.

[3] Brusilovsky & Millan. User models for adaptive hypermedia and adaptive educational systems. 2007. Lecture Notes in Computer Science, volume 4321, pages 3-53.

[4] Brusilovsky. A framework for intelligent knowledge sequencing and task sequencing. 1992. Lecture Notes In Computer Science, volume 608, pages 499-506.

[5] Brusilovsky. Methods and techniques of adaptive hypermedia. 1996. User Modeling and User-Adapted Interaction, volume 6, pages. 87-129.

[6] Netica. http://www.norsys.com/

[7] Thomas C. G. Basar: A framework for integrating agents in the World Wide Web. 1995. Computer, volume 28, pages 84-86.

[8] Trichet & Tchounikine. Modeling the knowledge-based components of a learning environment within the task/method paradigm. 1998. Lecture Notes in Computer Science, volume 1452, pages 56-65.

[9] Viet Anh Nguyen, Nguyen Viet Ha, Si Dam Ho, Hitoshi Sasaki. Bayesian network student model for adapting learning activity tasks in adaptive course generation system. 2008. Proceeding of Technology Enhanced Learning Conference 2008. [10] Viet Anh Nguyen, Si Dam Ho. ACGS: Adaptive Course Generation System- An

efficient approach to build E-learning course. 2006. Proceeding of 6th IEEE International Conference on Computers and Information Tecnology, 2006, p 259- 265, Seoul, Korea.

[11] Waterworth J. A. A pattern of island: exploring public information space in a private vehicle. 1996. Lecture Notes in Computer Science, volume 1077, pages 265-278. [12] Wikipedia. http://en.wikipedia.org/wiki/

Một phần của tài liệu LUẬN VĂN: HỆ THỐNG HỌC THÍCH NGHI DỰA TRÊN KIẾN THỨC docx (Trang 40 - 49)