Tải bản đầy đủ (.pdf) (7 trang)

Bài giảng Xử lý ngôn ngữ tự nhiên (Natural Language Processing): Bài 4 - Lê Thanh Hương

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

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

<b>Phân tích cú pháp</b>



1
Lê Thanh Hương


Bộ mơn Hệ thống Thông tin
Viện CNTT &TT – Trường ĐHBKHN
Email:


<b>Bài tốn PTCP</b>



P
T
C


cây PTCP mẫu


<b>độ chính xác</b>
tính


điể


2


C
P
Văn phạm
câu


<b>Các bộ PTCP </b>
<b>hiện nay có độ</b>


<b>chính xác cao</b>


(Eisner, Collins,
Charniak, etc.)
cây cú pháp


điểm


<b>Khái ni</b>

<b>ệ</b>

<b>m v</b>

<b>ề</b>

<b> v</b>

<b>ă</b>

<b>n ph</b>

<b>ạ</b>

<b>m</b>



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


<b>V</b>

<b>ă</b>

<b>n ph</b>

<b>ạ</b>

<b>m</b>



z

M

t v

ă

n ph

m s

n sinh là m

t h

th

ng


z

G = ( T, N, S, R ), trong

đ

ó




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 là lu

t s

n xu

t



4


<b>D</b>

<b>ạ</b>

<b>ng chu</b>

<b>ẩ</b>

<b>n Chomsky</b>



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 và 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


<b>Nh</b>

<b>ắ</b>

<b>c l</b>

<b>ạ</b>

<b>i v</b>

<b>ề</b>

<b> v</b>

<b>ă</b>

<b>n ph</b>

<b>ạ</b>

<b>m</b>



z Văn phạm: 1 tập luật viết lại


z Ký hiệu kết thúc: các ký hiệu không thể phân rã được


nữa.


z Ký hiệu không kết thúc: các ký hiệu có thể phân rã
được.


Xét ă h G


6
z Xét văn phạm G:


S →NP VP
NP →John, garbage
VP →laughed, walks
G có thể sinh ra các câu sau:


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

<b>C</b>

<b>ấ</b>

<b>u trúc ng</b>

<b>ữ</b>

<b> pháp</b>



<b>Cây cú pháp biểu diễn cấu trúc ngữ pháp của một câu. </b>
Bò vàng gặm cỏ non.


C



CN VN


7


DT


Bò ĐgặgTm


DT


cỏ nonTT


TT


vàng


DN ĐgN


DN


<b>Các </b>

<b>ứ</b>

<b>ng d</b>

<b>ụ</b>

<b>ng c</b>

<b>ủ</b>

<b>a PTCP</b>



ƒ

D

ch máy

(Alshawi 1996, Wu 1997, ...)


tiếng Anh tiếng Việt


các thao tác
với cây



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.


<b>Các </b>

<b>ứ</b>

<b>ng d</b>

<b>ụ</b>

<b>ng c</b>

<b>ủ</b>

<b>a PTCP</b>



ƒ

Ki

m tra ng

pháp

(Microsoft)
ƒ

Trích rút thông tin

(Hobbs 1996)


9


Kho văn bản
NY Times


<b>CSDL</b>
câu truy vấn


<b>V</b>

<b>ă</b>

<b>n ph</b>

<b>ạ</b>

<b>m phi ng</b>

<b>ữ</b>

<b> c</b>

<b>ả</b>

<b>nh </b>


<b>(Context-Free Grammar)</b>



… còn gọi là văn phạm cấu trúc đoạn


z G = <T,N,P,S,R>


z T – tập các ký hiệu kết thúc (terminals)


z N - tập các ký hiệu không kết thúc (non-terminals)
z P – ký hiệu tiền kết thúc (preterminals), khi 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 là ký hiệu không kết thúc; γlà chuỗi các


ký hiệu kết thúc và khơng kết thúc (có thể rỗng)


z Văn phạm G sinh ra ngôn ngữ L
z Bộ nhận dạng: trả vềyeshoặc no
z Bộ PTCP: trả về tập các cây 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 và α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 chính qui:


z A →aB,


z A →Ba,


z A →a,


với A, B ∈N, a ∈T.


VPCQ
VPPNC


VPCNC
VPNC


<b>V</b>

<b>ă</b>

<b>n ph</b>

<b>ạ</b>

<b>m phi ng</b>

<b>ữ</b>

<b> c</b>

<b>ả</b>

<b>nh</b>



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

Áp d

ng t

p lu

t ng

pháp



z

S




→NP VP


→DT NNS VBD


→<i>The children slept</i>


13
<i>p</i>


z

S



→NP VP


→DT NNS VBD NP


→DT NNS VBD DT NN


→<i>The children ate the cake</i>


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 tại 2 điểm (với VP
hoặc với NP)


<b>John saw snow on the campus</b>


15
NP


<i>0 John</i>
VP


PP
NP
<i>1 saw</i> NP


<i>2 snow</i>


<i>3 on</i>


<i>4 the 5 campus 6</i>


<b>PTCP ki</b>

<b>ể</b>

<b>u trên xu</b>

<b>ố</b>

<b>ng</b>



z Hướng đích


z Khởi đầu với 1 danh sách các ký hiệu cần triển khai (S,


NP,VP,…)



z Viết lại các đích trong tập đích bằng 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 nó với vế phải luật, tìm cách khớp với câu đầu vào


z Nếu 1 đích có nhiều cách viết lại Ỉchọn 1 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) hoặc


tìm kiếm sâu (depth-first search)


Khó kh

ă

n v

i PTCP trên xu

ng



z Các luật đệ qui trái


z PTCP trên xuống rất bất lợi khi có nhiều luật có cùng 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 cả các nút có thể phân tích trên


xuống


z PTCP trên xuống sẽ làm việc tốt khi có chiến lược điều khiển ngữ
pháp phù hợp


z PTCP trên xuống không thể triển khai các ký hiệu tiền kết thúc


thành các ký hiệu kết thúc. 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.


z Lặp lại công việc: bất cứ chỗ nào có cấu trúc giống nhau


<b>PTCP d</b>

<b>ướ</b>

<b>i lên</b>



z Hướng dữ liệu


z Khởi tạo với xâu cần phân tích


z Nếu chuỗi trong tập đích phù hợp với vế phải của 1 luật


→thay nó bằng vếtrái của luật


…….
S
NP VP


18


→thay nó bằng vế trái của luật.


z Kết thúc khi tập đích = {S}.


z Nếu vế phải của các luật khớp với nhiều luật trong 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) hoặc


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

Khó kh

ă

n v

i PTCP d

ướ

i lên



z Khơng hiệu quả khi có nhiều nhập nhằng mức


từ vựng


z Lặp lại cơng việc: bất cứ khi nào có cấu trúc con


chung


19


chung


z Cả PTCP TD (LL) và BU (LR) đều có độ phức


tạp là hàm mũ của độ dài câu.


<b>Thu</b>

<b>ậ</b>

<b>t toán CKY (b</b>

<b>ộ</b>

<b> nh</b>

<b>ậ</b>

<b>n d</b>

<b>ạ</b>

<b>ng)</b>



ƒ

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ố 0 đến n-1
ƒ cột đánh số 1 đến n


ƒ cell [i,j] liệt kê tất cả các nhãn cú pháp giữa i và j


<b>Thu</b>

<b>ậ</b>

<b>t toán CKY (bottom-up)</b>



ƒ fori := 1 to n


ƒ Thêm tất cả từ loại của từ thứ i vào ô [i-1,i]
ƒ forwidth := 2 to n


ƒ forstart := 0 to n-width


end := start + width


21


ƒ end := start + width
ƒ formid := start+1 to end-1


ƒ formọi nhãn cú pháp X trong [start,mid]



ƒ formọi nhãn cú pháp Y trong [mid,end]


ƒ formọi cách kết hợp X và Y (nếu có)


ƒ Thêm nhãn kết quả vào [start,end] nếu chưa
có nhãn này


<b>Ví d</b>

<b>ụ</b>



Bị vàng g

m c

non



1 2 3 4 5


0
DT


CN
DN


C


22


1


TT
2


ĐgT



VN


ĐgN
3


DT DN


4


TT


<b>V</b>

<b>ă</b>

<b>n ph</b>

<b>ạ</b>

<b>m phi ng</b>

<b>ữ</b>

<b> c</b>

<b>ả</b>

<b>nh</b>



1. Start→S
2. S → NP VP
3. NP → Det Noun


4. NP →Name


9. V →<i>ate</i>


10. Name →<i>John</i>


11. Name →<i>ice-cream, snow</i>
12. Noun →<i>ice-cream, pizza</i>


23


5. NP → Name PP


6. PP → Prep NP


7. VP →V NP


8. VP →V NP PP


13. Noun →<i>table, guy, campus</i>
14. Det → <i>the</i>


15. Prep → <i>on</i>


<b>Lu</b>

<b>ậ</b>

<b>t k</b>

<b>ế</b>

<b>t h</b>

<b>ợ</b>

<b>p</b>



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 và ô Cell[k,j] chứa nhãn Z,




24


với k nằm giữa i và j;


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<b>CKY ph</b>

<b>ả</b>

<b>i s</b>

<b>ử</b>

<b> d</b>

<b>ụ</b>

<b>ng lu</b>

<b>ậ</b>

<b>t nh</b>

<b>ị</b>



<b>phân</b>



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


<b>CKY chart</b>



1 2 3 4 5 6 7 8


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


<b>Áp d</b>

<b>ụ</b>

<b>ng thao tác ‘dán’</b>



1 2 3 4 5 6 7 8


0 DT NP


1 NN


27


2 VBD


3 DT


4 NN


5 IN


6 DT


7 NN


<b>Nh</b>

<b>ậ</b>

<b>p nh</b>

<b>ằ</b>

<b>ng!</b>



1 2 3 4 5 6 7 8



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


<b>Thu</b>

<b>ậ</b>

<b>t tốn Earley (top-down)</b>



z Tìm các nhãn và các nhãn thiếu (partial constituents) từ
đầu vào



z A →B C . D E là nhãn thiếu:


A

<sub>+</sub>

<sub>D</sub>

<sub>=</sub>

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


<b>Ví d</b>

<b>ụ</b>



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


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b>Recursive Descent (</b>

<b>Đệ</b>

<b> quy)</b>



z 0ROOT →<b>.</b>S 0
z 0S →<b>. </b>NP VP 0


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
0 Papa 1 ate 2 the 3 caviar 4 with 5 a 6 spoon 7


31


z 0NP →<b>. </b>Papa 0
z 0NP →Papa <b>. </b>1


z 0S →NP <b>. </b>VP 1


Root S VP


NP


VP
Papa
ROOT→S S →NP VP NP →Papa


VP
Papa



Goal stack


<b>Recursive Descent</b>



z 0S →NP <b>. </b>VP 1


z 1VP →<b>. </b>VP PP 1


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
0 Papa 1 ate 2 the 3 caviar 4 with 5 a 6 spoon 7


32


ƒ 1VP →<b>. </b>VP PP 1
ƒ 1VP →<b>. </b>VP PP 1


1VP →<b>. </b>VP PP 1 stack overflowed


VP→VP PP VP→VP PP


PP
VP
PP
VP
PP
PP


VP
PP
PP
VP→VP PP


VP <sub>PP</sub>


PP
PP
VP→VP PP


<b>Recursive Descent</b>



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 1 ate 2 the 3 caviar 4 with 5 a 6 spoon 7


ƒ 0ROOT →<b>.</b>S 0


ƒ 0S →<b>. </b>NP VP 0
NP P


33


z 1VP →<b>. </b>V NP 1 sau . = nonterminal, lặp đi lặp lại việc tìm ký hiệu này (“<b>predict</b>”)
ƒ 1V →<b>.</b>ate 1 sau . = terminal, tìm nó ởđầu vào (“<b>scan</b>”)



ƒ 1V →ate <b>. </b>2 sau . = rỗng, đích con của cha nó đã hồn chỉnh (“<b>attach</b>”)


z 1VP →V <b>. </b>NP 2 <b>predict </b>(đích con tiếp theo)


ƒ 2NP →<b>. ... </b>2 phân tích tiếp và cuối cùng …


ƒ 2NP →<b>... . </b>7 we hồn thành đích con NP của cha nó Ỉ<b>attach</b>


z 1VP →V NP <b>.</b>7 <b>attach</b>
z 0S →NP VP <b>.</b>7 <b>attach </b>


ƒ0NP →<b>. </b>Papa 0


ƒ0NP →Papa <b>. </b>1


ƒ 0S →NP <b>. </b>VP 1


<b>Recursive Descent</b>



z 0ROOT →<b>.</b>S 0


z 0S →<b>. </b>NP VP 0


z 0NP →<b>. </b>Papa 0


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 1 ate 2 the 3 caviar 4 with 5 a 6 spoon 7


thực hiện bằng lời gọi hàm:


S() gọi NP() và VP(), VPđược triển khai 1


34
p


z 0NP →Papa <b>. </b>1
z 0S →NP <b>. </b>VP 1


z 1VP →<b>. </b>V NP 1
ƒ 1V →<b>.</b>ate 1
ƒ 1V →ate <b>. </b>2


z 1VP →V <b>. </b>NP 2
ƒ 2NP →<b>. ... </b>2
ƒ 2NP →<b>... . </b>7


z 1VP →V NP <b>.</b>7
z 0S →NP VP <b>.</b>7


cần quay lại để thử 1 luật VP khác
S() gọi NP() và VP(), VP được triển khai 1
cách đệ qui


<b>Recursive Descent</b>



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 1 ate 2 the 3 caviar 4 with 5 a 6 spoon 7


ƒ 0ROOT →<b>.</b>S 0


ƒ 0S →<b>. </b>NP VP 0


ƒ0NP →<b>. </b>Papa 0


35


ƒ 1VP →<b>.</b>V NP 1
ƒ 1 V →<b>.</b>ate 1
ƒ 1V →ate <b>. </b>2
ƒ 1VP →V <b>. </b>NP 2


ƒ 2NP →<b>. ... </b>2 phân tích tiếp và cuối cùng…


ƒ 2NP →<b>... </b>. 4 ... đoạn NP đúng là từ2 đến 4


chỗ này cũng cần quay lại


0NP →<b>. </b>Papa 0


ƒ0NP →Papa <b>. </b>1


ƒ 0S →NP <b>. </b>VP 1



ƒ1VP →<b>. </b>VP PP 1


<b>Recursive Descent</b>



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 1 ate 2 the 3 caviar 4 with 5 a 6 spoon 7


ƒ 0ROOT →<b>.</b>S 0


ƒ 0S →<b>. </b>NP VP 0
NP P


36


ƒ 1VP →<b>.</b>VP PP 1
1VP →<b>.</b>VP PP 1


1VP →<b>.</b>VP PP 1
stack overflowed


không giải quyết được gì


– cần thay đổi tập luật đểloại trừđệqui trái


ƒ0NP →<b>. </b>Papa 0



ƒ0NP →Papa <b>. </b>1


ƒ 0S →NP <b>. </b>VP 1


ƒ1VP →<b>. </b>VP PP 1


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b>Thuật toán Earley</b>



z Thuật tốn Earley giống thuật tốn đệ qui nói trên, nhưng giải
quyết được 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 các
thơng tin đã tìm thấy Ỉlập trình động <b>“Dynamic programming.”</b>


<b>Các thao tác của thuật toán</b>


37
z Xử lý phần đi sau dấu . theo kiểu đệ qui :


z Nếu là từ, quét (<b>scan)</b>đầu vào để xem có phù hợp khơng
z Nếu là ký hiệu khơng kết thúc, đốn (<b>predict</b>) các khả năng để


khớp nó (giảm số phép tiên đốn bằng cách nhìn trước k ký
hiệu từ đầu vào và chỉ sử dụng các luật phù hợp với k ký hiệu
đó)


z Nếu rỗng, ta đã hồn thành một thành phần ngữ pháp, gắn
(<b>attach</b>) nó vào những chỗ liên quan



<b>0</b>


0 ROOT . S


<b>khởi tạo</b>


tương đương với (0, ROOT →. S)


38


<b>0</b>


0 ROOT . S


0 S . NP VP


<b>predict</b>luật có vế trái là S


(0, S →. NP VP)


39


<b>0</b>
0 ROOT . S


0 S . NP VP


0 NP . Det N
0 NP . NP PP
0 NP . Papa



<b>predict</b>luật có VT = NP
(có 3 luật phù hợp)


40


<b>0</b>
0 ROOT . S
0 S . NP VP


0 NP . Det N


0 NP . NP PP
0 NP . Papa
0 D t th


<b>predict</b>luật có VT = Det (2 luật)


41
0 Det . the


0 Det . a


<b>0</b>
0 ROOT . S
0 S . NP VP
0 NP . Det N


0 NP . NP PP



0 NP . Papa
0 D t th


<b>predict</b>luật có VT = NP


ta đã làm việc này ở bước trước, vì vậy khơng làm lại!
Chú ý: ta phải làm lại việc này với luậtđệqui trái


42
0 Det . the


0 Det . a


</div>

<!--links-->

×