Tải bản đầy đủ (.pptx) (18 trang)

phân tích cú pháp theo phương pháp Earley

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 (542.03 KB, 18 trang )

Gi¸o viªn h ng dÉn: TS. Hµ ChÝ Trungướ
Nhãm th c hi n:ự ệ
1/ V ng Th Tuy nươ ị ế
2/ L u Th Th như ị ả
3/ Nguy n Huy Linhễ
KHOA CNTT H C VI N KTQS– Ọ Ệ
NHãM 6 TIN HäC 9A–
O0O
ÁN M¤N H C: ĐỒ Ọ
AUTOMATA Vµ NG¤N NG÷ H×NH THøC
PH N T CH Có PH PÂ Í Á
THEO PH NG PH P EARLEYƯƠ Á
Ngµy hoµn thµnh: 11/01/2013
N I DUNG BÁO CÁOỘ
Đặt vấn đề
Mục đích của việc giải bài toán được giao
Lý thuyết
Các lý thuyết liên quan tới bài toán
Sơ đồ thuật toán
Thuật toán làm việc của bài toán
Chương trình
Các giao diện chính của chương trình
1
2
5
3
4
Cấu trúc chương trình
Cấu trúc chương trình
Ví dụ
Ví dụ minh họa


6
Kết luận
Các nhận xét
7
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
Tài liệu tham khảo
Tài liệu tham khảo trong quá trình làm đồ án
8
Giải thuật Earley là một giải thuật cơ bản, được sử dụng tương đối rộng rãi trong
các hệ thống phân tích cú pháp.
Tuy nhiên, giải thuật này vẫn còn hạn chế như sinh ra quá nhiều luật dư thừa trong
quá trình phân tích.
Trong bài này, chúng em xin phép được đề xuất ra phương pháp phân tích cú pháp
theo giải thuật Earley.

Đặt vấn đề (1/4)
Mục đích của việc giải bài toán được giao
1/8
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
Giải thuật Earley là một trong những giải thuật được sử dụng phổ biến trong việc
xây dựng các hệ thống phân tích cú pháp.
Giải thuật này sử dụng chiến lược phân tích kiểu trên-xuống (top-down), bắt đầu
với một ký hiệu không kết thúc đại diện cho câu và sử dụng các luật khai triển cho đến khi
thu được câu vào.
Hạn chế của cách tiếp cận này là không chú trọng nhiều đến các từ đầu vào. Vì vậy,
trong quá trình phân tích, giải thuật Earley sản sinh ra rất nhiều luật dư thừa.

Đặt vấn đề (2/4)
Mục đích của việc giải bài toán được giao
1/8

Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
Ngoài ra, giải thuật Earley được xây dựng cho tiếng Anh nên khi áp dụng cho tiếng
Việt sẽ có hạn chế:
Mỗi câu vào tiếng Anh chỉ có một cách tách từ, trong khi với tiếng Việt, mỗi câu vào
có thể có nhiều cách tách từ khác nhau.
Với đặc điểm đầu vào của giải thuật Earley chỉ là một câu với một cách tách, bộ
phân tích cú pháp sẽ phải thực hiện lặp đi lặp lại giải thuật này cho từng trường hợp tách
từ đối với tiếng Việt.

Đặt vấn đề (3/4)
Mục đích của việc giải bài toán được giao
1/8
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
Để giải quyết vấn đề này, khi xem xét các tài liệu, chúng em nhận thấy trong
các cách tách từ Việt tồn tại các cặp cách tách giống nhau ở danh sách các
từ loại đầu tiên và chỉ khác nhau ở phần đuôi của chúng.

Đặt vấn đề (4/4)
Mục đích của việc giải bài toán được giao
1/8
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
Giải thuật Earley cơ bản được phát biểu như sau:
Đầu vào: Văn phạm G = (N, T, S, P), trong đó:
N: tập kí hiệu không kết thúc.
T: tập kí hiệu kết thúc.
S: kí hiệu không kết thúc bắt đầu.
P: tập luật cú pháp.
Xâu vào w = a
1
a

2
a
n
.
Đầu ra: Phân tích đối với w hoặc "sai".
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

Lý thuyết (1/3)
Lý thuyết về giải thuật Earley
2/8
Kí hiệu:

α, β, γ biểu diễn xâu chứa các kí hiệu kết thúc, không kết thúc hoặc rỗng.

X, Y, Z biểu diễn các kí hiệu không kết thúc đơn.

a biểu diễn kí hiệu kết thúc.
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

Lý thuyết (2/3)
Lý thuyết về giải thuật Earley
2/8

Earley sử dụng cách biểu diễn luật thông qua dấu chấm “•”
X→ α • β có nghĩa là:
Trong P có một luật sản xuất X→ α β.
α đã được phân tích.
β đang được chờ phân tích.

Khi dấu chấm “•” được chuyển ra sau β có nghĩa rằng đây là một luật hoàn thiện. Thành phần X đã được phân tích

đầy đủ, ngược lại nó là một luật chưa hoàn thiện.

Đối với mỗi từ thứ j của xâu đầu vào, bộ phân tích khởi tạo một bộ có thứ tự các trạng thái S(j).

Mỗi bộ tương ứng với một cột trong bảng phân tích. Mỗi trạng thái có dạng (X → α • β, i), thành phần sau dấu
phẩy xác định rằng luật này được phát sinh từ cột thứ i.
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

Lý thuyết (3/3)
Lý thuyết về giải thuật Earley
2/8
Các hàm trong chương trình:
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
3/8

Cấu trúc chương trình
Cấu trúc chương trình
1) void nhapDanhTu(map<string, unsigned int> &TL)
2) void nhapNoiDongTu(map<string, unsigned int> &TL)
3) void nhapNgoaiDongTu(map<string, unsigned int> &TL)
4) void nhapTinhTu(map<string, unsigned int> &TL)
5) void nhapGioiTu(map<string, unsigned int> &TL)
6) void nhapMaoTu(map<string, unsigned int> &TL)
7) void nhapDaiTu(map<string, unsigned int> &TL)
8) void nhapTroDongTu(map<string, unsigned int> &TL)
9) void nhapDanhSachLuat(vector<int> Luat[], int &iNumRule)
10) void nhapCauInput(vector<string> &Cau)
11) void thuatToan(vector<string> Cau, vector<int> Luat[], map<string, unsigned int> &TuLoai, int
iNumRule, vector<vector<int> > Table[])
12) void testTableOutput(vector<vector<int> > Table[], int iNumWord)

Đối với mỗi bộ S(j), thuật toán phân tích thực hiện 3 bước:
(1) Dự đoán (Predictor):
Với mọi trạng thái trong S(j): (X → α • Y β, i), ta thêm trạng thái (Y → • γ, j) vào S(j) nếu có luật sản xuất Y →
γ trong P.
(2) Duyệt (Scanner):
Nếu a là kí hiệu kết thúc tiếp theo. Với mọi trạng thái trong S(j): (X → α • a β, i), ta thêm trạng thái (X → α a •
β, i) vào S(j+1).
(3) Hoàn thiện (Completer):

Với mọi trạng thái trong S(j): (X → γ• , i), ta tìm trong S(i) trạng thái (Y → α • X β, k), sau đó thêm (Y → α X •
β, k) vào S(j).

Ở mỗi bộ S(j) phải kiểm tra xem trạng thái đã có chưa trước khi thêm vào để tránh trùng lặp.
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

Sơ đồ thuật toán
Thuật toán làm việc của bài toán
4/8
1
2
3
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
5/8

Ví dụ (1/3)
Ví dụ minh họa
Phân tích câu “học sinh học sinh học” với tập luật cú pháp như sau:
S → N VP
S → P VP
S → N AP

S → VP AP
VP → V N
VP → V NP
NP → N N
NP → N A
AP → R A
N → học sinh
N → sinh học
V → học
V → sinh
Trong đó:
S – câu
VP – cụm động từ
NP – cụm danh từ
AP – cụm tính từ
P – đại từ
N – danh từ
V – động từ
A – tính từ
R – phụ từ
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY
Do câu trên có nhiều cách tách từ, trong khi đầu vào của giải thuật Earley chỉ là một
câu với một cách tách từ nên em minh họa giải thuật Earley với cách tách từ trong trường hợp
câu được phân tích là: học sinh, học, sinh học.
Phân tích câu “học sinh học sinh học”:
5/8

Ví dụ (2/3)
Ví dụ minh họa
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

Bảng phân tích cho cách tách này như sau:
Cột 0 1 2 3
ROOT • S, 0 N học sinh•, 0 V học•, 1 N sinh học•, 2
S •N VP, 0 S N •VP, 0 VP V •N, 1 VP V N•, 1
S •P VP, 0 S N •AP, 0 VP V •NP, 1 NP N •N, 2
S •N AP, 0 VP •V N, 1 NP •N N, 2 NP N •A, 2
S •VP AP, 0 VP •V NP, 1 NP •N A, 2 S N VP•, 0
VP •V N, 0 AP •R A, 1 N •học sinh, 2 ROOT S•, 0
VP •V NP, 0 V •học, 1 N •sinh học, 2
N •học sinh, 0
N •sinh học, 0
V •học, 0
Phân tích câu “học sinh học sinh học”:
5/8

Ví dụ (3/3)
Ví dụ minh họa
Giao diện ch ương trình:
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

Chương trình
Các giao diện chính của chương trình
6/8
Kết quả:

Người ta gọi giải thuật Earley là thuật toán tổng hợp hay thuật toán vạn năng vì chúng
có thể phân tích ngữ pháp cho một văn phạm bất kỳ .Tuy nhiên do tính vạn năng của
chúng cho nên nói chung là phương pháp này không hiệu quả với một văn phạm cụ thể
nào,vì lý do trên ,người ta ít sử dụng chúng để viết các chương trình dịch (complier).


Trong bài em chưa thực hiện viết được trên giao diện winform để trình bày cho dễ
hiểu, chúng em sẽ cố gắng thực hiện trong thời gian tới.
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

Kết luận
Các nhận xét
7/8
Tài liệu tham khảo
Tài liệu tham khảo trong quá trình làm đồ án
8/8
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY



Ngôn ngữ hệ thống và chương trình dịch
(Học viện KTQS)

Đồ án automata khóa 8
KÍNH CHÚC THẦY, CÔ GIÁO
SỨC KHỎE, HẠNH PHÚC!
BÀI THUYẾT TRÌNH CỦA CHÚNG EM
ĐẾN ĐÂY KẾT THÚC
Đồ án: PHÂN TÍCH CÚ PHÁP THEO PHƯƠNG PHÁP EARLEY

×