Với mô hình sử dụng một văn phạm phi ngữ cảnh, chúng ta đã biết trước được mộttập ngữ pháp với các sản xuất/ luật hoàn chỉnh mà một câu thuộc ngôn ngữ phảituân theo và thực hiện việc phâ
Trang 1TRƯỜNG ĐẠI HỌC XÂY DỰNG HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
-□□&□□ -Báo cáo cuối kì
Xử lý ngôn ngữ tự nhiên
65CS2 Chương 8: Phân tích cấu trúc câu
(Analyzing Sentence Structure)
Thành viên: Nguyễn Huy Hiệu 1520065
Trang 2
MỤC LỤC
Trang 31 Tổng quan về phân tích cấu trúc câu
8.2 Phân tích ngữ pháp phụ thuộc bằng Python
8.2.1 Phân tích ngữ pháp phụ thuộc với NLTK, Underthesea
Trang 4Phân tích cấu trúc của câu là một quá trình quan trọng trong việc sử lý ngôn ngữ tựnhiên, nó xét đến một khía cạnh khác của ngôn ngữ và có ứng dụng rất lớn trongquá trình xử lý ngôn ngữ con người Lấy ví dụ cho một hiện tượng công nghệ phổbiến gần đây là ChatGPT – một công cụ có khả năng tiếp nhận và trả lời ngườidùng rất giống con người với một độ chính xác rất cao Có rất nhiều kĩ thuật được
áp dụng để có thể đạt được độ chính xác này và chắc chắn không thể thiếu việcphân tích cấu trúc của câu
Một ngôn ngữ có thể được biểu diễn bằng nhiều lớp với rất nhiều các cấu trúc conkhác nhau Do đó quá trình phân tích cấu trúc câu sẽ phân tích các lớp và các cấutrúc câu này để giải quyết các vấn đề cốt lõi trong xử lý ngôn ngữ như kiểm tra mộtcâu có thuộc một ngôn ngữ hay không, hiểu một câu hay cách để sinh ra một câuđúng thuộc một ngôn ngữ Quá trình phân tích cấu trúc của một bao gồm hai quátrình con là phân tích cú pháp của câu và phân tích phụ thuộc ngữ pháp của câu
1.1 Phân tích cú pháp
Phân tích cú pháp là quá trình phân tích câu thành các cấu trúc cú pháp Trong quátrình nghiên cứu việc phân tích cú pháp, có hai cách tiếp cận chính là sử dụng vănphạm phi ngữ cảnh (CFG) hoặc sử dụng một văn phạm phi ngữ cảnh xác suất(PCFG)
Với mô hình sử dụng một văn phạm phi ngữ cảnh, chúng ta đã biết trước được mộttập ngữ pháp với các sản xuất/ luật hoàn chỉnh mà một câu thuộc ngôn ngữ phảituân theo và thực hiện việc phân tích ngữ pháp dựa trên tập này Để phương phápnày có độ chính xác cao thì đòi hỏi độ chính xác và đầy đủ của văn phạm cũng như
có chiến lược chọn sản xuất phù hợp trong quá trình phân tích cú pháp cho câu.Với mô hình sử dụng xác suất, sử dụng một tập huấn luyện cho trước như các đoạnvăn bản, câu, … Chúng ta sẽ tạo một mô hình để huấn luyện cho tập này cho máy
có thể học và tạo ra văn phạm/ luật cho ngôn ngữ dựa trên xác suất Độ hiệu quảcủa phương pháp này đòi hỏi tập dữ liệu cần phải lớn và đa dạng
1.2 Phân tích phụ thuộc ngữ pháp
Trang 5Việc phân tích phụ thuộc ngữ pháp dựa trên cơ sở là mỗi một từ trong một câu cóthể được kết nối với một từ khác Sự kết nối này còn được gọi là sự phụ thuộctrong ngôn ngữ học Phân tích phụ thuộc ngữ pháp có thể sử dụng để giải quyết cácnhiệm vụ xử lý ngôn ngữ tự nhiên như phân tích câu, tóm tắt văn bản, dịch máy, vàhỏi đáp tự động Kết quả của phân tích phụ thuộc là cây phụ thuộc (dependencytree) biểu diễn mối quan hệ giữa các từ trong câu.
2 Văn phạm và nhập nhằng về văn phạm
2.1 Văn phạm
Khái niệm: Văn phạm là tập các quy tắc về cấu tạo từ và các quy tắc liên kết các từthành một câu Văn phạm cho chúng ta biết liệu một câu có được tạo ra đúng ngữpháp hay không Một ví dụ của văn phạm là một câu (S) có thể bao gồm chủ ngữ(NP) theo sau là một vị ngữ (VP) biểu diễn như sau:
S -> NP VPTrong thực tế các câu có cấu trúc phức tạp hơn nhiều với các cấu trúc khác nhau.Một văn phạm có thể được biểu diễn bằng một bộ (V, T, S, P) trong đó:
- V là tập hữu hạn các ký hiệu chưa kết thúc
- T : tập hữu hạn các ký hiệu kết thúc (terminals, tookens)
- P : là tập luật sinh của văn phạm (productions)
- S V: ký hiệu bắt đầu của văn phạm (start symbol)∈
Trang 6( S ( NP Nam) ( VP ( V đi) (NP đá bóng)))
Cấu trúc câu còn có thể được biểu diễn bằng cây cú pháp như sau:
Ta thấy là mục đích của văn phạm là đưa ra một mô tả rõ ràng về một ngôn ngữ
1.2 Sự nhập nhằng của văn phạm
Nhập nhằng là một vấn đề rất đáng lưu tâm trong quá trình phân tích cú pháp.Nhập nhằng xảy ra khi phân tích một câu mà có thể sinh ra nhiều hơn một cáchphân tích câu này khi sử dụng cùng một bộ ngữ pháp
Để giải thích rõ hơn sự nhập nhằng của văn phạm, chúng ta sử dụng một câu nhưsau:
“I shot an elephant in my pajamas”
Nhìn chung, câu trên không có gì quá đặc biệt Tuy nhiên thực hiện phân tích cúpháp của câu trên bộ văn phạm sau:
Thì chúng ta sẽ nhận được hai cây cú pháp như sau:
Trang 7Có thể xét hai câu sau:
“Phần tồi tệ nhất và ngớ ngẩn là tôi đã không biếtThoạt nhìn thì rất khó để có thể chỉ ra rằng câu trên không đúng ở điểm nào Hãy
kỹ vào cụm “Phần tồi tệ nhất và ngớ ngẩn”, đây có vẻ chỉ là một cấu trúc đồngđiệu (Coordinate Structure) với hai cụm từ được kết nối bằng một kết từ (và) Tuynhiên cú pháp đúng của cấu trúc này là hai cụm từ được kết nối phải có một sựtương đương với nhau vè chức năng, ngữ nghĩa và hai cụm “Phần tồi tệ nhất” và
“ngớ ngẩn” thì không đạt được điều này vì một cụm từ là cụm danh từ và cụm cònlại là cụm tính từ Do đó câu trên sai về mặt cú pháp
Trang 8Một ví dụ khác về tác dụng củ cú pháp như sau:
Sai: Em thích chơi đàn, nhưng không biết hát
Đúng: Em thích chơi đàn nhưng không biết hát
Câu "Em thích chơi đàn, nhưng không biết hát" không đúng về mặt ngữ pháp, vìtrong tiếng Việt, không nên dùng dấu phẩy để ngăn cách trợ từ "nhưng" với phầncòn lại của câu Thay vào đó, chúng ta có thể sử dụng dấu chấm để tách hai ý nàylàm hai câu độc lập, hoặc sử dụng từ "nhưng" mà không cần đặt dấu phẩy.Vậy để tránh các lỗi về mặt cú pháp như trên thì chúng ta cần phải hiểu một kháiniệm khác là cấu trúc thành phần của một câu (Constituent structure) Cấu trúcthành phần là một khái niệm trong ngữ pháp, đề cập đến cách mà các thành phầncủa một câu được phân tích thành các thành phần nhỏ hơn Lấy ví dụ sau:
“Chú gấu nhỏ nhìn thấy con cá hồi to đẹp trong suối”
Nếu chúng ta thay cụm từ chú gấu nhỏ bằng từ anh ấy thì câu nhận được vẫn chínhxác Nhưng chúng ta không thể thay đổi cụm gấu nhỏ nhìn thấy Có thể thấy cáccụm từ hay từ có chung nhãn có thể thay thế cho nhau trong một câu và câu đó vẫnkhông bị sai về mặt cú pháp Do vậy có thể thấy hai cụm chú gấu nhỏ và cụm nhìnthấy con cá hồi to đẹp trong suối là các cụm riêng biệt trong câu và có chức năngkhác nhau Cụm chú gấu nhỏ còn được gọi là một cụm danh từ (NP) còn cụm nhìnthấy con cá hồi to đẹp trong suối còn được gọi là cụm động từ (VP) Trong thựcthế có rất nhiều các loại cụm từ khác như AP – cụm tính từ, PP- cụm giới từ, …Khi phân tích cú pháp, câu sẽ được phân tách thành các cụm từ trên cho đến khicác cụm từ này chỉ là từ loại của một từ duy nhất
Có thể thấy tác dụng của cú pháp trong câu trên trong việc xác định một câu đúnghay sai Lợi ích dễ thấy của văn phạm trong ngôn ngữ đó là nó cung cấp một khungcác cấu trúc và từ vựng để đánh giá một câu
4 Văn phạm phi ngữ cảnh
Trang 94.1 Lý thuyết
Khái niệm: Văn phạm phi ngữ cảnh (Context Free Grammar – CFG) là một vănphạm có các sản xuất đều có dạng A -> a với A V, a (V U T).∈ ∈
Ví dụ một bộ ngữ pháp phi ngữ cảnh đơn giản bằng tiếng việt:
Ở trên, ta có các nhãn cú pháp như sau:
S Câu hoàn chỉnh Nam đi đá bóng
NP Cụm danh từ một con chó
VP Cụm động từ thích đọc sách
PP Cụm giới từ trong công viên
DET Mạo từ nhiều, một
N Danh từ con chó
Để văn phạm có thể được sử dụng thì các sản xuất trong file phải đúng định nghĩa của văn phạm phi ngữ cảnh
4.2 Cấu trúc cú pháp đệ quy
Trang 10Một văn phạm được gọi là đệ quy nếu trong một sản xuất, một ký hiệu đồng thờixuất hiện ở vế trái và vế phải của sản xuất, ví dụ trong văn phạm ở phần trước cósản xuất sau:
VP -> V VP
Có thể thấy ký hiệu VP xuất hiện ở cả hai vế của sản xuất, do đó văn phạm có cấutrúc đệ quy Trong một câu có sử dụng cấu trúc đệ quy, cây cấu trúc của câu có thểnhư sau:
Có thể thấy sản xuất Nom -> Adj Nom là một cấu trúc đệ quy Một ví dụ khác như sau:
Ta thấy sản xuất S -> NP VP rồi VP -> V S xuất hiện được gọi là cú pháp đệ quy gián tiếp
Trang 11Với các cấu trúc cú pháp đệ quy, không tồn tại một giới hạn nào cho việc đệ quybao nhiêu tầng, do đó quá trình phân tích cú pháp có thể đi vào một vòng lặp vôhạn.
5 Phân tích cú pháp bằng văn phạm phi ngữ cảnh
Như đã đề cập trong phần 1, phân tích cú pháp là quá trình phân tích câu thành cáccấu trúc cú pháp phù hợp Phần này sẽ đề cập đến hai phương pháp chính và đơngiản nhất của phân tích cú pháp sử dụng văn phạm phi ngữ cảnh đó là phươngpháp phân tích cú pháp gốc đệ quy và phương pháp Shift-Reduce và với haiphương pháp phức tạp hơn là phương pháp phân tích cú pháp góc trái và
5.1 Phân tích cú pháp gốc đệ quy
Phương pháp đơn giản nhất của phân tích cú pháp là từ một bậc cao nhất phân rã thành các cấu trúc con bậc thấp hơn dựa vào các sản xuất trong văn phạm phi ngữ cảnh Có thể thấy bậc cao nhất là một câu (ký hiệu S) Và mỗi một cấu trúc con đều có thể phân tách tiếp thành các cấu trúc con khác Cuối cùng quá trình phân rãcủa một nhánh sẽ kết thúc khi đạt được trạng thái mà các ký hiệu ở cấu trúc con có thể lần lượt khớp với các từ trong câu Có thể thấy là phương pháp này dựa trên thuật toán quay lui, cây cú pháp của phương pháp này đuuợc mở rộng dần xuống dưới
Ta có 6 bước chính của phương pháp như sau:
Bước 1: khởi tạo ký hiệu S
Trang 12Bước 2: Từ S sinh ra các cấu trúc con
Bước 3: Tiếp tục sinh cho đến khi khớp được từ (Det -> the)
Bước 4: Nếu không thể khớp được từ thì quay lui lại để xét các sản xuất khácBước 5: Thực hiện cho đến khi tìm được một cách phân tích cú pháp hoàn chỉnhBước 6: Tiếp tục quay lui để tìm các các phân tích khác cho đến khi đã xét hết tất
cả các khả năng
Phân tích cú pháp gốc đệ quy có ba thiếu sót chính:
- Đầu tiên, các sản xuất đệ quy trái như NP -> NP PP dẫn đến một vòng lặp vô hạn
- Thứ hai, trình phân tích cú pháp lãng phí rất nhiều thời gian xem xét các từ vàcấu trúc không tương ứng với câu đầu vào
- Thứ ba, quá trình quay lui có thể loại bỏ các thành phần được phân tích cú pháp
sẽ cần được xây dựng lại một lần nữa sau đó Ví dụ: quay lui qua VP -> V NP sẽloại bỏ cây con đã tạo cho NP Nếu sau đó bộ phân tích cú pháp tiếp tục với VP ->
V NP PP, thì cây con NP phải là được tạo lại từ đầu
Phân tích cú pháp gốc đệ quy là một loại phân tích cú pháp từ trên xuống Trìnhphân tích cú pháp từ trên xuống sử dụng một ngữ pháp để dự đoán đầu vào sẽ là gì,trước khi kiểm tra đầu vào Tuy nhiên, vì đầu vào luôn có sẵn cho trình phân tích
cú pháp, sẽ hợp lý hơn nếu xem xét câu đầu vào ngay từ đầu Cách tiếp cận nàyđược gọi là phân tích cú pháp từ dưới lên, và chúng ta sẽ thấy một ví dụ trong phầntiếp theo
5.2 Phân tích cú pháp Shift_Reduce
Shift-Reduce cũng là một phương pháp phân tích cú pháp đơn giản Tuy nhiêncách tiếp cận của phương pháp này có thể nói là đối lập với phương pháp phân tíchgốc đệ quy Phương pháp này bắt đầu từ câu đầu vào sau khi đã thực hiện tách từ
và gán nhãn, phương pháp này sẽ cố gắng tìm một chuỗi từ trong câu sao chochúng khớp với vế phải của một sản xuất nào đó và thay thế chúng bằng vế trái củasản xuất đó Phương pháp đạt được kết quả khi sau một số bước thay đổi nhất địnhthì câu chỉ còn ký tự S
Ta có bước chính của phương pháp được mô tả như sau:
Trang 13Thuật toán sử dụng một ngăn xếp (stack), các bước được mô tả như sau:
Bước 1: Khởi tạo stack rỗng và đầu vào câu sau khi được tách từ
Bước 2: Đẩy từ đầu tiên vào ngăn xếp
Bước 3: Nếu có cụm các phần từ trong stack mà tương ứng với một vế phải trong một sản xuất của văn phạm thì thay thế cụm này bằng vế trái của văn phạm.Bước 4: Nếu không thể thay thế đoạn nào trong các cụm trong stack thì tiếp tục đẩy từ tiếp theo trong câu vào stack Nếu đã đẩy hết từ vào stack mà vẫn không thểtìm thấy đoạn phù hợp thì hoặc là các phân tích đang không chính xác hoặc là câu không đúng
Bước 5: Tiếp tục thực hiện việc thay thế ở bước 3 cho đến khi chỉ còn ký tự SBước 6: Dừng khi tìm được S và đã đẩy hết toàn bộ từ vào stack
Shift-Reduce có thể đi đến ngõ cụt và không tìm thấy bất kỳ cách phân tích cú pháp nào, ngay cả khi đầu vào câu được hình thành tốt theo ngữ pháp Điều này xảy ra do trong quá trình phân tích trước đó, có một bước thay thế không đúng do
có thể ở bước này có hai cách thay thế thỏa mãn và cách không đúng đã được chọn
Tuy nhiên, ưu điểm của phân tích cú pháp shift-reduce so với phân tích cú pháp gốc đệ quy là chúng chỉ xây dựng cấu trúc tương ứng với các từ trong đầu vào Hơn nữa, họ chỉ xây dựng mỗi cấu trúc phụ một lần Ví dụ: NP(Det(the), N(man)) chỉ được tạo và đẩy lên stack 1 lần duy nhất
Trang 145.3 Phân tích cú pháp góc trái
Như đã đề cập trong phần 5.2 về thiếu sót của sử dụng phân tích cú pháp gốc đệ quy, phương pháp có thể dẫn đến một vòng lặp vô hạn khi gặp một cú pháp đệ quy.Điều này diễn ra vì phương pháp này áp dụng các sản xuất một cách mù quáng mà không xét đến câu đầu vào Do vậy phương pháp phân tích cú pháp góc trái ra đời như một sự kết hợp giữa hai phương pháp trên
Điểm khác biệt của phương pháp phân tích cú pháp góc trái so với phân tích gốc đệquy là trước khi bắt đầu phân tích, nó sẽ xử lý văn phạm phi ngữ cảnh và tạo ra một bảng mà mỗi dòng sẽ bao gồm hai cột, cột đầu là một ký hiệu không kết thúc
và cột hai chứa một tập các vế trái của sản xuất mà không chứa ký hiệu kết thúc
Ví dụ với tập sản xuất sau:
Phương pháp sẽ sinh bảng như sau:
Mỗi khi trình phân tích cú pháp xem xét một quá trình sản xuất, nó sẽ kiểm tra xem
từ đầu vào tiếp theo có tương thích với ít nhất một trong các ký hiệu ở cột bên trái hay không
Trang 155.4 Phân tích cú pháp dựa trên bảng
Có thể thấy hai phương pháp phân tích cú pháp đơn giản trên đều bị giới hạn trong
độ hoàn thiện cũng như độ hiệu quả Để khắc phụ điều này, chúng ta có thể áp dụng phương pháp Quy hoạch động cho việc phân tích cú pháp
Thuật toán quy hoạch động cho phép mỗi cụm từ chỉ áp dụng một sản xuất một lầnduy nhất Mỗi lần sử dụng một sản xuất cho một đoạn, chúng ta sẽ lưu vào một bảng Bảng này còn được gọi là bảng chuối con hợp lệ (well-formed substring table), hay WFST Một ví dụ của bảng WFST trên câu sau khi tách từ : ('I', 'shot', 'an', 'elephant', 'in', 'my', 'pajamas') như sau:
6 Sự phụ thuộc và văn phạm phụ thuộc
Nếu như văn phạm cấu trúc trong phân tích cú pháp quan tâm đến cách các từ haycác cụm từ được kết nối với nhau trong một câu thì trong văn phạm trong việcphân tích ngữ pháp phụ thuộc lại tập trung vào cách mối quan hệ giữa các từ trongmột câu Văn phạm phụ thuộc là một hệ thống ngữ pháp trong đó cấu trúc câu được
mô tả bằng cách sử dụng các qui tắc phân tích cú pháp phụ thuộc và các mối quan
hệ phụ thuộc giữa các từ trong câu Nó tập trung vào mối quan hệ giữa trụ đầu(head word) và các thành phần phụ thuộc (dependent words) của nó TrongDependency Grammar, câu được xem như một nhánh gốc (root node) và mỗi từtrong câu được phân loại thành một trong 2 loại: trụ đầu hoặc thành phần phụthuộc vào trụ đầu Nó đã trở thành một trong những hệ thống ngữ pháp phổ biếntrong ngôn ngữ tự nhiên và được sử dụng trong nhiều ngôn ngữ khác nhau
Hình dưới đây miêu rả một sơ đồ phụ thuộc, với mỗi mũi tên chỉ từ head đến thànhphần phụ thuộc:
Trang 16Hình trên cho thấy rằng là chủ thể (SBJ) của hành động I shot, elephant là vật chịu tác động (OBJ) bởi hành động shot, …
Valency và từ điển
Valency (còn được gọi là tính valency hoặc phản ứng valency) là khả năng của một
từ để kết hợp với các thành phần khác trong câu để tạo thành một cấu trúc ngữ pháp hợp lệ Trong ngữ pháp, valency được sử dụng để mô tả các mối quan hệ giữacác thành phần trong câu với động từ hoặc tính từ
Lấy các câu sau:
- Con sóc bị giật mình
- Tôi thấy một con gấu
- Cậu ấy đặt con cá lên trên thớt
- Tôi nghĩ rằng mọi người rất hạnh phúc
Khi phân tích cú pháp của các câu trên ta có phần cụm động từ (VP) được phân tách bằng các sản xuất sau:
7 Phát triển văn phạm
Phân tích cấu trúc của câu là quá trình xây dựng một cây cú pháp từ một câu dựa theo một văn phạm cấu trúc Trong thực thế, để xây dựng một trình phân tích cú pháp với độ chính xác cao thì đòi hỏi văn phạm phải đầy đủ và chính xác.Trong module nltk.corpus cung cấp treebank được xây dựng dựa trên Penn Treebank Corpus bằng cách:
From nltk.corpus imprt treebank
Chúng ta có thể sử dụng bộ dữ liệu này để xây dụng văn phạm Ngoài ra còn có
8 Phân tích cấu trúc câu bằng Python
8.1 Phân tích cú pháp bằng Python
8.1.1 Phân tích cú pháp với NLTK