Danh sách sinh viên tốt nghiệp Đại học - Cao đẳng Trường Đại học Phú Yên năm ...
DCT119C1_3119411001_Dư-Hoàng-An_TL.pdf
1. UBND TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GÒN
TIỂU LUẬN
Môn: SEMINAR CHUYÊN ĐỀ
Đề tài: LẬP TRÌNH LOGIC VÀ ỨNG DỤNG
SINH VIÊN THỰC HIỆN: Dư Hoàng An
MSSV: 3119411001
LỚP: DCT119C1
GVHD: PGS.TS. Nguyễn Tuấn Đăng
TP. HỒ CHÍ MINH, THÁNG 05 NĂM 2023
2. Nội dung
I. GIỚI THIỆU ĐỀ TÀI ......................................................................................................1
1.1. Giới thiệu..................................................................................................................1
1.2. Mục tiêu....................................................................................................................1
1.3. Phạm vi.....................................................................................................................1
1.4. Đối tượng nghiên cứu...............................................................................................1
II. CƠ SỞ LÝ THUYẾT .....................................................................................................2
1. Syntax Tree..................................................................................................................2
2. Definite Clause Grammars ..........................................................................................3
3. Ngôn ngữ lập trình logic (Prolog) ...........................................................................3
3.1. Parsing with Difference Lists ...............................................................................4
3.2. DCG Syntax..........................................................................................................5
III. XÂY DỰNG TINY-PARSER.......................................................................................7
3.1. Vẽ cây cú pháp .........................................................................................................8
3.2. Chuyển sang văn phạm DCG cho từng câu............................................................12
3.3. Gộp văn phạm DCG ...............................................................................................15
IV. Kết luận : .....................................................................................................................18
TÀI LIỆU THAM KHẢO.................................................................................................19
3. Mục lục hình ảnh Trang
Hình 1.1: Ví dụ cây cú pháp 3
Hình 1.2: Ví dụ DCG 5
Hình 1.3: Ví dụ quy tắc DCG 6
Hình 3.1: Cây cú pháp cho câu:”Nam định mua mấy cuốn sách mới” 9
Hình 3.2: Cây cú pháp cho câu:”Nam có nhiều cuốn sách rất hay” 10
Hình 3.3: Cây cú pháp cho câu:”Nam mới tặng cho Lan một cuốn sách” 10
Hình 3.4: Cây cú pháp cho câu:”Nam thích đọc sách ở thư viện” 11
Hình 3.5: Cây cú pháp cho câu:”Nhà Nam ở gần trường” 12
Hình 3.6: Văn phạm DCG cho câu “Nam định mua mấy cuốn sách mới” 13
Hình 3.7: Kết quả phân tích câu “Nam định mua mấy cuốn sách mới” 13
Hình 3.8: Văn phạm DCG cho câu “Nam có nhiều cuốn sách rất hay” 13
Hình 3.9: Kết quả phân tích câu “Nam có nhiều cuốn sách rất hay” 13
Hình 3.10: Văn phạm DCG cho câu “Nam tặng Lan một cuốn sách mới” 14
Hình 3.11: Kết quả phân tích câu “Nam mới tặng Lan một cuốn sách” 14
Hình 3.12: Văn phạm DCG cho câu “Nam thích đọc sách ở thư viện” 14
Hình 3.13:Kết quả phân tích câu “Nam thích đọc sách ở thư viện” 14
Hình 3.14: Văn phạm DCG cho câu “Nam thích đọc sách ở thư viện” 15
Hình 3.15:Kết quả phân tích câu “Nhà Nam ở gần trường” 15
Hình 3.14: Tiny-Parser 16
Hình 3.15: Kết quả phân tích câu “Nam ở thư viện” 16
Hình 3.16: Kết quả phân tích câu “Nam tặng Lan cuốn sách rất hay” 17
Hình 3.17: Kết quả phân tích câu “Nam thích ở thư viện” 17
Hình 3.18: Kết quả phân tích câu “Nam thích ở nhà” 17
Hình 3.19: Kết quả phân tích câu “Lan định tặng Nam một cuốn sách” 17
4. Bảng biểu
Bảng 1: Từ và loại từ.........................................................................................................7
5. 1
I. GIỚI THIỆU ĐỀ TÀI
1.1. Giới thiệu
Lập trình logic là một trong những lĩnh vực quan trọng của khoa học máy tính. Trong lập
trình logic, chúng ta sử dụng các công cụ và phương pháp để tạo ra các chương trình có
tính logic và khả năng suy luận. Đề tài "Lập trình logic và ứng dụng" tập trung vào việc
tìm hiểu và áp dụng các kỹ thuật lập trình logic trong ngôn ngữ Prolog, đặc biệt là về
Tiny-Parser và văn phạm DCG (Definite Clause Grammar). Cuối cùng, có thể xây dựng
một Tiny-Parser dựa trên văn phạm DCG và ngôn ngữ lập trình Prolog để phân tích cú
pháp một vài câu tiếng Việt và tất cả các câu phái sinh trong tập ngữ liệu.
1.2. Mục tiêu
Mục tiêu của bài tiểu luận này là xây dựng một Tiny-Parser dựa trên Văn phạm DCG
để phân tích cú pháp. Parser sẽ cho phép phân tích các câu đơn giản tiếng Việt và trả về
cây phân tích cú pháp tương ứng. Các chức năng cơ bản sẽ bao gồm:
1. Phân tích cú pháp các câu tiếng Việt và tất cả các câu phái sinh phát sinh trong
tập ngữ liệu đã cho.
2. Trình bày cây phân tích cú pháp tương ứng.
Ngoài ra thông qua xây dựng Tiny-Parser ta sẽ tìm hiểu về DCG và cách xây
dựng trên Prolog
1.3. Phạm vi
Phạm vi của đề tài "Xây dựng Tiny-Parser dựa trên văn phạm DCG để phân tích cú
pháp" bao gồm:
1. Tìm hiểu và nghiên cứu về ngôn ngữ Prolog và văn phạm DCG.
2. Xây dựng một bộ phân tích cú pháp đơn giản dựa trên văn phạm DCG.
1.4. Đối tượng nghiên cứu
- Đối tượng nghiên cứu:
1) Ngôn ngữ Prolog.
2) Văn phạm DCG, cây cú pháp.
3) Phương pháp phân tích cú pháp một câu tiếng Việt.
6. 2
II. CƠ SỞ LÝ THUYẾT
1. Syntax Tree
Xử lý ngôn ngữ tự nhiên (Natural Language Processing-NLP) là một lĩnh vực
nghiên cứu liên quan đến việc hiểu, diễn giải và thao tác ngôn ngữ nói của con người
bằng máy tính.
Vì hầu hết các thông tin quan trọng được viết ra bằng các ngôn ngữ tự nhiên như
tiếng Anh, tiếng Pháp, tiếng Đức, ... nên NLP giúp máy tính giao tiếp với con người bằng
ngôn ngữ của chúng và thực hiện các tác vụ liên quan đến ngôn ngữ khác. Tóm lại, NLP
giúp máy tính có thể đọc văn bản, nghe lời nói, diễn giải và nhận ra nó, hiểu tình cảm và
xác định các phần quan trọng của văn bản hoặc bài phát biểu.
Một ngôn ngữ tự nhiên thường tuân theo cấu trúc phân cấp và chứa các thành phần
sau:
• Câu.
• Mệnh đề.
• Cụm từ.
• Từ.
Cú pháp (Syntax) đề cập đến tập hợp các quy tắc, nguyên tắc và quá trình điều
chỉnh cấu trúc câu trong ngôn ngữ tự nhiên. Một mô tả cơ bản về cú pháp là cách các từ
khác nhau như Chủ ngữ, Động từ, Danh từ, Cụm danh từ, vv. được sắp xếp trong một
câu. Một số danh mục cú pháp của một ngôn ngữ tự nhiên như sau:
• Cụm danh từ (Noun Phrase - NP).
• Mạo từ (Determiner - Det).
• Cụm động từ (Verb Phrase - VP).
• Cụm giới từ (Prepositional Phrase - PP).
• Động từ (Verb - V).
• Danh từ (Noun - N).
Cây cú pháp (Syntax Tree) hay còn gọi là cây phân tích (parse tree) là một biểu
diễn cây của các loại cú pháp khác nhau trong một câu. Nó giúp chúng ta hiểu cấu trúc cú
pháp của một câu.
Ví dụ cây cú pháp cho câu Nam thích đọc sách:
7. 3
Hình 1.1: Ví dụ cây cú pháp
2. Definite Clause Grammars
Văn phạm các mệnh đề xác định (Definite Clause Grammars - DCG) là cách thuận
tiện để biểu diễn các mối quan hệ ngữ pháp cho các ứng dụng phân tích cú pháp khác
nhau. Chúng có thể được sử dụng cho công việc ngôn ngữ tự nhiên, để tạo ra các ngôn
ngữ lệnh và lập trình hình thức.
Ví dụ, DCG là một công cụ tuyệt vời để phân tích cú pháp và tạo ra các luồng đầu
vào và đầu ra được gắn thẻ, chẳng hạn như HTML hoặc XML. Chỉ mục và bảng nội dung
trong tài liệu này được tạo ra bằng một chương trình Prolog sử dụng DCG để phân tích
cú pháp HTML, tìm kiếm các tiêu đề và mục lục.
3. Ngôn ngữ lập trình logic (Prolog)
Prolog là một ngôn ngữ lập trình. Tên gọi Prolog được xuất phát từ cụm từ tiếng Pháp
Programmation en logique, nghĩa là "lập trình theo lô gích". Xuất hiện từ năm 1972 (do
Alain Colmerauer và Robert Kowalski thiết kế), mục tiêu của Prolog là giúp người dùng
mô tả lại bài toán trên ngôn ngữ của logic, dựa trên đó, máy tính sẽ tiến hành suy diễn tự
8. 4
động dựa vào những cơ chế suy diễn có sẵn (hợp nhất, quay lui và tìm kiếm theo chiều
sâu) để tìm câu trả lời cho người dùng.
Prolog được sử dụng nhiều trong các ứng dụng của trí tuệ nhân tạo và ngôn ngữ học
trong khoa học máy tính (đặc biệt là trong ngành xử lý ngôn ngữ tự nhiên vì đây là mục
tiêu thiết kế ban đầu của nó). Cú pháp và ngữ nghĩa của Prolog đơn giản và sáng sủa, nó
được người Nhật coi là một trong những nền tảng để xây dựng máy tính thế hệ thứ năm
mà ở đó, thay vì phải mô tả cách giải quyết một bài toán trên máy tính, con người chỉ cần
mô tả bài toán và máy tính sẽ hỗ trợ họ nốt phần còn lại.
3.1. Parsing with Difference Lists
Phân tích cú pháp (Parsing) là quá trình phân tích và kiểm tra tính hợp lệ của một
chuỗi đầu vào. Đối với các ứng dụng phân tích cú pháp, danh sách khác biệt (Difference
Lists) là một công cụ mạnh mẽ để biểu diễn chuỗi đầu vào dưới dạng các danh sách.
Danh sách khác biệt là cặp danh sách được sử dụng để biểu diễn danh sách các
phần tử (token, từ, mã ký tự,...) đang được phân tích cú pháp. Danh sách thực sự được
biểu diễn là sự khác biệt giữa danh sách đầu tiên và danh sách thứ hai. Ví dụ, [the, cat] có
thể được biểu diễn bằng hai danh sách [the, cat, chases, the, mouse] và [chases, the,
mouse]. Hoặc chính xác hơn là [the, cat | X] và X.
Trong các ứng dụng phân tích cú pháp, danh sách đầu tiên chứa các phần tử cần
phân tích. Các trình tiền xử lý khác nhau tìm kiếm những gì họ đang tìm kiếm ở đầu danh
sách đầu tiên, và gán danh sách thứ hai với phần còn lại cần phân tích.
Ví dụ, một trình tiền xử lý tìm kiếm chủ ngữ ('the cat') ở đầu câu sẽ tìm thấy và
trả về phần còn lại của câu ('chases the mouse'). Sau đó, nó có thể được đưa vào một trình
tiền xử lý khác để tìm kiếm động từ, tìm thấy nó và trả về những gì còn lại. Việc này tiếp
tục cho đến khi không còn gì nữa cần phân tích.
Nói cách khác, danh sách khác biệt được nối với nhau trong ứng dụng phân tích
cú pháp. Câu đầy đủ sẽ được biểu diễn bằng danh sách đầy đủ và danh sách rỗng. Nghĩa
là sự khác biệt giữa danh sách đầu tiên đầy đủ và danh sách thứ hai rỗng. Vì vậy, danh
sách khác biệt cho câu kiểm tra của chúng ta là [the, cat, chases, the, mouse] và [].
Ứng dụng phân tích ngôn ngữ tự nhiên kiểm tra xem một câu có đúng ngữ pháp
hay không. Nó làm điều này bằng cách sử dụng danh sách khác biệt để kết nối các loại từ
loại ngữ pháp khác nhau.
9. 5
3.2. DCG Syntax
Definite Clause Grammar (DCG) là một tiền xử lý trình thông dịch Prolog, nhận
vào các quy tắc ngữ pháp DCG và thêm các danh sách khác biệt được liên kết vào các
mục tiêu. DCG cung cấp cú pháp để viết các quy tắc phân tích cú pháp ngữ pháp dễ đọc
hơn mà không bao gồm danh sách khác biệt liên kết. Tiền xử lý DCG chuyển đổi quy tắc
DCG thành Prolog thuần, bổ sung danh sách khác biệt liên kết.
Cú pháp DCG được biểu diễn như sau:
• Toán tử (-->) chỉ ra một quy tắc DCG, thay thế cho toán tử (:-) được sử dụng cho
các mệnh đề Prolog. Ví dụ: sentence --> subject, verb, object.
• Mỗi mục tiêu được cho là đề cập đến phần đầu của một quy tắc DCG, và tiền xử
lý thêm hai đối số khác nhau cho danh sách khác biệt.
• Ngoặc nhọn {} được sử dụng để cô lập các mục tiêu Prolog bình thường khỏi trình
tiền xử lý DCG. Ví dụ: subject --> modifier, noun, {write('found subject')}.
• Ngoặc vuông [], ký hiệu danh sách, được sử dụng để chỉ định các ký hiệu cuối của
ngữ pháp. Ví dụ: noun --> [cat].
Sử dụng ký hiệu DCG, các quy tắc phân tích câu của phần trước có thể được viết lại
như sau:
Hình 1-2: Ví dụ về DCG
10. 6
Các quy tắc phân tích ngữ pháp được viết bằng cú pháp DCG có thể được sử dụng
và xem xét một cách chính xác giống như phiên bản danh sách khác nhau. Đó là, mỗi quy
tắc có hai đối số danh sách được thêm vào, và các trường hợp kết thúc được chuyển đổi
một cách phù hợp. Ví dụ:
Hình 1 .3: Quy tắc DCG
Và với mục đích xây dựng tiny-parser để xử lý ngôn ngữ tự nhiên, em sẽ sử dụng ngôn
ngữ lập trình Prolog để tạo ra một Tiny-parser.
11. 7
III. XÂY DỰNG TINY-PARSER
Các bước thực hiện:
- Vẽ cây cú pháp (Syntax Tree) cho các câu:
a. Nam định mua mấy cuốn sách mới
b. Nam có nhiều cuốn sách rất hay
c. Nam mới tặng Lan một cuốn sách
d. Nam thích đọc sách ở thư viện
e. Nhà Nam ở gần trường
- Chuyển sang văn phạm DCG cho từng câu.
- Gộp các văn phạm DCG trên thành 1 Tiny-Parser hoàn chỉnh.
Từ 5 câu trong tập ngữ liệu trên có thể phân tích các từ loại sau theo ngữ pháp tiếng
Việt.
Từ Loại từ
Nam Danh từ riêng
Lan Danh từ riêng
Nhà Danh từ chung
trường Danh từ chung
Thư viện Danh từ chung
Sách Danh từ chung
Đọc Động từ
Định Động từ
Mua Động từ
Tặng Động từ
Có Động từ
Thích Động từ
ở Động từ, giới từ
Mấy Lượng từ
Một Số từ
Nhiều Lượng từ
Mới Lượng từ
Hay Tính từ
Bảng 1: Từ và loại từ
12. 8
Hình 3: Quy tắc cho DCG
3.1. Vẽ cây cú pháp
a. Nam định mua mấy cuốn sách mới
13. 9
Hình 3.1: Cây cú pháp cho câu:”Nam định mua mấy cuốn sách mới”
14. 10
b. Nam có nhiều cuốn sách rất hay
Hình 3.2: Cây cú pháp cho câu:”Nam có nhiều cuốn sách rất hay”
c. Nam mới tặng Lan một cuốn sách
Hình 3.3: Cây cú pháp cho câu:”Nam mới tặng cho Lan một cuốn sách”
15. 11
d. Nam thích đọc sách ở thư viện
Hình 3.4: Cây cú pháp cho câu:”Nam thích đọc sách ở thư viện”
e. Nhà Nam ở gần trường
16. 12
Hình 3.5: Cây cú pháp cho câu:”Nhà Nam ở gần trường”
3.2. Chuyển sang văn phạm DCG cho từng câu
a. Nam định mua mấy cuốn sách mới
17. 13
Hình 3.6: Văn phạm DCG cho câu “Nam định mua mấy cuốn sách mới”
Hình 3.7: Kết quả phân tích câu “Nam định mua mấy cuốn sách mới”
b. Nam có nhiều cuốn sách rất hay
Hình 3.8: Văn phạm DCG cho câu “Nam có nhiều cuốn sách rất hay”
Hình 3.9: Kết quả phân tích câu “Nam có nhiều cuốn sách rất hay”
18. 14
c. Nam mới tặng Lan một cuốn sách
Hình 3.10: Văn phạm DCG cho câu “Nam tặng Lan một cuốn sách mới”
Hình 3.11: Kết quả phân tích câu “Nam mới tặng Lan một cuốn sách”
d. Nam thích đọc sách ở thư viện
Hình 3.12: Văn phạm DCG cho câu “Nam thích đọc sách ở thư viện”
Hình 3.13:Kết quả phân tích câu “Nam thích đọc sách ở thư viện”
e. Nhà Nam ở gần trường
19. 15
Hình 3.14: Văn phạm DCG cho câu “Nam thích đọc sách ở thư viện”
Hình 3.15:Kết quả phân tích câu “Nhà Nam ở gần trường”
3.3. Gộp văn phạm DCG
Từ những văn phạm của các câu trên, ta tiến hành gộp chúng lại để tạo thành 1 mini paser
hoàn chỉnh.(những khai báo giống nhau chỉ ghi lại 1 lần).
Ta có văn phạm DCG hoàn chỉnh như sau:
20. 16
Hình 3.14: Tiny-Parser
3.1. Thực hiện demo một vài câu mở rộng
Câu: “Nam ở thư viện”
Hình 3.15: Kết quả phân tích câu “Nam ở thư viện”
21. 17
Câu: “Nam tặng Lan cuốn sách rất hay”
Hình 3.16: Kết quả phân tích câu “Nam tặng Lan cuốn sách rất hay”
Câu: “Nam thích ở thư viện”
Hình 3.17: Kết quả phân tích câu “Nam thích ở thư viện”
Câu “Nam thích ở nhà”
Hình 3.18: Kết quả phân tích câu “Nam thích ở nhà”
Câu “Lan định tặng Nam một cuốn sách”
Hình 3.19: Kết quả phân tích câu “Lan định tặng Nam một cuốn sách”
Lưu ý khi xây dựng Tiny-Parser
Sử dụng văn phạm DCG khi khai báo thuộc tính np,vp,….. thì ta phải khai báo theo tuần
tự từ np → vp →adjv → pp.
Tùy vào vị trí trong câu mà 1 từ thuộc ngữ pháp khác nhau.
Ví dụ: câu “Nam ở thư viện”
Trong trường hợp này từ “ở” được xem như 1 động từ nên văn phạm sẽ là
vb(vb(o))-->[o].
Xét trường hợp khác là câu “Nam thích ở thư viện
Tại đây từ “ở” đóng vai trò là một trợ từ bổ nghĩa cho danh từ “thư viện”.
22. 18
IV. Kết luận :
Sau khi thực hiện tôi đã giới thiệu cấu trúc của Tiny-Parser dựa trên ngữ
pháp DCG và ngôn ngữ lập trình Prolog để phân tích các câu tiếng Việt và tất cả
các câu được tạo ra trong một tài liệu. Và đạt được mục tiêu của bài tiểu luận này
là giới thiệu một phương pháp trong phân tích ngôn ngữ tiếng Việt bằng công nghệ
DCG và Prolog nhằm giúp người đọc có cái nhìn tổng quan về các phương pháp
xử lý ngôn ngữ, bản chất và ứng dụng của chúng trong việc xây dựng các hệ xử lý
ngôn ngữ tự nhiên.
Ngoài ra, tôi cũng giới thiệu mã xây dựng Tiny-Parser dựa trên ngữ pháp
DCG và ngôn ngữ Prolog, cho 5 câu trong tập dữ liệu gốc, sau đó trộn chúng để
xây dựng dữ liệu dẫn xuất Tiny-Parser mới cho tập dữ liệu, chẳng hạn khoảng 50
câu câu có nghĩa.
Ưu điểm:
● Đề tài đã hoàn thành khá tốt mục tiêu đề ra.
● Sử dụng các công cụ, phần mềm hỗ trợ giúp cho quá trình nghiên cứu
và thực hiện đề tài được tiết kiệm thời gian và công sức.
Nhược điểm
• Chưa bao hàm đủ tất cả các câu phát sinh từ ngữ liệu DCG tổng hợp.
• Cần nghiên cứu thêm các phương thức nhằm giảm thời gian và tối ưu source code.
23. 19
TÀI LIỆU THAM KHẢO
1. Nguyễn Tuấn Đăng. 2017. XỬ LÝ NGÔN NGỮ TỰ NHIÊN. Nhà xuất bản
ĐHQG-HCM
2. “4 Using Definite Clause Grammars”. Nguồn tài liệu:
https://alsprolog.com/docs/guide/4-Using-Definite-Clause-Grammars.html (1/5/2023)
3. Definite Clause Grammars (DCGs). (n.d.), from
https://www.amzi.com/manuals/amzi/pro/ref_dcg.html (1/5/2023)
4. https://ongthovuive.wordpress.com/2016/04/22/xu-ly-ngon-ngu-tu-nhien-phan-1/
(1/5/2023)
5. https://ongthovuive.wordpress.com/2016/04/22/xu-ly-ngon-ngu-tu-nhien-phan-2/
(1/5/2023)
6. https://ongthovuive.wordpress.com/2016/04/22/xu-ly-ngon-ngu-tu-nhien-phan-3/
(1/5/2023)
7. https://ongthovuive.wordpress.com/2016/04/22/xu-ly-ngon-ngu-tu-nhien-phan-4/
(1/5/2023)