Trên thực tế, người ta thường sử dụng phương pháp dưới lên để làm việc này.[r]
(1)Phân tích cú pháp
1 Lê Thanh Hương
Bộ môn Hệ thống Thông tin Viện CNTT &TT – Trường ĐHBKHN Email: huonglt-fit@mail.hut.edu.vn
Bài toán PTCP
P T C
cây PTCP mẫu
độ xác tính
điể
2
C P Văn phạm câu
Các PTCP hiện có độ chính xác cao
(Eisner, Collins, Charniak, etc.) cú pháp
điểm
Khái niệm về văn phạm
z Phân tích câu “Bị vàng gặm cỏ non” z Cây cú pháp:
z Tập luật
z C ỈCN VN
z CN ỈDN z VN ỈĐgN
z ĐgN ỈĐgT DN
z DN ÆDT TT
3
Văn phạm
z Một văn phạm sản sinh một hệ thống z G = ( T, N, S, R ), đó
z T (terminal) – tập ký hiệu kết thúc
z N (non terminal) – tập ký hiệu không kết thúc z S (start) – ký hiệu khởi đầu
z R (rule) – tập luật
z R = { αỈβ| α, β ∈(T∪N) } z αỈβgọi luật sản xuất
4
Dạng chuẩn Chomsky
z Mọi NNPNC khơng chứa εđều có thể sinh từ một văn phạm tnđó mọi sản xuất đều có dạng A ỈBC hoặc A Ỉa, với A,B,C∈N a ∈T
∈T
z Ví dụ: Tìm dạng chuẩn Chomsky cho văn phạm G với T = {a,b}, N ={S,A,B}, R như sau:
z S ỈbA|aB
z A ỈbAA|aS|a
z B ỈaBB|bS|b
5
Nhắc lại về văn phạm
z Văn phạm: tập luật viết lại
z Ký hiệu kết thúc: ký hiệu phân rã
nữa
z Ký hiệu không kết thúc: ký hiệu phân rã
Xét ă h G
6 z Xét văn phạm G:
S →NP VP NP →John, garbage VP →laughed, walks G sinh câu sau:
(2)Cấu trúc ngữ pháp
Cây cú pháp biểu diễn cấu trúc ngữ pháp câu Bò vàng gặm cỏ non
C
CN VN
7
DT
Bò ĐgặgTm
DT
cỏ nonTT
TT
vàng
DN ĐgN
DN
Các ứng dụng của PTCP
Dịch máy (Alshawi 1996, Wu 1997, )
tiếng Anh tiếng Việt
các thao tác với
8 Nhận dạng tiếng nói sử dụng PTCP (Chelba et al 1998)
Put the file in the folder Put the file andthe folder
Các ứng dụng của PTCP
Kiểm tra ngữ pháp (Microsoft) Trích rút thơng tin (Hobbs 1996)
9
Kho văn NY Times
CSDL câu truy vấn
Văn phạm phi ngữ cảnh (Context-Free Grammar)
… gọi văn phạm cấu trúc đoạn
z G = <T,N,P,S,R>
z T – tập ký hiệu kết thúc (terminals)
z N - tập ký hiệu không kết thúc (non-terminals) z P – ký hiệu tiền kết thúc (preterminals), viết lại trở
thành ký hiệu kết thúc P⊂N
10 thành ký hiệu kết thúc, P ⊂N
z S – ký hiệu bắt đầu
z R: X → γ, X ký hiệu không kết thúc; γlà chuỗi
ký hiệu kết thúc khơng kết thúc (có thể rỗng)
z Văn phạm G sinh ngôn ngữ L z Bộ nhận dạng: trả vềyeshoặc no z Bộ PTCP: trả tập cú pháp
So với văn phạm cảm ngữ cảnh R: αAγ ⇒ αβγ
z Văn phạm ngữ cấu: z α→β, với α ∈V+ , β ∈V*
z Văn phạm cảm ngữ cảnh:
z r = α→β, với α ∈V+ , β ∈V* , ⏐α⏐≤⏐β⏐
z α1Aα2→α1β’α2 với β’≠ε
z Văn phạm phi ngữ cảnh:
z A → θ, A ∈N,
ớiθ V* ( T N )*
11
z với θ ∈V*= ( T ∪N )*
z Văn phạm qui:
z A →aB,
z A →Ba,
z A →a,
với A, B ∈N, a ∈T
VPCQ VPPNC
VPCNC VPNC
Văn phạm phi ngữ cảnh
(3)Áp dụng tập luật ngữ pháp
z S
→NP VP
→DT NNS VBD
→The children slept
13 p
z S
→NP VP
→DT NNS VBD NP
→DT NNS VBD DT NN
→The children ate the cake
Cấu trúc đoạn đệ qui
14
Văn phạm cho ngôn ngữ tự nhiên có nhập nhằng
S
NP VP
Nhập nhằng - PP
có thểgắn điểm (với VP với NP)
John saw snow on the campus
15 NP
0 John VP
PP NP 1 saw NP
2 snow
3 on
4 the campus 6
PTCP kiểu xuống
z Hướng đích
z Khởi đầu với danh sách ký hiệu cần triển khai (S,
NP,VP,…)
z Viết lại đích tập đích cách: S NP VP
……
16
z tìm luật có vế trái trùng với đích cần triển khai
z triểu khai với vế phải luật, tìm cách khớp với câu đầu vào
z Nếu đích có nhiều cách viết lại Ỉchọn luật để áp
dụng (bài tốn tìm kiếm)
z Có thể sử dụng tìm kiếm rộng (breadth-first search)
tìm kiếm sâu (depth-first search)
Khó khăn với PTCP xuống
z Các luật đệ qui trái
z PTCP xuống bất lợi có nhiều luật có vế trái
S→NP X1 S→NP X2 …… S→NP X600 S→VP Y1
17
z Nhiều thao tác thừa: triển khai tất nút phân tích
xuống
z PTCP xuống làm việc tốt có chiến lược điều khiển ngữ pháp phù hợp
z PTCP xuống triển khai ký hiệu tiền kết thúc
thành ký hiệu kết thúc Trên thực tế, người ta thường sử dụng phương pháp lên để làm việc
z Lặp lại cơng việc: chỗ có cấu trúc giống
PTCP dưới lên
z Hướng liệu
z Khởi tạo với xâu cần phân tích
z Nếu chuỗi tập đích phù hợp với vế phải luật
→thay vếtrái luật
…… S NP VP
18 →thay vế trái luật
z Kết thúc tập đích = {S}
z Nếu vế phải luật khớp với nhiều luật tập đích, cần lựa chọn luật áp dụng (bài tốn tìm kiếm)
z Có thể sử dụng tìm kiếm rộng (breadth-first search)
(4)Khó khăn với PTCP dưới lên
z Không hiệu có nhiều nhập nhằng mức
từ vựng
z Lặp lại cơng việc: có cấu trúc
chung
19
chung
z Cả PTCP TD (LL) BU (LR) có độ phức
tạp hàm mũ độ dài câu
Thuật toán CKY (bộ nhận dạng)
Vào:xâu n từ Ra:yes/no
Cấu trúc ngữ pháp: bảng n x n (chart table)
20
g p p g ( )
hàng đánh số đến n-1 cột đánh số đến n
cell [i,j] liệt kê tất nhãn cú pháp i j
Thuật toán CKY (bottom-up)
fori := to n
Thêm tất từ loại từ thứ i vào ô [i-1,i] forwidth := to n
forstart := to n-width
end := start + width
21
end := start + width formid := start+1 to end-1
formọi nhãn cú pháp X [start,mid]
formọi nhãn cú pháp Y [mid,end]
formọi cách kết hợp X Y (nếu có)
Thêm nhãn kết vào [start,end] chưa có nhãn
Ví dụ
Bò vàng gặm cỏ non
1
0 DT
CN DN
C
22
1
TT
ĐgT
VN
ĐgN
DT DN
4
TT
Văn phạm phi ngữ cảnh
1 Start→S S → NP VP NP → Det Noun
4 NP →Name
9 V →ate
10 Name →John
11 Name →ice-cream, snow 12 Noun →ice-cream, pizza
23
5 NP → Name PP PP → Prep NP
7 VP →V NP
8 VP →V NP PP
13 Noun →table, guy, campus 14 Det → the
15 Prep → on
Luật kết hợp
z Ơ Cell[i,j] chứa nhãn X nếu
z Có luật X→YZ;
z Cell[i,k] chứa nhãn Y ô Cell[k,j] chứa nhãn Z,
ằ
24
với k nằm i j;
(5)CKY phải sử dụng luật nhị
phân
z Chuyển VP→V NP PP thành:
8.a VP→V Arguments
8 b Arguments→ NP PP
25
8.b Arguments → NP PP
CKY chart
1
0 DT
1 NN
2 VBD
“ The guy ate the ice-cream on the table”
26
2 VBD
3 DT
4 NN
5 IN
6 DT
7 NN
Áp dụng thao tác ‘dán’
1
0 DT NP
1 NN
27
2 VBD
3 DT
4 NN
5 IN
6 DT
7 NN
Nhập nhằng!
1
0 DT NP S
1 NN
2 VBD VP
5 NP → NN PP 8.a VP→V Arguments 8.b Arguments → NP PP
28
3 DT NP NP,
Args
4 NN
5 IN PP
6 DT NP
7 NN
Thuật toán Earley (top-down)
z Tìm nhãn nhãn thiếu (partial constituents) từ đầu vào
z A →B C D E nhãn thiếu:
A + D = A
29
z Tiến hành dần từ trái sang phải
B C D E
A →B C D E
B C D E
A →B C D E
Ví dụ
ROOT →S NP→Papa
S →NP VP N →caviar
NP →Det N N →spoon
30
NP →NP PP V →ate
VP →VP PP P →with
VP →V NP Det →the
(6)Recursive Descent (Đệ quy)
z 0ROOT →.S z 0S → NP VP
ROOT →S VP →VP PP NP→Papa V →ate S →NP VP VP →V NP N →caviar P →with NP →Det N PP →P NP N →spoon Det→the NP →NP PP Det→a Papa ate the caviar with a spoon
31
z 0NP → Papa z 0NP →Papa 1
z 0S →NP VP
Root S VP
NP
VP Papa ROOT→S S →NP VP NP →Papa
VP Papa
Goal stack
Recursive Descent
z 0S →NP VP
z 1VP → VP PP
ROOT →S VP →VP PP NP→Papa V →ate S →NP VP VP →V NP N →caviar P →with NP →Det N PP →P NP N →spoon Det→the NP →NP PP Det→a Papa ate the caviar with a spoon
32
1VP → VP PP 1VP → VP PP
1VP → VP PP stack overflowed
VP→VP PP VP→VP PP
PP VP PP VP PP PP VP PP PP VP→VP PP
VP PP
PP PP VP→VP PP
Recursive Descent
ROOT →S VP →V NP NP→Papa V →ate S →NP VP VP →VP PP N →caviar P →with NP →Det N PP →P NP N →spoon Det→the NP →NP PP Det→a
0 Papa ate the caviar with a spoon
0ROOT →.S
0S → NP VP NP P
33
z 1VP → V NP sau = nonterminal, lặp lặp lại việc tìm ký hiệu (“predict”) 1V →.ate sau = terminal, tìm ởđầu vào (“scan”)
1V →ate 2 sau = rỗng, đích cha hồn chỉnh (“attach”)
z 1VP →V NP predict (đích tiếp theo)
2NP → 2 phân tích tiếp cuối …
2NP → 7 we hoàn thành đích NP cha Ỉattach
z 1VP →V NP .7 attach z 0S →NP VP .7 attach
0NP → Papa
0NP →Papa 1
0S →NP VP
Recursive Descent
z 0ROOT →.S
z 0S → NP VP
z 0NP → Papa
ROOT →S VP →V NP NP→Papa V →ate S →NP VP VP →VP PP N →caviar P →with NP →Det N PP →P NP N →spoon Det→the NP →NP PP Det→a
0 Papa ate the caviar with a spoon
thực lời gọi hàm:
S() gọi NP() VP(), VPđược triển khai
34 p
z 0NP →Papa 1 z 0S →NP VP
z 1VP → V NP 1V →.ate 1V →ate 2
z 1VP →V NP 2NP → 2 2NP → 7
z 1VP →V NP .7 z 0S →NP VP .7
cần quay lại để thử luật VP khác S() gọi NP() VP(), VP triển khai cách đệ qui
Recursive Descent
ROOT →S VP →V NP NP→Papa V →ate S →NP VP VP →VP PP N →caviar P →with NP →Det N PP →P NP N →spoon Det→the NP →NP PP Det→a
0 Papa ate the caviar with a spoon
0ROOT →.S
0S → NP VP
0NP → Papa
35
1VP →.V NP V →.ate 1V →ate 2 1VP →V NP
2NP → 2 phân tích tiếp cuối cùng…
2NP → đoạn NP từ2 đến
chỗ cần quay lại
0NP → Papa
0NP →Papa 1
0S →NP VP
1VP → VP PP
Recursive Descent
ROOT →S VP →V NP NP→Papa V →ate S →NP VP VP →VP PP N →caviar P →with NP →Det N PP →P NP N →spoon Det→the NP →NP PP Det→a
0 Papa ate the caviar with a spoon
0ROOT →.S
0S → NP VP NP P
36
1VP →.VP PP 1VP →.VP PP
1VP →.VP PP stack overflowed
khơng giải
– cần thay đổi tập luật đểloại trừđệqui trái
0NP → Papa
0NP →Papa 1
0S →NP VP
1VP → VP PP
(7)Thuật toán Earley
z Thuật tốn Earley giống thuật tốn đệ qui nói trên, giải vấn đềđệ qui trái
z Sử dụng bảng phân tích giống thuật tốn CKY, nhằm lưu lại thơng tin tìm thấy Ỉlập trình động “Dynamic programming.”
Các thao tác thuật toán
37 z Xử lý phần sau dấu theo kiểu đệ qui :
z Nếu từ, quét (scan)đầu vào để xem có phù hợp khơng z Nếu ký hiệu khơng kết thúc, đốn (predict) khả để
khớp (giảm số phép tiên đốn cách nhìn trước k ký hiệu từ đầu vào sử dụng luật phù hợp với k ký hiệu đó)
z Nếu rỗng, ta hồn thành thành phần ngữ pháp, gắn (attach) vào chỗ liên quan
0
0 ROOT S
khởi tạo
tương đương với (0, ROOT → S)
38
0
0 ROOT S
0 S NP VP
predictluật có vế trái S
(0, S → NP VP)
39
0 ROOT S
0 S NP VP
0 NP Det N NP NP PP NP Papa
predictluật có VT = NP (có luật phù hợp)
40
0 ROOT S S NP VP
0 NP Det N
0 NP NP PP NP Papa D t th
predictluật có VT = Det (2 luật)
41 Det the
0 Det a
0 ROOT S S NP VP NP Det N
0 NP NP PP
0 NP Papa D t th
predictluật có VT = NP
ta làm việc bước trước, không làm lại! Chú ý: ta phải làm lại việc với luậtđệqui trái
42 Det the
0 Det a