Академический Документы
Профессиональный Документы
Культура Документы
HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC MÁY TÍNH
BÁO CÁO ĐỒ ÁN
XỬ LÝ NGÔN NGỮ TỰ NHIÊN
Lớp: KHTN2011
Lớp môn học: CS221.E21.KHTN
Khoá: 2011
BÁO CÁO ĐỒ ÁN
XỬ LÝ NGÔN NGỮ TỰ NHIÊN
Lớp: KHTN2011
Lớp môn học: CS221.E21.KHTN
Khoá: 2011
Lời đầu tiên chúng em xin được bày tỏ lòng biết ơn sâu sắc nhất
tới TS. Nguyễn Tuấn Đăng, Khoa Khoa học máy tính, Đại học Công nghệ
thông tin ĐHQG-HCM, người đã tận tình hướng dẫn kiến thức căn bản
và thiết yếu để hoàn thành đồ án.
Tiếp đến, xin cám ơn các bạn lớp CS221.E21.KHTN đã cùng trao
đổi và bổ sung kiến thức hỗ trợ cho việc hoàn thiện đồ án.
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
···································································································
MỤC LỤC
I. Tổng quan .................................................................................................................................................. 2
1. Thông tin chung .................................................................................................................................... 2
2. Nội dung thực hiện............................................................................................................................... 2
3. Công cụ hỗ trợ ...................................................................................................................................... 2
II. Xây dựng chương trình vẽ cây AND/OR phân tích câu ........................................................................... 3
1. Ý tưởng ................................................................................................................................................. 3
2. Xây dựng class Node ........................................................................................................................ 3
2.1. Các thuộc tính được khai báo: ...................................................................................................... 3
2.2. Các hàm được xây dựng: .............................................................................................................. 5
3. Xây dựng chương trình chính .............................................................................................................. 6
3.1. Các biến được khai báo: ............................................................................................................... 6
3.2. Các hàm được xây dựng: .............................................................................................................. 6
4. Xây dựng giao diện và hoàn thiện chương trình ................................................................................ 7
4.1. Xây dựng giao diện ........................................................................................................................ 7
4.2. Chương trình hoàn chỉnh .............................................................................................................. 8
5. Kiểm tra: ............................................................................................................................................. 10
5.1. Một số văn phạm đơn giản: ........................................................................................................ 10
5.2. Câu mặc định: .............................................................................................................................. 12
III. Xây dựng văn phạm phân tích câu ....................................................................................................... 14
Văn phạm xây dựng:............................................................................................................................... 14
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
I. Tổng quan
1. Thông tin chung
* Tên đồ án:
Viết chương trình vẽ cây AND/OR phân tích cú pháp câu và phân tích thơ.
* Giảng viên hướng dẫn: TS. Nguyễn Tuấn Đăng.
* Sinh viên thực hiện: Nguyễn Hoàng Nghĩa.
* Khoá học: Khoá 2011 (Ngày nhập học: Tháng 09/2011).
* Thông tin liên lạc của sinh viên:
STT Tên MSSV Email
1 Nguyễn Hoàng Nghĩa 11520603 11520603@gm.uit.edu.vn
Viết chương trình xây dựng cây AND/OR mô phỏng quá trình phân tích câu từ văn
phạm dạng cú pháp của Prolog.
Viết cú pháp DCG phân tích 4 câu thơ:
Em không nghe rừng thu,
Lá thu kêu xào xạc,
Con nai vàng ngơ ngác
Đạp trên lá vàng khô?
(Tiếng thu - Lưu Trọng Lư)
3. Công cụ hỗ trợ
Chương trình vẽ cây AND/OR:
2
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
II. Xây dựng chương trình vẽ cây AND/OR phân tích câu
1. Ý tưởng
Mục tiêu:
Hoàn thiện chương trình xây dựng cây AND/OR mô phỏng quá trình phân tích câu từ văn
phạm dạng cú pháp của Prolog. Chương trình sử dụng 2 câu mặc định:
"Em không nghe rừng thu
Lá thu kêu xào xạc"
(Tiếng thu - Lưu Trọng Lư)
Ý tưởng:
Ta nhận thấy chương trình gồm 2 bước chính cần giải quyết:
Bước 1: Từ văn phạm đầu vào ta cần phân tích câu trên mô phỏng theo cách Prolog
thực hiện.
Bước 2: Từ kết quả bước trên ta sẽ vẽ cây AND/OR mô phỏng lại quá trình phân
tích.
Vậy kết quả đầu ra của bước 1 và đầu vào bước 2 phải thống nhất hoặc có thể hiểu được
nhau. Từ đó, đồ án sẽ xây dựng cấu trúc dữ liệu chính của chương trình: class Node lưu
dạng cây lưu trữ các thông tin và kết quả truy vấn văn phạm và các thuộc tính dùng để vẽ.
class Node được khai báo đệ quy để có thể lưu được các node (các thao tác) trong quá
trình truy vấn đồng thời có thể lưu được cấu trúc cây.
2. Xây dựng class Node
class Node được định nghĩa đệ quy gồm mô tả 1 Node trong quá trình truy vấn và các con
của nó. Đồng thời, lưu trữ các thuộc tính dùng để vẽ.
2.1. Các thuộc tính được khai báo:
3
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
string[] tagNodeLeft; Lưu trữ danh sách các từ trong câu thuộc
string[] tagNodeRight; thành phần truy vấn (Node) trái, phải hiện
tại.
int numsRule; Thứ tự luật được áp dụng tại Node.
bool flag; Cờ đánh dấu giá trị của truy vấn tại Node
hiện tại: true – Truy vấn dúng; false – truy
vấn sai.
Node[] chilList; Danh sách các Node con (các kết quả truy
vấn tại Node hiện tại).
Node parent; Node hiện tại là thành phần truy vấn của
panrent.
Các thuộc tính dùng để vẽ
bool isSpecialNode = false; Node đặc biệt, tên hiển thị bị thay đổi
trong quá trình truy vấn.
string draw; Nội dung sẽ dược viết (vẽ) ra của Node.
float primeDistance = 100; Khoảng các cơ bản (Pixel) giữa 2 Node
cạnh nhau (theo nghĩa hiển thị trên màn
hình). Giá trị mặc định: 100.
SizeF sizeNode; Độ rộng của Node khi vẽ. Được tính như
sau:
- Độ rộng cơ bản môt Node bằng độ rộng
của string draw; khi vẽ ra.
- Độ rộng của Node khác Node lá bằng
Max( Độ rộng cơ bản Node đó; tổng độ
rộng Node con + khoảng cách giữa các
Node).
float primeHeight; Chiều cao cơ bản giữa 2 Node bậc kề
nhau.
int numsChild; Số Node con cần vẽ ra
PointF location; Vị trí (toạ độ) của Node.
Brush brushValue=Brushes.DarkOrange; Các giá trị Brush của các thành phần cơ
Brush bản được vẽ.
brushUniValue=Brushes.OliveDrab;
Brush brushTree =
Brushes.DarkSlateGray;
static float sizeFont = 20; Size chữ và độ dày của đường kẻ.
static float lineWidth = 2.0f;
4
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
Font font = new Font("Calibri", Giá trị font chữ của các thành phần dạng
sizeFont, FontStyle.Bold, text.
GraphicsUnit.Pixel);
Font uniFont = new Font("Tahoma",
sizeFont * (float)0.618,
FontStyle.Bold, GraphicsUnit.Pixel);
5
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
6
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
Hình 4.1.1 Tỉ lệ các thành phần chính của giao diện chương trình.
7
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
Phần (I): Bảng điểu khiển, chứa toàn bộ các phím chức năng, thông tin chương trình.
Bảng điều khiển sử dụng Expanable có thể thu gọn lại để màn hình vẽ (II) rộng hơn.
Phần (II): Vùng hiển thị hình vẽ, có dạng Panel dùng thanh cuộn (do một số hình
cây lớn hơn vùng hiển thị).
8
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
Hình 4.2.1 Giao diện chính và các phím chức năng của chương trình
Ta có thể thu gọn bảng điều khiển bằng cách nhấn vào thanh tiêu đề của nó:
9
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
10
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
(2)
Văn phạm Truy vấn
1) s(A, B) :- np(A, C), vp(C, D), pp(D, B). s([nó,đã,đi,paris,vào,năm,ngoái],[]).
2) np(A, B) :- prp(A, B).
3) np(A, B) :- nrp(A, B).
4) np(A, B) :- nn(A, C), jj(C, B).
5) vp(A, B) :- vp1(A, C), np(C, B).
6) vp1(A, B) :- rb(A, C), vb(C, B).
7) pp(A, B) :- in(A, C), np(C, B).
8) prp([nó|A],A).
9) rb([đã|A],A).
10) vb([đi|A], A).
11) nrp([paris|A],A).
12) in([vào|A],A).
13) nn([năm|A],A).
14) jj([ngoái|A],A).
Kết quả: Do kích thước lớn nên ta cần dùng thanh cuộn để có thể xem hết hình.
11
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
12
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
21) rb([không|A],A).
22) rb([xào,xạc|A],A).
23) vb([kêu|A],A).
24) vb([nghe|A],A).
Kết quả:
14
BÁO CÁO ĐỒ ÁN XỬ LÝ NGÔN NGỮ TỰ NHIÊN GVHD: TS. NGUYỄN TUẤN ĐĂNG
15