Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 27 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
27
Dung lượng
348 KB
File đính kèm
CHUONGTRINH.rar
(458 KB)
Nội dung
MỤC LỤC GIỚI THIỆU PHẦN 1: CƠ SỞ LÝ THUYẾT PHẦN CÀI ĐẶT VÀ DEMO CHƯƠNG TRÌNH 18 TÀI LIỆU THAM KHẢO 27 Tiểu luận môn học Công nghệ tri thức GIỚI THIỆU Trong trình sử dụng tiếng Việt, việc phân biệt từ từ Hán-Việt từ Việt giúp cho người đọc dễ dàng hiểu nghĩa câu văn Tuy nhiên, việc nhận biết từ Hán-Việt điều đơn giản với đa số người đọc Tác giả Phan Ngọc đưa số mẹo đơn giản để giúp nhận biết từ HánViệt cách dễ dàng Các mẹo trình bày thơng qua sách “Mẹo giải nghĩa từ Hán - Việt chữa lỗi tả, NXB Thanh Niên năm 2000 Nhằm nâng cao việc áp dụng kiến thức học môn học Cơng nghệ tri thức, nhóm chúng em chọn đề tài “Xây dựng chương trình để nhận biết từ nhập vào có phải từ Hán-Việt hay khơng? Dựa vào luật (mẹo tả ) GS Phan Ngọc” Đề tài xây dựng chương trình cho phép người dùng kiểm tra từ có phải từ HánViệt hay không Nội dung đề tài chia làm phần sau đây: I Nghiên cứu sở lý thuyết để xây dựng đề tài II Phân tích tốn để xây dựng chương trình III Demo chương trình Trên sở lý thuyết học được, nghiên cứu tài liệu tham khảo giúp đỡ thành viên lớp, xin tổng kết báo cáo đề tài Kính mong góp ý chân thành quý thầy anh chị Chúng xin chân thành cảm ơn bảo tận tình PGS.TS Phan Huy Khánh giúp chúng tơi hồn thành tốt đề tài Nhóm làm đề tài: Đinh Thị Thiên Anh Lê Hồng Dũng Lê Thị Thu Hà Trang Tiểu luận môn học Công nghệ tri thức PHẦN 1: CƠ SỞ LÝ THUYẾT Phát biểu tốn Xây dựng chương trình để nhận biết từ nhập vào có phải từ Hán-Việt hay khơng? Dựa vào luật (mẹo tả ) GS Phan Ngọc Ví dụ “quốc gia”, “tổ quốc”… từ Hán-Việt, nhiên “nhà nước”, “đất nước”… từ Hán-Việt (từ Việt) Cơ sở lý thuyết liên quan Nhằm mục đích giải toán phải dựa lý thuyết logic vị từ cách sử dụng chúng Prolog Trong phần vài nghiên cứu số nội dung 2.1 Xây dựng kiện ngơn ngữ Prolog (7 -11 – giáo trình Prolog) Để xây dựng kiện chương trình Prolog, ta lấy ví dụ gia hệ sau: (a) (b) Tom Mary parent Bill Ann Liz Sue Tom Bill Jim Hình Cây gia hệ Trong câu gia hệ (a), nút người, mũi tên quan hệ cha mẹ (parent of) Sự kiện Tom cha mẹ Bill viết thành vị từ Prolog sau: Parent(Tom, Bill) Ở đây, vị từ parent có hai đối số Tom Bill Người ta biểu diễn vị tự hình (b) trên: nút gốclà tên vị từ, nút lại nút đối Trang Tiểu luận môn học Công nghệ tri thức Trong gia hệ trên, ta tiếp tục viết vị từ khác để nhận chương trình Prolog gồm vị từ sau: Parent(Mary, Bill) Parent(Tom, Bill) Parent(Tom, Liz) Parent(Bill, Ann) Parent(Bill, Sue) Parent(Sue, Jim) Sau hệ thống Prolog nhận chương trình này, thực chất sở liệu, người ta đặt câu hỏi liên quan đến quan hệ Parent Ví dụ câu hỏi Bill có phải cha mẹ Sue gõ vào hệ thống đối thoại Prolog (dấu nhắc lệnh) sau: ? – parent(Bill,Sue) Sau tìm thấy kiện chương trình, Prolog trả lời: Yes Ta tiếp tục đặt câu hỏi khác: ? – parent(Liz,Sue) No Bởi Prolog khơng tìm thấy kiện Liz người mẹ Sue chương trình Tương tự, Prolog trả lời No cho kiện: ? – parent(Tom,Ben) Vì tên Ben chưa đưa vào chương trình Ta tiếp tục đặt câu hỏi thú vị khác Chẳng hạn cha (hay mẹ) Liz? ? – parent(X,Liz) Lần này, trước đưa câu trả lời Yes No, Prolog đưa giá trị X làm thoả mãn câu hỏi đây: X=tom Để biết Bill ta cần viết: ? – parent(Bill,x) Với câu hỏi này, Prolog có hai câu trả lời, là: X=ann ->; Để biết câu trả lời tiếp theo, hầu hết cài đặt Prolog, người sử dụng phải gõ vào dấu chấm phẩy(;) sau ->: Trang Tiểu luận môn học Công nghệ tri thức X=Sue Nếu hết phương án trả lời mà tiếp tục gõ dấu (;), Prolog trả lời No, ngược lại trả lời Yes Người sử dụng đặt câu hỏi tổng quát hơn, chẳng hạn: cha mẹ ai? Nói cách khác, cần tìm X Y cho X cha mẹ Y Ta viết sau: ?- parent(X, Y) Sau trả lời câu hỏi đầu tiên, Prolog tìm kiếm cặp cha mẹ - thoả mãn hiển thị kết chừng người sử dụng yêu cầu khơng cịn kết lời giải (kết thúc chữ Yes): X = Mary Y = Bill ->; X = Tom Y = Bill ->; X = Tom Y = Liz ->; X = Bill Y = Ann ->; X = Bill Y = Sue ->; X = Sue Y = Jim ->; Tuỳ theo cài đặt Prolog, người sử dụng gõ vào dấu chấm (.) Enter để chấm dứt chừng luồng trả lời Ta tiếp tục đưa câu hỏi phức tạp khác, chẳng hạn ông (bà) Jim? Thực tế quan hệ ông – bà chưa định nghĩa, cần phân tách câu hỏi thành hai phần sơ cấp hơn: Ai cha (mẹ) Jim? Giả sử có tên Y Ai cha mẹ Y? Giả sử có tên X Trang Tiểu luận môn học Công nghệ tri thức X parent Y grandparent parent Jim Hình Quan hệ ông bà tập hợp từ hai quan hệ cha mẹ Lúc này, ta có ta viết chương trình Prolog sau: ?- parent(Y, jim), parent(X, Y) Prolog trả lời: Y=Sue X=Bill Yes Câu hỏi tương ứng với câu hỏi: Tìm X Y thoả mãn: Parent(Y, Jim) Và Parent(X, Y) Nếu thay đổi thứ tự hai thành phần câu hỏi, nghĩa logic không thay đổi Prolog trả lời kết (có thể thay đổi thứ tự), nghĩa ta đặt câu hỏi sau: ?- parent(X, Y), parent(Y, Jim) X = Bill Y = Sue Yes Bây ta đặt câu hỏi cháu Tom? ?- parent(Tom, X), parent(X, Y) X = Bill Y = Ann ->; X = Bill Y = Sue ->; No Trang Tiểu luận môn học Công nghệ tri thức Một câu hỏi khác sau: Ann Sue có cha mẹ khơng? nghĩa ta diễn đạt thành hai gia đoạn: Tìm X cha mẹ Ann X tìm thấy có cha mẹ Sue không? Câu hỏi trả lời Prolog sau: ?- parent(X, Ann), parent(X, Sue) X= Bill Trong Prolog, câu hỏi gọi đích (goal) cần phải thoả mãn Mỗi câu hỏi đặt sở liệu tương ứng với nhiều đích Chẳng hạn dãy đích: parent(X, Ann), parent(X, Sue) Tương ứng với câu hỏi phép hội hai mệnh đề: X cha mẹ Ann, X cha mẹ Sue Nếu câu trả lời Yes, có nghĩa đích thoả mãn, hay thành cơng Trong trường hợp ngược lại, câu trả lư No, có nghĩa đích khơng thoả mãn, hay thất bại Nếu có nhiều câu trả lời cho câu hỏi, Prolog đưa câu trả lời chờ yêu cầu người sử dụng tiếp tục 2.2 Xây dựng luật ngôn ngữ Prolog (Trang 11-22 giáo trình Prolog) 2.2.1 Định nghĩa luật Từ chương trình gia hệ đây, ta dễ dàng bổ sung thông tin khác, chẳng hạn bổ sung kiện giới tính (nam, nữ) người nêu tên quan hệ parent sau: woman(Mary) man(Tom) man(Bill) woman(Liz) woman(Sue) woman(Ann) man(Jim) Ta định nghĩa quan hệ đơn woman man chúng liên quan đến đối tượng Còn quan hệ parent nhị phân, liên quan đến cặp đối tượng Như vậy, quan hệ đơn dùng để thiết lập thuộc tính đối tượng Mệnh đề: Trang Tiểu luận môn học Công nghệ tri thức woman(Mary) giải thích: Mary nữ Tuy nhiên, ta sử dụng quan hệ nhị phận để định nghĩa giới tính: sex(Mary, sex(Tom, sex(Bill, female) female) female) Bây đưa vào quan hệ child, đối ngược với parent sau: child(Liz, Tom) Từ đó, ta định nghĩa luật sau: child(X, Y) :- parent(X, Y) Luật biểu diễn là: Với X Y, Y X X cha (hay mẹ) Y Với X Y, X cha (hay mẹ) Y Y X Có khác kiện luật Một kiện, chẳng hạn: parent(Tom, Liz) điều ln đúng, khơng có điều kiện ràng buộc Trong đó, luật liên quan đến thuộc tính thoả mãn số điều kiện thoả mãn Mỗi luật bao gồm hai phần: • Phần bên phải điều kiện, gọi thân luật, • Phần bên trái kết luận, cịn gọi đầu luật Nếu điều kiện parent(X, Y) đúng, child(X, Y) hậu logic phép suy luận child(Y, X) Y) đầu :- parent(X, thân Câu hỏi sau giải thích cách Prolog sử dụng luật: Liz có phải Tom không? Trang Tiểu luận môn học Công nghệ tri thức ?- child(Liz, Tom) Thực tế, chương trình khơng có kiện liên quan đến con, mà ta phải tìm cách áp dụng luật Luật dạng tổng quát với đối tượng X Y bất kỳ, mà ta lại cần đối tượng cụ thể Liz Tom Ta cần sử dụng phép cách gán giá trị Liz cho biến Y Tom cho biến X Người ta biến X Y ràng buộc: X = Tom Và Y = Liz Lúc này, phần điều kiện có giá trị parent(Tom, Liz) trở thành đích (sub goal) để Prolog thay cho đích child(Liz, Tim) Tuy nhiên, đích thoả mãn có giá trị Yes kiện thiết lập chương trình Sau đây, ta tiếp tục bổ sung quan hệ Quan hệ mẹ mother định nghĩa sau (chú ý dấu phẩy (,) phép hội hay phép logic): mother(X, Y) :- parent(X, Y), woman(X) hiểu là: Với X Y, X mẹ Y X cha(hay mẹ) Y X nữ Đồ thị sau minh hoạ việc định nghĩa quan hệ child, mother grandparent sử dụng quan hệ khác: Trong đồ thị, người ta qui ước rằng: nút tương ứng với đối tượng (là đối quan hệ) Các cung nối nút tương ứng với quan hệ nhị phân, định hướng từ đối thứ đến đối thứ quan hệ X parent X parent child Y woman mother Y X parent Y grandparent parent Jim Hình Định nghĩa quan hệ child, mother grandparent từ quan hệ parent Trang Tiểu luận môn học Công nghệ tri thức Một quan hệ đơn biểu diễn tên quan hệ tương ứng với nhãn đối tượng Các quan hệ cần định nghĩa biểu diễn cung có nét đứt Mỗi đồ thị giải thích sau: Nếu quan hệ cung có nét liền thoả mãn, quan hệ biểu diễn cung có nét đứt thoả mãn Như vậy, quan hệ ông – bà grandparent viết sau: Grandparent(X, Z) :- parent(X, Y), parent(Y, Z) Để thuận tiện cho việc đọc chương trình Prolog, ta viết luật nhiều dòng, dòng phần đầu luật, dòng phần thân luật, đích dịng phân biệt Bây quan hệ grandparent viết lại sau: Grandparent(X, Z) :- parent(X, Y), parent(Y, Z) Ta tiếp tục định nghĩa quan hệ chị em gái sister sau: Với X Y, X chị em gái Y (1) X Y có cha (cùng mẹ), (2) X nữ sister(X, Y) :- parent(Z, X), parent(Z, Y), woman(X) X parent parent Jim Y woman sister Hình Định nghĩa quan hệ chị em gái Chú ý cách giải thích điều kiện X Y có cha mẹ: Z phải cha mẹ X, Z phải cha mẹ Y Hay nói cách khác là: Z1 cha mẹ X, Z2 cha mẹ Y, Z1 đồng với Z2 Ann nữ, Ann Sue cha mẹ nên Ann chị em gái Sue, ta có: Trang 10 Tiểu luận môn học Công nghệ tri thức X tổ tiên Z X cha mẹ Z ancestor(X, Z):parent(X, Z) Định nghĩa luật (tổ tiên gián tiếp) phức tạp hơn, trìng Prolog trở nên dài dòng hơn, mở rộng mức tổ tiên hậu duệ hình Kể luật 1, ta có tổ tiên định nghĩa sau: ancestor(X, Z):- %luật định nghĩa tổ tiên trực tiếp parent(X, Z) ancestor(X, Z):- % luật 2: tổ tiên gián tiếp ông bà (tam đại) parent(X, Y), parent(Y, Z) ancestor(X, Z):- % tổ tiên gián tiếp cố ông cố bà (tứ đại) parent(X, Y1), parent(Y1, Y2), parent(Y2, Z) ancestor(X, Z):- % ngũ đại đồng đường parent(X, Y1), parent(Y1, Y2), parent(Y2, Y3), parent(Y3, Z) Trang 13 Tiểu luận môn học Công nghệ tri thức X parent X ancestor parent Y parent Y1 parent parent X Y ancestor Y1 parent Y2 parent ancestor Y2 parent Z Z parent Z Hình Các cặp tổ tiên hậu duệ gián tiếp mức khác Tuy nhiên, tồn cách định nghĩa tổ tiên gián tiếp mức nhờ phép đệ quy sau: Với X Z, X tổ tiên Z tồn Y cho (1) X cha mẹ Y (2) Y tổ tiên Z ancestor(X, Z) :- parent(X, Z) ancestor(X, Z) :- parent(X, Y), ancestor(Y, Z) Trang 14 Tiểu luận môn học Công nghệ tri thức ancestor X Y Z ancestor Hình Dạng đệ qui quan hệ tổ tiên ?- ancestor(Mary, X) X = Jim ->; X = Ann ->; X = Sue ->; X = bill Yes Trong Prolog, hầu hết chương trình phức tạp sử dụng đệ quy, đệ quy khả mạnh Prolog Cho đến lúc này, ta định nghĩa nhiều quan hệ khác (parent, woman, man, grandparent, child, sister, mother, ancestor) Ta thấy quan hệ tương ứng với mệnh đề, nhiên, quan hệ ancestor lại có hai mệnh đề Người ta nói mệnh đề liên quan đến quan hệ ancestor Trong trường hợp tất mệnh đề liên quan đến quan hệ, người ta nhận thủ tục 2.3 Cấu trúc xử lý danh sách Prolog Danh sách cấu trúc đơn giản thuận tiện Prolog, tạo mơi trường lập trình thuận tiện prolog Để giải tốn bán vé tàu prolog nghiên cứu số khái niệm prolog 2.3.1 Biểu diễn danh sách Danh sách kiểu liệu đơn giản dễ biểu diễn Danh sách phần từ gồm anne, tennis, tom, skies biểu diễn thành danh sách sau: [anne, 2.3.2 tennis, tom, skies] Một số vị từ xử lý danh sách prolog SWI – Prolog có sẵn số vị từ xử lý danh sách sau: Vị từ append(List1, Ý nghĩa Ghép hai danh sách List1 List2 thành List3 Trang 15 Tiểu luận môn học Công nghệ tri thức List2, List3) member(Elem,List) Kiểm tra Elem có phải phần tử danh sách List hay khơng nextto(X,Y,List) Kiểm tra phần tử Y có đứng sau phần tử X danh sách List hay khơng delete(List1, Elem, List2) Xố List1 phần tử có Elem trả kết List2 Select(Elem, List, Lấy phần tử Elem khỏi danh sách List để trả phần Reset) tử lại Rest, dùng để chèn phần tử vào danh sách nth0(Index, Elem) List, Kiểm tra phần tử thứ Index (tính từ 0) danh sách List có nth1(Index, Elem) List, Kiểm tra phần tử thứ Index (tính từ 1) danh sách List có phải Elem hay Elem hay không last(List, Elem) Kiểm tra phần tử đứng cuối danh sách List có phải Elem hay không reverse(List1, List2) Nghịch đảo thứ tự phần tử danh sách List1 để trả kết List2 permutation(List1, Hoán vị danh sách List1 thành danh sách List2 List2) Flatten(List1, List2) Chuyển danh sách List1 chứa phần tử thành danh sách phẳng List2 sumlist(List,sum) Tính tổng phần tử danh sách List chứa toàn số để trả kết sum numlist(Low, High,List) Nếu Low High số cho Low =