Cấu trúc của câu cần phân tích

Một phần của tài liệu bài toán phân tích cú pháp ngôn ngữ tự nhiên bằng máy tính (Trang 26 - 35)

Rõ ràng, chiến lược phân tích kết hợp từ trên xuống và từ dưới lên ưu việt hơn cả hai phương pháp phân tích đơn thuần nói trên; so với cách phân tích từ trên xuống thì cách phân tích này chỉ có một hạn chế là biểu đồ cần nhiều ô nhớ hơn. Nhưng trong phần lớn các trường hợp, so với lợi thế về thời gian phân tích thì phần ơ nhớ mất thêm này là khơng đáng kể.

Chương 3. Các mạng chuyển

Ngoài các hệ văn phạm, các mơ hình mạng chuyển, nhất là các mạng chuyển đệ quy cũng được sử dụng rộng rãi để mô tả các cấu trúc cú pháp của ngôn ngữ tự nhiên. Các mạng chuyển có cơ sở là các máy trừu tượng, chúng được coi là những thiết bị nhận dạng văn phạm. Chính vì vậy, trước khi đi vào phần trình bày về các mạng chuyển, em trình bày khái quát về các máy trừu tượng, từ đơn giản nhất tới tổng quát nhất.

3.1. Văn phạm và ơtơmát

Văn phạm một mặt có thể coi là những định nghĩa cho các câu của một ngôn ngữ, mặt khác cịn có thể coi là sự mơ tả của một máy trừu tượng có khả năng đốn nhận hoặc sinh những xâu nằm trong ngơn ngữ đó. Những máy này được gọi (một cách trừu tượng) là các ôtômát, và độ phức tạp của những máy này tương ứng với độ phức tạp của các quy tắc sinh trong văn phạm.

Mỗi máy có thể xem là một tập các trạng thái, một thiết bị vào có khả năng truy nhập mỗi lần một ký hiệu vào, và một đơn vị điều khiển có khả năng kiểm tra và đọc đầu vào, chuyển máy sang trạng thái khác. Ngồi ra, những máy này có thể có bộ nhớ, được đơn vị điều khiển truy nhập để lưu giữ hoặc kiểm tra các ký hiệu. Yếu tố quyết định năng lực tính tốn của máy là độ phức tạp của bộ nhớ và những thao tác trên bộ nhớ.

Những ôtômát đơn giản nhất là các máy hữu hạn trạng thái hay các ôtômát hữu

hạn trạng thái (Finite State Automata -- FSA), các ngơn ngữ mà chúng đốn nhận gọi

là các ngơn ngữ chính quy. Ngơn ngữ chính quy có đầy đủ các tính chất của ngơn ngữ phi ngữ cảnh và do đó ln có thể đốn nhận được bằng một ơtơmát với số trạng thái hữu hạn. Các máy hữu hạn trạng thái khơng có bộ nhớ trong, nên mọi thao tác hoàn toàn được quyết định bởi ký hiệu hiện đang được đọc và trạng thái hiện tại của máy.

Để minh hoạ sự vận hành của các máy nói trên, ta xét văn phạm đơn giản sau: S → aB

B → bB

B → c

Văn phạm này sinh ra ngơn ngữ chính quy abnc. Ơtơmát tương đương với nó thường được biểu diễn bằng một sơ đồ trạng thái như hình vẽ sau:

trong đó các nút biểu diễn các trạng thái và các cung biểu diễn các bước chuyển. Nút vuông chỉ rằng đó là trạng thái kết. Với ơtơmát này, việc chuyển từ những quy tắc sinh sang sơ đồ trạng thái là: ký hiệu không kết chuyển thành trạng thái, ký hiệu kết chuyển thành bước chuyển.

Sự hoạt động của ơtơmát này như sau: việc tính tốn bắt đầu từ một trạng thái được xác định trước gọi là trạng thái khởi đầu, ở đây là S; ký hiệu đầu tiên của xâu vào được kiểm tra xem có cung chuyển nào khớp với nó hay khơng; nếu có thì máy theo cung này chuyển tới trạng thái kế tiếp và tiêu thụ ký hiệu đó, đọc tiếp ký hiệu đứng sau. Quá trình này được tiếp tục cho tới khi máy bị dừng, ví dụ khi không cung chuyển nào là khớp nữa. Nếu máy dừng tại một trạng thái kết và xâu vào đã được tiêu thụ thì ta nói xâu đó đã được đoán nhận.

Nếu ta thêm bộ nhớ hoạt động theo nguyên lý của danh sách vào sau ra trước (LIFO) vào ơtơmát (ví dụ một ngăn xếp đẩy xuống), cùng với một số quy tắc điều khiển thì FSA sẽ chuyển thành ôtômát đẩy xuống (Push Down Automaton -- PDA).

Các PDA chỉ có thể đốn nhận những ngơn ngữ phi ngữ cảnh.

Nếu bỏ đi hạn chế về tổ chức ngăn xếp trong bộ nhớ trong, chỉ áp dụng ràng buộc quy định kích thước bộ nhớ là hàm tuyến tính theo độ dài của xâu vào, thì ta tạo ra một ôtômát mạnh hơn gọi là ôtômát bị chặn tuyến tính (Linear Bounded Automaton -- LBA). Nếu cần, ta có thể tổ chức bộ nhớ trong sao cho một phần bộ nhớ được tổ chức như một ngăn xếp, phần còn lại là bộ nhớ truy nhập ngẫu nhiên, khi đó sẽ giữ lại được mối liên hệ về mặt cấu trúc với lớp các PDA yếu hơn. Các LBA có khả năng đốn nhận một lớp rất tổng quát của ngôn ngữ, được định nghĩa bởi các văn phạm tuyến tính theo chiều dài, các ngơn ngữ này bao gồm cả các thành phần cấu trúc ngữ pháp cảm ngữ cảnh thường gặp trong ngôn ngữ.

Sau cùng, nếu ta bỏ đi ràng buộc cuối cùng đối với bộ nhớ trong, cho phép nó có kích thước khơng hạn chế, khi đó ta được lớp ơtơmát tổng quát nhất, gọi là các máy Turing (Turing Machines -- TMs). Văn phạm tương đương với nó là hệ thống viết lại

khơng hạn chế, trong đó, các quy tắc sinh được phép viết lại bất kỳ cái gì cũng thành

một thứ bất kỳ. Các máy Turing là sự trừu tượng tương tự của các máy tính tuần tự đa nhiệm nguyên thuỷ.

Một trong những vấn đề đầu tiên của lý thuyết các ôtômát là câu hỏi về tính quyết định, được diễn tả hình thức là: có hay khơng một tiên nghiệm cho phép biết được một lớp các tính tốn cho trước có kết thúc trong một thời gian hữu hạn hay không. Cụ thể là, bài tốn đốn nhận một xâu khơng thuộc ngơn ngữ tương ứng với một ơtơmát đã cho nói chung khơng thể quyết định được bởi các TM. Câu hỏi này, về nguyên tắc, là có thể trả lời được đối với các lớp ôtômát yếu hơn.

3.2. Các yếu tố cơ sở của mạng chuyển đệ quy

Mạng chuyển đệ quy (recursive transition networks -- RTNs) được Wood đưa ra lần đầu tiên vào năm 1970, là một thiết bị nhận dạng các văn phạm phi ngữ cảnh.

Xét văn phạm đơn giản sau

1. (a) S → NP (Aux) V (NP) PP* 1. (b) S → Aux NP V (NP) PP*

2. NP → (Det) (Quant) Adj* N* N PP* 3. PP → Prep NP

Văn phạm này định nghĩa một ngôn ngữ phi ngữ cảnh trên bảng chữ cái {Aux, V, Det, Quant, Adj, N, Prep}. Ở đây có một mở rộng so với thơng thường là các ngoặc trịn, chứa các phần tử tuỳ chọn, và dấu hoa thị dùng để chỉ ký hiệu đi kèm với nó có thể khơng có hoặc xuất hiện nhiều hơn một lần.

Các vế phải của các quy tắc cũng có thể được xem như định nghĩa của các biểu thức của các ngôn ngữ chính quy, hay các biểu thức chính quy, tương ứng trên các bảng chữ cái {NP, Aux, V, PP} đối với quy tắc 1, {Det, Quant, Adj, N, PP} đối với quy tắc 2 và {Prep, PP} đối với quy tắc 3 -- do đó mỗi biểu thức có thể được diễn tả bằng một ôtômát hữu hạn trạng thái tương đương. Ví dụ, sơ đồ trạng thái của các ôtômát tương ứng với các quy tắc 1.(a) và 1.(b) là:

trong đó ký hiệu JUMP chỉ các bước chuyển khơng có điều kiện khơng tiêu thụ ký hiệu.

Nhìn vào biểu diễn này, ta thấy ngay rằng biểu diễn bước chuyển của các trạng thái cho phép ta ghép các vế phải của 1.(a) và 1.(b) thành một sơ đồ duy nhất, vì hai quy tắc là giống nhau kể từ ký hiệu V trở đi. Điều này sẽ làm việc mô tả các thông tin trong hai quy tắc ngắn gọn hơn so với hình thức viết lại. Ghép hai sơ đồ A1(a) và A1(b) ta sẽ được ba sơ đồ bước chuyển tương ứng với bốn quy tắc 1-3 như sau:

Ở đây, ta gặp vấn đề với các cung chuyển NP trong A1 và A3 và PP trong A2. Để biểu diễn đúng theo máy hữu hạn trạng thái thì ta phải coi chúng như những ký hiệu kết, trong khi rõ ràng chúng là các ký hiệu không kết trong văn phạm ban đầu. Vậy nếu chúng khơng kết thì làm thế nào để đốn nhận được bởi các ôtômát hữu hạn trạng thái tương ứng?

Cách giải thích hiển nhiên ở đây là ta cần có cách nhìn khác đối với những cung "khơng kết" này, ta coi ba ôtômát A1-A3 là một hệ. Bây giờ ta khơng địi hỏi A1 phải đốn nhận ký hiệu NP, mà để nó tạm thời chuyển sang A2, và quay lại với thơng tin NP đó có thể đốn nhận được tại vị trí vào hiện tại hay khơng. Tương tự, A2 phải

chuyển trách nhiệm đốn nhận PP cho A3, đến lượt mình, A3 lại gọi A2 để đoán nhận NP. Rõ ràng là một FSA đơn thuần khơng thể đáp ứng được tiến trình đệ quy này, bởi nó khơng có cách nào để ghi nhớ đã xuất phát từ đâu và làm thế nào để quay lại đó sau khi kết thúc một quá trình trung gian. Tuy vậy, ta thấy rằng nếu ta dùng thêm một ngăn xếp để chuyển các FSA này thành một PDA thì thiết bị này hồn tồn có khả năng quản lý mọi thao tác phụ gồm ghi nhớ và lấy lại các trạng thái.

Khi điều khiển được chuyển sang một quá trình trung gian thì trạng thái hiện tại của máy được đẩy vào ngăn xếp, để khi kết thúc quá trình này máy sẽ quay lại đúng trạng thái đó. Trong thuật ngữ của RTN, việc chuyển điều khiển sang một trạng thái, giả sử NP, được gọi là PUSH NP. Khi ra khỏi trạng thái kết ta dùng một cung có nhãn POP để chỉ rằng khi quá trình kết thúc, máy quay lại trạng thái được lưu trong ngăn xếp.

Ta cũng có thể sử dụng RTN để biểu diễn từ điển, thay vì dùng tập các quy tắc viết lại dạng

Det → 'a' Det → 'the' Det → 'some'

ta có thể sử dụng dạng chuyển như sau và gắn kết quả vào mạng văn phạm tương tự như A1-A3.

Để tiện cho việc trình bày, ta có thể định nghĩa tập các hàm mà cung chuyển có thể gọi. Các hàm tìm kiếm trong từ điển hay sử dụng nhất là CAT, hàm này kiểm tra kiểu từ loại đã định nghĩa trước trong từ điển của từ hiện tại đang đọc vào. Các hàm khác được tóm lược trong bảng sau:

Các hàm Ví dụ Cách dùng

CAT noun đi qua được chỉ nếu từ loại của từ hiện tại có cùng tên WRD of đi qua được chỉ nếu từ hiện tại chính là từ này

JUMP jump ln có thể đi qua được

POP pop chỉ việc đi qua được toàn bộ mạng chuyển

Để kết thúc mục này, ta tóm tắt sự giống và khác nhau giữa mạng chuyển RTN và các ôtômát hữu hạn trạng thái FSA và ôtômát đẩy xuống PDA như sau:

Giống nhau:

¾ RTN cũng như FSA và PDA đều có thể đốn nhận các câu sinh bởi các văn phạm cấu trúc câu.

¾ RTN tương đương với PDA về khả năng đốn nhận ngơn ngữ sinh bởi văn phạm phi ngữ cảnh (CFG) của Chomsky.

¾ Hoạt động của RTN cũng như FSA và PDA đều có thể được biểu diễn bằng các mạng chuyển.

Khác nhau:

¾ Các cung và các đỉnh (trạng thái): Trong khi các trạng thái trong mạng chuyển của FSA có nhãn là các từ khơng kết thúc của văn phạm tương đương với ơtơmat, các cung có nhãn là các từ cuối (cũng như vậy với PDA, trừ các cung rỗng và cung kết thúc pop), thì các cung của RTN có nhãn là các từ không kết thúc (trừ một số cung đặc biệt cũng có nhãn là từ cuối) của văn phạm tương đương, với các trạng thái được đánh dấu tuỳ ý. ¾ Các mạng con: Các mạng chuyển của FSA và PDA là các mạng đầy đủ,

còn mạng chuyển của RTN thì được xử lý như là một tập các mạng con. Với mỗi ký hiệu có xuất hiện ở vế trái trong các qui tắc sinh của văn phạm tương đương được biểu diễn bằng một mạng con.

¾ RTN khơng đơn định, q trình đốn nhận do vậy phải dùng phương pháp quay lui.

¾ Do đặc điểm của mơ hình RTN là một tập các mạng chuyển con, việc đoán nhận câu trong RTN phải theo phương pháp xử lý từ trên xuống (xuất phát từ mạng con S – tức là mạng biểu diễn các quy tắc sinh có vế trái là tiên đề) và xử lý theo chiều sâu trước (phải đi qua từng mạng con trước khi chuyển sang cung tiếp theo).

3.3. Tính thủ tục của các RTN

Phương pháp biểu diễn nêu trên có mức độ trừu tượng tương đương với một hệ các quy tắc viết lại của văn phạm phi ngữ cảnh, theo nghĩa mọi quy tắc của văn phạm phi ngữ cảnh đều có thể chuyển thành một RTN tương đương. Tuy nhiên, cách biểu diễn bằng RTN có một đặc điểm quan trọng mà trong các hệ quy tắc viết lại không có, đó là các tiến trình (process). Khi ta sử dụng một văn phạm để xây dựng thủ tục đoán nhận một ngơn ngữ, thì các quy tắc viết lại chỉ ra cần làm cái gì; cịn ơtơmát nằm trong RTN lại mô tả làm như thế nào.

Để so sánh, giả sử ta dùng một hệ sản xuất để đốn nhận một ngơn ngữ phi ngữ cảnh và dùng một RTN để đốn nhận cũng ngơn ngữ đó. Khi thiết kế hệ sản xuất, ta tự do quyết định các câu hỏi như áp dụng quy tắc nào tiếp theo, phần dữ liệu nào sẽ xem xét tiếp theo, và thực hiện các thao tác "viết lại" trên dữ liệu đó như thế nào. Với RTN, quyền lựa chọn các quyết định tương tự như trên không thuộc về người thiết kế nữa, bởi vì chúng đã bị ẩn trong biểu diễn ngữ nghĩa của văn phạm. Hình thức biểu diễn bằng RTN thể hiện nhiều đặc tính của các ngơn ngữ lập trình thủ tục thường gặp, đặc biệt khi nó được dịch thành biểu diễn tuyến tính cho đầu vào của máy tính - lệnh nhảy goto có và khơng có điều kiện (các bước chuyển trạng thái), các nhãn lệnh (các tên trạng thái), và các lời gọi thủ tục (PUSH và POP).

Các điều khiển thủ tục có một đặc điểm quan trọng khơng bị ẩn trong ký hiệu, đó là cách trình thơng dịch thực hiện khi nó gặp một trạng thái có nhiều cung chuyển tiếp theo. Chế độ bình thường là lần lượt đi theo các cung chuyển, bắt đầu từ cung chuyển đầu tiên, thực hiện từ trên xuống và ưu tiên chiều sâu, đi theo các đường dẫn xa nhất có thể và chấp nhận đường đi đầu tiên đến được một trạng thái kết với một xâu vào rỗng và ngăn xếp rỗng.

Ở đây có sự khác nhau cơ bản so với cách tiếp cận hệ sản xuất, với hệ sản xuất, dạng viết lại của các quy tắc tự nó khơng giả định trước bất kỳ một tiến trình nào. Người xây dựng mạng chuyển RTN cần suy nghĩ theo tiến trình nhận dạng từ trên xuống, từ trái sang phải.

Như vậy, hình thức RTN cho phép ta dễ dàng theo dõi tiến trình phân tích. Các RTN mơ tả tiến trình, cịn CFG thì khơng. Do mỗi chương trình máy tính là một sự mơ tả tiến trình nên các RTN rất có giá trị khi được dùng để viết chương trình phân tích. Trên thực tế cũng có nhiều trình phân tích được điều khiển bởi các quy tắc của văn phạm. Sự khác nhau lớn nhất của hai hình thức này là vào thời điểm chạy chương trình, trình phân tích RTN "biết được" tại mỗi bước đã có sẵn những lựa chọn nào,

cịn các trình phân tích dựa trên văn phạm phi ngữ cảnh phải tìm trong dãy các quy tắc những quy tắc nào là có thể áp dụng được.

3.4. Phân tích từ trên xuống cho mạng chuyển đệ quy

Trạng thái phân tích tại một thời điểm nào đó được biểu diễn như sau:

¾ Vị trí hiện tại. Lưu lại phần nào của câu đã được phân tích rồi

¾ Nút hiện tại. Nút ta đang dừng lại để phân tích

¾ Ðiểm quay lại (trở về). Ta đang nằm trong một mạng (B) bởi lời gọi từ

một nút nào đó của mạng (A). Khi đó điểm trở về là nút của mạng A, để khi quay ra ta lại tiếp tục q trình phân tích.

Trước hết, ta xét thuật tốn đơn giản tìm kiếm trên một mạng chuyển đệ quy. Giả

Một phần của tài liệu bài toán phân tích cú pháp ngôn ngữ tự nhiên bằng máy tính (Trang 26 - 35)