TIỂU LUẬN NHẬN BIẾT TỪ HÁN VIỆT - Tài Liệu Text - 123doc

Tải bản đầy đủ (.doc) (27 trang)
  1. Trang chủ
  2. >>
  3. Công nghệ thông tin
  4. >>
  5. Hệ thống thông tin
TIỂU LUẬN NHẬN BIẾT TỪ HÁN VIỆT

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 (289.9 KB, 27 trang )

MỤC LỤCGIỚI THIỆU...........................................................................................................................2PHẦN 1: CƠ SỞ LÝ THUYẾT............................................................................................3PHẦN 2. CÀI ĐẶT VÀ DEMO CHƯƠNG TRÌNH .........................................................18TÀI LIỆU THAM KHẢO....................................................................................................27 Tiểu luận môn học Công nghệ tri thứcGIỚI THIỆUTrong quá trình sử dụng tiếng Việt, việc phân biệt được từ các từ Hán-Việt và cáctừ thuần Việt sẽ giúp cho người đọc dễ dàng hiểu đúng nghĩa câu văn hơn. Tuy nhiên,việc nhận biết được các từ Hán-Việt không phải là một điều đơn giản với đa số người đọc.Tác giả Phan Ngọc đã đưa ra một số mẹo đơn giản để giúp chúng ta nhận biết các từ HánViệt một cách dễ dàng. Các mẹo này được trình bày thông qua cuốn sách “Mẹo giải nghĩatừ Hán - Việt và chữa lỗi chính tả, NXB Thanh Niên năm 2000.Nhằm nâng cao việc áp dụng kiến thức đã học trong 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 một từ nhập vào cóphải là từ Hán-Việt hay khơng? Dựa vào các luật (mẹo chính tả ) của GS. Phan Ngọc” Đềtài sẽ xây dựng một chương trình cho phép người dùng kiểm tra một từ có phải là từ HánViệt hay không.Nội dung của đề tài được chia làm 3 phần sau đây:I. Nghiên cứu cơ sở lý thuyết để xây dựng đề tàiII. Phân tích bài tốn để xây dựng chương trìnhIII. Demo chương trìnhTrên những cơ sở lý thuyết học được, nghiên cứu các tài liệu tham khảo vàsự giúp đỡ của các thành viên trong lớp, chúng tơi xin được tổng kết và báo cáo đềtài. Kính mong được sự góp ý chân thành của quý thầy và các anh chị. Chúng tôixin chân thành cảm ơn sự chỉ bảo tận tình của PGS.TS. Phan Huy Khánh giúpchúng tơi hồn thành tốt đề tài này.Nhóm làm đề tài:Đinh Thị Thiên AnhLê Hồng DũngLê Thị Thu HàTrang 2 Tiểu luận môn học Công nghệ tri thứcPHẦN 1: CƠ SỞ LÝ THUYẾT1.Phát biểu bài tốnXây dựng chương trình để nhận biết một từ nhập vào có phải là từ Hán-Việt haykhơng? Dựa vào các luật (mẹo chính tả ) của GS. Phan Ngọc. Ví dụ “quốc gia”, “tổquốc”… là từ Hán-Việt, tuy nhiên “nhà nước”, “đất nước”… không phải là từ Hán-Việt(từ thuần Việt).2.Cơ sở lý thuyết liên quanNhằm mục đích giải quyết bài tốn trên chúng ta phải dựa lý thuyết về logic vị từ và cáchsử dụng chúng trong Prolog. Trong phần này chúng ta sẽ đi vài nghiên cứu một số nộidung cơ bản đó.2.1. Xây dựng sự kiện trong ngôn ngữ Prolog (7 -11 – giáo trình Prolog)Để xây dựng các sự kiện trong chương trình Prolog, ta lấy một ví dụ về cây gia hệ nhưsau:(a)(b)TomMaryparentBillAnnLizSueTomBillJimHình 1. Cây gia hệTrong câu gia hệ (a), các nút chỉ người, còn các mũi tên chỉ quan hệ cha mẹ của(parent of). Sự kiện Tom là cha mẹ của Bill được viết thành một vị từ trong Prolog nhưsau:Parent(Tom, Bill).Ở đây, vị từ parent có hai đối số là Tom và Bill. Người ta có thể biểu diễn vị tự nàybằng một cây như trong hình (b) ở trên: nút gốclà tên vị từ, các nút còn lại là các nút đối.Trang 3 Tiểu luận môn học Công nghệ tri thứcTrong cây gia hệ ở trên, ta có thể tiếp tục viết các vị từ khác để nhận được mộtchương trình Prolog gồm 6 vị từ như sau:Parent(Mary, Bill).Parent(Tom, Bill).Parent(Tom, Liz).Parent(Bill, Ann).Parent(Bill, Sue).Parent(Sue, Jim).Sau khi hệ thống Prolog nhận được chương trình này, thực chất là một cơ sở dữliệu, người ta có thể đặt các câu hỏi liên quan đến quan hệ Parent. Ví dụ câu hỏi Bill cóphải là cha mẹ của Sue được gõ vào trong hệ thống đối thoại của Prolog (dấu nhắc lệnh)như sau:? – parent(Bill,Sue).Sau khi tìm thấy sự kiện này trong chương trình, Prolog trả lời:YesTa tiếp tục đặt câu hỏi khác:? – parent(Liz,Sue).NoBởi vì Prolog khơng tìm thấy sự kiện Liz là người mẹ của Sue trong chương trình.Tương tự, Prolog sẽ trả lời No cho sự kiện:? – parent(Tom,Ben).Vì tên Ben chưa được đưa vào chương trình. Ta có thể tiếp tục đặt ra các câu hỏithú vị khác. Chẳng hạn ai là cha (hay mẹ) của Liz?? – parent(X,Liz).Lần này, trước khi đưa ra câu trả lời Yes hoặc No, Prolog đưa ra một giá trị của Xlàm thoả mãn câu hỏi trên đây:X=tomĐể biết được ai là con của Bill ta chỉ cần viết:? – parent(Bill,x).Với câu hỏi này, Prolog sẽ có hai câu trả lời, đầu tiên là:X=ann ->;Để biết được câu trả lời tiếp theo, trong hầu hết các cài đặt của Prolog, người sửdụng phải gõ vào một dấu chấm phẩy(;) sau ->:Trang 4 Tiểu luận môn học Công nghệ tri thứcX=SueNếu đã hết phương án trả lời mà vẫn tiếp tục gõ dấu (;), Prolog trả lời No, ngượclại trả lời Yes.Người sử dụng có thể đặt các câu hỏi tổng quát hơn, chẳng hạn: ai là cha mẹ củaai? Nói cách khác, cần tìm X và Y sao cho X là cha mẹ của Y. Ta viết như sau:?- parent(X, Y)Sau khi trả lời câu hỏi đầu tiên, Prolog sẽ lần lượt tìm kiếm các cặp cha mẹ - thoảmãn và lần lượt hiển thị kết quả nếu chừng nào người sử dụng cịn u cầu cho đến khikhơng cịn kết quả lời giải nào nữa (kết thúc bởi chữ Yes):X = MaryY = Bill ->;X = TomY = Bill ->;X = TomY = Liz ->;X = BillY = Ann ->;X = BillY = Sue ->;X = SueY = Jim ->;Tuỳ theo cài đặt của Prolog, người sử dụng có thể gõ vào dấu chấm (.) hoặc Enterđể chấm dứt giữa chừng luồng trả lời.Ta có thể tiếp tục đưa ra những câu hỏi phức tạp hơn khác, chẳng hạn ai là ông(bà) của Jim? Thực tế quan hệ ông – bà chưa được định nghĩa, cần phân tách câu hỏi nàythành hai phần sơ cấp hơn:Ai là cha (mẹ) của Jim? Giả sử có tên là Y.Ai là cha mẹ của Y? Giả sử có tên là X.Trang 5 Tiểu luận mơn học Cơng nghệ tri thứcXparentYgrandparentparentJimHình 2. Quan hệ ông bà được tập hợp từ hai quan hệ cha mẹLúc này, ta có ta có thể viết chương trình của Prolog như sau:?- parent(Y, jim), parent(X, Y)Prolog trả lời:Y=SueX=BillYesCâu hỏi trên đây tương ứng với các câu hỏi: Tìm X và 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, thì nghĩa logic vẫn khơng thay đổi vàProlog trả lời cùng kết quả (có thể thay đổi về thứ tự), nghĩa là ta có thể đặt câu hỏi nhưsau:?- parent(X, Y),parent(Y, Jim).X = BillY = SueYesBây giờ ta đặt câu hỏi ai là cháu của Tom??- parent(Tom, X),parent(X, Y).X = BillY = Ann ->;X = BillY = Sue ->;NoTrang 6 Tiểu luận môn học Công nghệ tri thứcMột câu hỏi khác có thể như sau: Ann và Sue có cùng cha mẹ không? nghĩa là tadiễn đạt thành hai gia đoạn:1. Tìm X là cha mẹ của Ann2. X tìm thấy có cùng cha mẹ của Sue khơng?Câu hỏi và trả lời trong Prolog như sau:?- parent(X, Ann), parent(X, Sue).X= BillTrong Prolog, câu hỏi được gọi là đích (goal) cần phải được thoả mãn. Mỗi câu hỏiđặt ra đối với cơ sở dữ liệu có thể tương ứng với một hoặc nhiều đích. Chẳng hạn dãy cácđích:parent(X, Ann), parent(X, Sue).Tương ứng với câu hỏi là phép hội của hai mệnh đề:X là một cha mẹ của Ann, vàX là một cha mẹ của Sue.Nếu câu trả lời là Yes, thì có nghĩa đích đã được thoả mãn, hay đã thành cơng.Trong trường hợp ngược lại, câu trả lư là No, có nghĩa là đích khơng được thoả mãn,hay đã thất bại.Nếu có nhiều câu trả lời cho một câu hỏi, Prolog sẽ đưa ra câu trả lời đầu tiên vàchờ yêu cầu của người sử dụng tiếp tục.2.2. Xây dựng luật trong ngơn ngữ Prolog (Trang 11-22 giáo trình Prolog)2.2.1.Định nghĩa luậtTừ chương trình gia hệ trên đây, ta có thể dễ dàng bổ sung các thông tin khác, chẳnghạn bổ sung các sự kiện về giới tính (nam, nữ) của những người đã nêu tên trong quan hệparent như sau:woman(Mary).man(Tom).man(Bill).woman(Liz).woman(Sue).woman(Ann).man(Jim).Ta đã định nghĩa các quan hệ đơn woman và man vì chúng chỉ liên quan đến một đốitượng duy nhất. Cịn quan hệ parent là nhị phân, vì liên quan đến một cặp đối tượng. Nhưvậy, các quan hệ đơn dùng để thiết lập một thuộc tính của một đối tượng. Mệnh đề:Trang 7 Tiểu luận mơn học Cơng nghệ tri thứcwoman(Mary).được giải thích: Mary là nữ. Tuy nhiên, ta cũng có thể sử dụng quan hệ nhị phận để địnhnghĩa giới tính:sex(Mary,sex(Tom,sex(Bill,female)female)female). . . . .Bây giờ chúng ta đưa vào một quan hệ mới child, đối ngược với parent như sau:child(Liz, Tom)Từ đó, ta định nghĩa các luật mới như sau:child(X, Y) :- parent(X, Y).Luật trên được biểu diễn là:Với mọi X và Y,Y là con của X nếuX là cha (hay mẹ) của Y.Với mọi X và Y,nếu X là cha (hay mẹ) của Y thìY là con của X.Có sự khác nhau cơ bản giữa sự kiện và luật. Một sự kiện, chẳng hạn:parent(Tom, Liz).là một điều gì đó ln đúng, khơng có điều kiện gì ràng buộc. Trong khi đó, các luật liênquan đến các thuộc tính chỉ được thoả mãn nếu một số điều kiện nào đó được thoả mãn.Mỗi luật bao gồm hai phần:• Phần bên phải chỉ điều kiện, còn được gọi là thân của luật, và• Phần bên trái chỉ kết luận, cịn gọi là đầu của luật.Nếu điều kiện parent(X, Y) là đúng, thì child(X, Y) cũng đúng và là hậu quả logic củaphép suy luận.child(Y, X)Y).đầu:-parent(X,thânCâu hỏi sau đây giải thích cách Prolog sử dụng các luật: Liz có phải là con củaTom không?Trang 8 Tiểu luận môn học Công nghệ tri thức?- child(Liz, Tom)Thực tế, trong chương trình khơng có sự kiện nào liên quan đến con, mà ta phảitìm cách áp dụng các luật. Luật trên đây ở dạng tổng quát với các đối tượng X và Y bấtkỳ, mà ta lại cần các đối tượng cụ thể Liz và Tom.Ta cần sử dụng phép thế bằng cách gán giá trị Liz cho biến Y và Tom cho biến X.Người ta nó rằng các biến X và Y đã được ràng buộc:X = TomVàY = LizLúc này, phần điều kiện có giá trị parent(Tom, Liz) và trở thành đích con (subgoal) để Prolog thay thế cho đích child(Liz, Tim). Tuy nhiên, đích này thoả mãn và có giátrị Yes vì chính là sự kiện đã thiết lập trong chương trình.Sau đây, ta tiếp tục bổ sung các quan hệ mới. Quan hệ mẹ mother được định nghĩanhư sau (chú ý dấu phẩy (,) chỉ phép hội hay phép và logic):mother(X, Y):-parent(X, Y), woman(X).được hiểu là:Với mọi X và Y, X là mẹ của Ynếu X là cha(hay mẹ) của Y và X là nữ.Đồ thị sau đây minh hoạ việc định nghĩa các quan hệ child, mother và grandparentsử dụng một quan hệ khác:Trong đồ thị, người ta qui ước rằng: các nút tương ứng với các đối tượng (là cácđối của các quan hệ). Các cung nối các nút tương ứng với các quan hệ nhị phân, đượcđịnh hướng từ đối thứ nhất đến đối thứ 2 của quan hệ.XparentXparentchildYwomanmotherYXparentYgrandparentparentJimHình 3. Định nghĩa các quan hệ child, mother và grandparent từ quan hệ parentTrang 9 Tiểu luận môn học Công nghệ tri thứcMột quan hệ đơn được biểu diễn bởi tên quan hệ tương ứng với nhãn của đối tượng đó.Các quan hệ cần định nghĩa được biểu diễn bằng các cung có nét đứt. Mỗi đồ thị đượcgiải thích như sau: Nếu các quan hệ được chỉ bởi các cung có nét liền được thoả mãn, thìquan hệ biểu diễn bởi cung có nét đứt cũng được thoả mãn.Như vậy, quan hệ ông – bà grandparent được viết như sau:Grandparent(X, Z):-parent(X, Y), parent(Y, Z).Để thuận tiện cho việc đọc chương trình Prolog, ta có thể viết một luật trên nhiều dòng,dòng đầu tiên là phần đầu của luật, các dòng tiếp theo là phần thân của luật, mỗi đích trênmột dịng phân biệt. Bây giờ quan hệ grandparent được viết lại như 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 như sau:Với mọi X và Y, X là chị em gái của Y nếu(1) X và Y có cùng cha (cùng mẹ), và(2) X là nữ.sister(X, Y):-parent(Z, X),parent(Z, Y),woman(X).XparentparentJimYwomansisterHình 4. Định nghĩa quan hệ chị em gáiChú ý cách giải thích điều kiện X và Y có cùng cha mẹ: một Z nào đó phải là mộtcha mẹ của X, và cũng Z đó phải là cha mẹ của Y.Hay nói cách khác là: Z1 là một cha mẹ của X, Z2 là một cha mẹ của Y, và Z1đồng nhất với Z2.Ann là nữ, Ann và Sue cùng cha mẹ nên Ann là chị em gái của Sue, ta có:Trang10 Tiểu luận môn học Công nghệ tri thức?- sister(ann, sue).YesTa cũng có thể hỏi ai là chị em gái của Sue như sau:?- sister(X, Sue).Prolog sẽ lần lượt đưa ra hai câu trả lời:X = annX = sueYesVậy thì Sue là em gái của chính mình?! Điều này sai vì ta chưa giải thích rõ trongđịnh nghĩa chị em gái. Nếu chỉ dựa vào định nghĩa trên đây thì câu trả lời của Prolog làhoàn toàn hợp lý. Prolog suy luận rằng X và Y có thể đồng nhất với nhau, mỗi người đànbà có cùng cha mẹ sẽ là em gái của chính mình. T cần sử lại định nghĩa bằng cách thêmvào điều kiện X và Y phải khác nhau. Như sẽ thấy sau này, Prolog có nhiều cách để giảiquyết, tuy nhiên lúc này ta sử dụng quan hệ:different(X, Y)đã được Prolog nhận biết và được thoả mãn nếu và chỉ nếu X và Y không bằng nhau.Định nghĩa chị (em) gái mới như sau:sister(X, Y):-parent(Z, X),parent(Z, Y),woman(X).different(X, Y).Ví dụ 1: Ta lấy ví dụ cổ điển sử dụng hai tiên đề sau đây:Tất cả mọi người đều chếtSocrate là mộtngườiTa viết trong Prolog như sau:mortal(X):- man(X).man(socrate).Một định lý được suy luận một cách logic từ hai tiên đề này là Socrate phải chết. Ta đặtcác câu hỏi như sau:?- mortal(socrate)Ví dụ 2: Ta đã xây dựng các sự kiện và các luật có dạng vị từ chứa tham đối, sau đây, talấy một ví dụ khác về sự kiện và luật không chứa tham đối:Trang11 Tiểu luận môn học Công nghệ tri thức‘ It is sunny’.‘It is summer’.‘It is hot’ :‘It is summer’, ‘It is sunny.‘ It is cold’ :‘It is winter’, ‘It is snowing’.Từ chương trình trên, ta có thể đặt câu hỏi:?-‘It is hot ‘.YesCâu trả lời ‘It is hot’ là đúng vì có các sự kiện ‘It is sunny’ và ‘It is summer’ trong chươngtrình. Cịn câu hỏi “?- ‘It is cold”. Có câu trả lời sai.2.2.2.Định nghĩa các luật đệ quyBây giờ chúng ta thêm một quan hệ mới vào chương trình. Quan hệ này chỉ sử dụngquan hệ parent, và chỉ có hai luật. Luật thứ nhất định nghĩa các tổ tiên trực tiếp, luật thứhai định nghĩa các tổ tiên gián tiếp.Ta nói rằng X là một tổ tiên gián tiếp của Z nếu tồn tại một liên hệ cha mẹ (ơng bà)giữa X và Z:XparentXparentancestorYparentancestor(a)parentY(b)Hình 5. Quan hệ tổ tiên trực tiếp và gián tiếpTrong cây gia hệ ở trên, Tom là tổ tiên trực tiếp của Liz, và tổ tiên gián tiếp của Sue.Ta định nghĩa luật 1(tổ tiên trực tiếp) như sau:Với mọi X và Z,Trang12 Tiểu luận môn học Công nghệ tri thứcX là tổ tiên của Z nếuX là cha mẹ của Z.ancestor(X, Z):parent(X, Z).Định nghĩa luật 2 (tổ tiên gián tiếp) phức tạp hơn, trìng Prolog trở nên dài dịnghơn, mỗi khi càng mở rộng mức tổ tiên hậu duệ như chỉ ra ở hình 6 dưới đây. Kể cả luật1, ta có tổ tiên được định nghĩa như sau:ancestor(X, Z):- %luậtđịnh nghĩa tổ tiên trực tiếpparent(X, Z).ancestor(X, Z):- % luật 2: tổ tiên gián tiếp là ông bà (tam đại)parent(X, Y),parent(Y, Z).ancestor(X, Z):- % tổ tiên gián tiếp là cố ông cố bà (tứ đại)parent(X, Y1),parent(Y1, Y2),parent(Y2, Z).ancestor(X, Z):- % ngũ đại đồng đườngparent(X, Y1),parent(Y1, Y2),parent(Y2, Y3),parent(Y3, Z).Trang13 Tiểu luận môn học Công nghệ tri thức. . . . . .XparentXancestorparentYparentY1parentparentXYancestorY1parentY2parentancestorY2parentZZparentZHình 6. Các cặp tổ tiên hậu duệ gián tiếp ở các mức khác nhauTuy nhiên, tồn tại một cách định nghĩa tổ tiên gián tiếp ở mức bất kỳ nhờ phép đệquy như sau:Với mọi X và Z,X là một tổ tiên của Z nếutồn tại Y sao cho(1) X là cha mẹ của Y và(2) Y là tổ tiên của Zancestor(X,Z) :-parent(X, Z).ancestor(X,Z) :-parent(X, Y),ancestor(Y, Z).Trang14 Tiểu luận mơn học Cơng nghệ tri thứcancestorX.....YZancestorHình 7. Dạng đệ qui của quan hệ tổ tiên.?- ancestor(Mary, X).X = Jim ->;X = Ann ->;X = Sue ->;X = billYesTrong Prolog, hầu hết các chương trình phức tạp đều sử dụng đệ quy, đệ quy làmột khả năng mạnh của Prolog.Cho đến lúc này, ta đã định nghĩa nhiều quan hệ khác nhau (parent, woman, man,grandparent, child, sister, mother, và ancestor). Ta thấy mỗi quan hệ tương ứng với mộtmệnh đề, tuy nhiên, quan hệ ancestor lại có hai mệnh đề.Người ta nói rằng những mệnh đề này liên quan đến quan hệ ancestor. Trongtrường hợp tất cả các mệnh đề đều liên quan đến một quan hệ, người ta nhận được mộtthủ tục.2.3. Cấu trúc và xử lý danh sách trong PrologDanh sách là một trong những cấu trúc đơn giản nhất và thuận tiện trong Prolog, nótạo ra mơi trường lập trình thuận tiện trong prolog. Để giải quyết bài toán bán vé tàu trênprolog chúng ta sẽ nghiên cứu một số khái niệm cơ bản về prolog.2.3.1.Biểu diễn danh sáchDanh sách là kiểu dữ liệu đơn giản dễ biểu diễn. Danh sách các phần từ gồm anne,tennis, tom, skies được biểu diễn thành danh sách như sau:[anne,2.3.2.tennis,tom,skies]Một số vị từ xử lý danh sách của prologSWI – Prolog có sẵn một số vị từ xử lý danh sách như sau:Vị từappend(List1,Ý nghĩaGhép hai danh sách List1 và List2 thành List3Trang15 Tiểu luận môn học Công nghệ tri thứcList2, List3)member(Elem,List)Kiểm tra Elem có phải là phần tử của danh sách List haykhơng.nextto(X,Y,List)Kiểm tra phần tử Y có đứng ngay sau phần tử X trong danhsách List hay khơng.delete(List1,Elem, List2)Xố trong List1 những phần tử có trong Elem và trả kết quảvề trong List2.Select(Elem, List, Lấy phần tử Elem khỏi danh sách List để trả về những phầnReset)tử còn lại trong Rest, có thể dùng để chèn phần tử vào danhsách.nth0(Index,Elem)List, Kiểm tra phần tử thứ Index (tính từ 0) của danh sách List cónth1(Index,Elem)List, Kiểm tra phần tử thứ Index (tính từ 1) của danh sách List cóphải là Elem hay không.phải là Elem hay không.last(List, Elem)Kiểm tra phần tử đứng cuối cùng trong danh sách List cóphải là Elem hay không.reverse(List1,List2)Nghịch đảo thứ tự các phần tử của danh sách List1 để trả vềkết quả trong List2permutation(List1, Hoán vị danh sách List1 thành danh sách List2List2)Flatten(List1,List2)Chuyển danh sách List1 chứa các phần tử bất kỳ thành danhsách phẳng List2.sumlist(List,sum)Tính tổng các phần tử của danh sách List chứa toàn số để trảvề kết quả trong sumnumlist(Low,High,List)Nếu Low và High là các số sao cho Low =

Từ khóa » Tiểu Luận Từ Hán Việt Trong Tiếng Việt