1. Trang chủ
  2. » Luận Văn - Báo Cáo

xây dựng hệ chuyên gia tư vấn hướng nghiệp

18 736 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 18
Dung lượng 403,5 KB

Nội dung

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO BÀI TẬP LỚN HỆ CHUYÊN GIA ĐỀ TÀI: Xây dựng hệ chuyên gia tư vấn hướng nghiệp Gv hướng dẫn: Thầy Trần Hùng Cường Sinh viê

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

BÁO CÁO BÀI TẬP LỚN HỆ CHUYÊN GIA

ĐỀ TÀI: Xây dựng hệ chuyên gia tư vấn hướng nghiệp

Gv hướng dẫn: Thầy Trần Hùng Cường

Sinh viên thực hiện:

1 Vũ Thị Ngọc

2 Nguyễn Bá Trường Lớp: KHMT2 – K2

Hà Nội – 10/08/2010

Trang 2

Mục lục

Mục lục 2

Lời nói đầu 3

1 Kế hoạch thực hiện 4

2 Phân công công việc 4

II – Phân tích bài toán 5

1 Thực trạng 5

a) Tư vấn hướng nghiệp là gì? 5

b) Các hoạt động trong việc tư vấn hướng nghiệp 5

2 Mục đích 5

3 Cách làm 5

III – Thiết kế chương trình 7

1 Cấu trúc dữ liệu và cách biểu diễn các trạng thái của bài toán 7

2 Các thuật toán được sử dụng 8

a) Thuật toán Suy diễn lùi 8

b) Thuận toán tính toán giá trị nút kết luận của 1 luật 10

c) Thuật toán giải thích lời khuyên khi người dùng nhấn nút “Giải thích” 11

3 Ngôn ngữ được sử dụng 13

III - Một số giao diện và kết quả chạy chương trình 14

1 Giao diện chính 14

2 Giao diện kết quả 14

3 Giao diện xem giải thích 15

4 Giao diện quản lý cơ sở tri thức 16

IV – Tài liệu tham khảo 18

Trang 3

Lời nói đầu

Nhà trường, gia đình và xã hội luôn coi việc hỗ trợ cho lớp trẻ hướng nghiệp, là một nhiệm vụ quan trọng trong sự nghiệp giáo dục Tuy nhiên, trách nhiệm lớn lao đó không thể thay thế cho nội lực chủ quan của người muốn hướng nghiệp

Bài toán hướng nghiệp cũng như mọi bài toán đường đời khác: Sai một ly,

đi cả dặm, nhỡ cả tiền đồ và sự nghiệp! Nhiều khi phải “làm lại từ đầu”, gây biết bao lãng phí cho chính mình, gia đình, nhà trường và xã hội

Nhằm giải quyết bài toán trên và để củng cố kiến thức của môn học hệ chuyên gia, cũng như rèn luyện kỹ năng lập trình, nhóm chúng em đã chọn đề tài

“Xây dựng hệ chuyên gia tư vấn hướng nghiệp”

Chúng em xin chân thành cảm ơn thầy Trần Hùng Cường đã tạo điều kiện cho chúng em hoàn thành bài tập lớn này

Chương trình còn nhiều thiếu sót, chúng em mong nhận được sự đóng góp của thầy và các bạn để chúng em hoàn thiện chương trình hơn

Hà Nội, tháng 10 năm 2010

Nhóm sinh viên thực hiện

Vũ Thị Ngọc Nguyễn Bá Trường

Trang 4

I - Phân công công việc

1 Kế hoạch thực hiện.

Sau khi nhận đề tài, nhóm đã lên kế hoạch thực hiện như sau:

a) Thu thập tài liệu

b) Nghiên cứu tài liệu

c) Lập trình

d) Viết báo cáo

Bước thu thập tài liệu được thực hiện ngay khi nhận đề tài Sau 1 hồi tìm kiếm các tài liệu và các nguồn tài nguyên trên mạng, 2 thành viên bắt đầu nghiên cứu các tài liệu thu thập được Quá trình thu thập tài liệu và nghiên cứu tài liệu sẽ được thực hiện trong vòng 1 tuần

Sau khi nghiên cứu và tranh luận, nhóm đã hiểu được ý tưởng và sẽ bắt tay vào lập trình Vì nhóm chỉ có 2 thành viên nên mọi công việc sẽ đều làm theo nhóm Việc lập trình cũng được thực hiện bởi cả 2 thành viên để cố gắng tránh mọi sai sót Sau khi lập trình và test thử xong nhóm bắt đầu viết báo cáo Giai đoạn lập trình và viết báo cáo, nhóm bố trí kế hoạch thực hiện trong 2 tuần

2 Phân công công việc.

Chi tiết công việc cùng tiến độ được đề cập trong bảng sau:

Thu thập tài liệu Nguyễn Bá Trường

Vũ Thị Ngọc

Đã hoàn thành

Nghiên cứu tài liệu Nguyễn Bá Trường

Vũ Thị Ngọc

Đã hoàn thành

Lập trình Nguyễn Bá Trường

Vũ Thị Ngọc

Đã hoàn thành

Viết báo cáo Nguyễn Bá Trường

Vũ Thị Ngọc

Đã hoàn thành

Trang 5

II – Phân tích bài toán

1 Thực trạng

a) Tư vấn hướng nghiệp là gì?

Hướng nghiệp là các hoạt động nhằm hỗ trợ mọi cá nhân chọn lựa và phát triển chuyên môn nghề nghiệp phù hợp nhất với khả năng của cá nhân

Do quan hệ hữu cơ giữa hướng nghiệp và tự hướng nghiệp, nên từ HƯỚNG NGHIỆP dùng ở đây tùy theo văn cảnh mà được hiểu:

- Hoặc là sự hỗ trợ bên ngoài (mang tính chất tư vấn, không áp đặt, chỉ gợi suy nghĩ để tìm tòi)

- Hoặc là sự lựa chọn đi kèm với nỗ lực của bản thân để tự hướng nghiệp theo quyết định riêng

Tư vấn hướng nghiệp là tư vấn về sự hỗ trợ khách quan và cả cách nỗ lực chủ quan trong quá trình hướng nghiệp Nó có lợi cho người đang cần tư vấn hướng nghiệp và cũng lợi cho cả người cần dẫn dắt người khác hướng nghiệp (như phụ huynh, thầy cô, bạn bè…)

b) Các hoạt động trong việc tư vấn hướng nghiệp.

- Nói chuyện, giao lưu tư vấn

- Làm trắc nghiệm hướng nghiệp

2 Mục đích

Sau khi tìm hiểu thực tế, nhóm quyết định làm theo hình thức trắc nghiệm hướng nghiệp Như vậy chương trình sẽ phải hỏi người sử dụng 1 số thông tin liên quan tới người sử dụng Sau đó dựa vào câu trả lời của người sử dụng và tập luật chương trình phải đưa ra được lời khuyên cho người sử dụng Phải giải thích được vì sao lại đưa ra lời khuyên như thế

3 Cách làm

Trang 6

Qua tìm hiểu, nhóm rút ra cách xây dựng hệ chuyên gia tư vấn hướng nghiệp như sau

Đầu tiên phải xây dựng được 1 tập luật để làm cơ sở tri thức cho chương trình

Sau đó phải cài đặt 1 thuật toán suy diễn (suy diễn tiến hoặc suy diễn lùi) để thao tác trên tập luật đó và đưa ra lời khuyên Thuật toán này đóng vai trò là

mô tơ suy diễn

Như vậy có 2 bước chính cần làm đó là:

- Xây dựng cơ sở tri thức

- Xây dựng mô tơ suy diễn (Cài đặt thuật toán suy diễn – cụ thể là suy diễn lùi)

Trang 7

III – Thiết kế chương trình

1 Cấu trúc dữ liệu và cách biểu diễn các trạng thái của bài toán.

Bài toán phải thao tác với các đối tượng nút và luật (node and rule) vì thế nhóm xây dựng một số cấu trúc dữ liệu (là các class) và cách biểu diễn các thông tin như sau:

Một nút sẽ có dạng:

e1 Bạn đã tốt nghiệp phổ thông trung học

trong đó e1 là tên của nút và “Bạn đã tốt nghiệp phổ thông trung học” là giá trị text của nút Để mô tả nút này nhóm sử dụng 1 class là Node với thuộc tính name là tên node, thuộc tính text là giá trị text của node và thuộc tính value là giá trị của node (đúng/sai):

Một luật sẽ có dạng:

r1 ~e2&~e3&~e4=>c9

trong đó r1 là tên của luật và ~e2&~e3&~e4 là giả thiết còn c9 là kết luận của

luật Để mô tả 1 luật nhóm sử dụng 1 class là Rule với thuộc tính name là tên

Trang 8

của luật, thuộc tính suppose là giả thiết của luật và thuộc tính conclusion là kết luận của luật:

Để biết 1 node được chọn tại rule nào, nhóm đã xây dựng class Road để lưu thông tin 2 đối tượng trên

Vì lượng dữ liệu khá nhỏ nên 2 tập nút và luật được lưu trong 2 file text lần

lượt đặt tên là “nodes.txt” và “rule.txt” và đặt tại cùng thư mục chứa chương

trình

2 Các thuật toán được sử dụng.

a) Thuật toán Suy diễn lùi.

Đây là thuật toán quan trọng nhất trong chương trình Suy diễn lùi là quá trình xuất phát từ sự kiện cần chứng minh và thay vào đó là những sự kiện ở vế

Trang 9

trái của 1 luật có vế phải là sự kiện cần chứng minh Quá trình này được thực hiện cho đến khi đưa về các sự kiện là tập sự kiện con của tập sự kiện giả thiết Thuật toán Suy diễn lùi được cài đặt bằng hàm Process()

private void Process()

{

try

{

//Voi moi ket luan c, ta duyet qua no

for ( int i = conclusionNodeList.Count - 1; i >= 0;i ) {

parentNode = conclusionNodeList[i];

for ( int j = 0; j < ruleList.Count; j++)

{

// Cho no vao tap dang xet

tempNodeList.Add(conclusionNodeList[i]);

// Sau do ta di tim luat sinh ra ket luan tren

va cho vao tap Vet(roadList)

ProcessNode(conclusionNodeList[i], j);

// Kiem tra xem node nay co value = 1 chua

if (conclusionNodeList[i].Value == 1)

{

string str = "Theo tôi, " + conclusionNodeList[i].Text.ToLower();

WhyForm whyForm = new WhyForm(str);

whyForm.ShowDialog();

isHasAnswer = true ;

break ;

}

}

if (isHasAnswer)

{

break ;

}

}

if (isHasAnswer == false )

{

string str = "Không khớp luật nào trong cơ sở tri thức!";

WhyForm whyForm = new WhyForm(str);

whyForm.ShowDialog();

}

Init();

}

catch (Exception ex)

{

ShowError(ex.Message);

}

}

Trang 10

b) Thuận toán tính toán giá trị nút kết luận của 1 luật.

Thuật toán này sẽ tính giá trị của nút kết luận của 1 luật khi các giả thiết của luật đó là đã biết Được cài đặt bằng hàm CalculateConclusionValue và thao tác trên các phép toán &,|,~ của tập luật

private int CalculateConclusionValue(Road road)

{

string suppose = road.Rule.Suppose;

for ( int i = 0; i < nodeList.Count; i++)

{

suppose = suppose.Replace(nodeList[i].Name, nodeList[i].Value.ToString());

}

StringBuilder sb = new StringBuilder(suppose);

//xu ly dau ~

for ( int i = 0; i < sb.Length - 1; i++)

{

if (sb[i].Equals( '~' ) && sb[i + 1].Equals( '0' ))

{

sb[i + 1] = '1' ;

}

else

if (sb[i].Equals( '~' ) && sb[i + 1].Equals( '1' )) {

sb[i + 1] = '0' ;

}

}

sb = sb.Replace( "~" , "" );

//xu ly dau & |

while (sb.Length !=1)

{

if (sb[1].Equals( '&' ))

{

if (sb[0].Equals( '1' ) && sb[2].Equals( '1' ))

{

sb.Replace( "1&1" , "1" );

Trang 11

}

else

{

sb.Replace(sb[0].ToString() + sb[1].ToString() + sb[2].ToString(), "0" );

}

}

else //chac chan la dau |

{

if (sb[0].Equals( '0' ) && sb[2].Equals( '0' ))

{

sb.Replace( "0|0" , "0" );

}

else

{

sb.Replace(sb[0].ToString() + sb[1].ToString() + sb[2].ToString(), "1" );

}

}

}

return Int32.Parse(sb.ToString());

}

Thuật toán này làm nhiệm vụ hiển thị lời giải thích cho người dùng biết dựa vào đâu mà đưa ra lời khuyên như vậy Nó sẽ lấy thông tin được lưu trong biến roadList (là 1 list để lưu lại các rule đã xét) để đưa ra câu trả lời Sau đó sử dụng các node trong nodeList để đưa ra câu nói thân thiện với người sử dụng

hơn (Ví dụ thay vì chỉ nói là “Theo luật r1 ~e2&~e3&~e4, bạn nên đi làm” thì sẽ nói là “Theo luật r1, nếu không phải bạn có IQ cao và không phải bạn

tốt nghiệp THPT và không phải bạn có năng khiếu thì bạn nên đi làm”

Thuật toán này được cài đặt bằng hàm ShowWhy()

private void ShowWhy()

{

string str = string Empty;

Trang 12

for ( int i = roadListTemp.Count - 1; i >= 0; i )

{

if (roadListTemp[i].Node.Value == 1)

{

str += "Theo luật " + roadListTemp[i].Rule.Name + " thì nếu " + roadListTemp[i].Rule.Suppose + ",

" + roadListTemp[i].Node.Text + Environment.NewLine;

}

}

//thay cac node name bang node text

for ( int i = 0; i < nodeList.Count; i++)

{

str = str.Replace(nodeList[i].Name, nodeList[i].Text.ToLower());

}

//thay dau & thanh chu va

str = str.Replace( "&" , " và " );

//thay dấu | thành chữ hoặc

str = str.Replace( "|" , " hoặc " );

//thay dấu ~ thành không phải

str = str.Replace( "~" , " không phải " );

if (! string IsNullOrEmpty(str))

{

MessageBox.Show(str, "Giải thích" ,MessageBoxButtons.OK, MessageBoxIcon.Question);

}

else

{

MessageBox.Show( "Bạn chưa được tư vấn nên tôi không thể giải thích cho bạn được." , "Giải thích" ,

MessageBoxButtons.OK, MessageBoxIcon.Information); }

}

3 Ngôn ngữ được sử dụng.

Trang 13

Nhóm nhận thấy ngôn ngữ C# là một ngôn ngữ rất dễ học, gần với ngôn ngữ tự nhiên và hơn nữa đang là ngôn ngữ được học trong kì VII, vì thế nhóm

đã quyết định sử dụng ngôn ngữ lập trình C# để xây dựng chương trình

Trang 14

III - Một số giao diện và kết quả chạy chương trình.

1 Giao diện chính.

Trang 15

2 Giao diện kết quả.

Trang 16

3 Giao diện xem giải thích.

Trang 17

4 Giao diện quản lý cơ sở tri thức.

Trang 18

IV – Tài liệu tham khảo

1 Giáo trình Hệ Chuyên Gia

2 Các hệ cơ sở tri thức.

3 http://en.wikipedia.org/wiki/Expert_system

4 http://www.cs.nott.ac.uk/~sxp/ES3/sld001.htm

Ngày đăng: 05/02/2015, 15:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w