Tải bản đầy đủ (.ppt) (30 trang)

ỨNG DỤNG CỦA VĂN PHẠM VÀ AUTOMATA

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

BÀI TẬP LỚN:
LÝ THUYẾT NGÔN NGỮ

ỨNG DỤNG CỦA VĂN PHẠM
VÀ AUTOMATA


THÀNH VIÊN NHÓM 4 CÙNG THỰC HIỆN:
1.
2.
3.
4.

NGUYỄN NGỌC TÂM
NGUYỄN THỊ SEN
NGUYỄN THỊ SÁNG
NGUYỄN THỊ HỒNG THẮM

CÙNG SỰ HƯỚNG DẪN CỦA
TH.s TRẦN XUÂN SANG
GIÁO VIÊN CHUYÊN MÔN


PHẦN I:
ỨNG DỤNG CỦA AUTOMATA
HỮU HẠN TRONG VIỆC PHÂN
TÍCH TỪ VỰNG MỞ RỘNG
Applications of finite Automata
Representing large Vocabularies



GIỚI THIỆU
Cách dùng otomat hữu hạn để mô tả một loạt các từ
vựng là một kỹ thuật đã được khẳng định. Có thể ứng
dụng mang tính truyền thống. Nó được tìm thấy trong
cấu trúc lệnh nơi mà ơtơmat có thể được sử dụng để làm
mẫu và thực hiện những phân tích từ vựng học mang
tính hiệu quả. Ứng dụng của ôtmat hữu hạn để giải
quyết một vài vấn đề đặc biệt trong việc xử lý ngôn ngữ
tự nhiên là khá phổ biến. Tuy nhiên, ý tưởng gói gọn các
“từ vựng mở rộng” vào otomat đơn định và nhiều ứng
dụng của nó dường như cịn mang tính mới mẻ.


Cơ sở để thúc đẩy cho nghiên cứu này là một
chương trình kiểm tra lỗi chính tả áp dụng cho
hầu hết các ngơn ngữ. Cho ví dụ , chương trình
kiểm tra chính tả mà chúng ta đề cập có thể xử
lý khoảng 30.000 từ mỗi giây, với automat hơn
200.000 từ đặt vừa khít vào 124 kbytes bộ nhớ.


Trong chủ đề này chúng ta sẽ bàn đến chi tiết
những vấn đề sau:
1. Thực hiện kiểm tra chính tả dựa trên ơtmat
2. Mơ tả thuật tốn và cấu trúc dữ liệu được
sử sụng
3. Một vài sự thống kê và đo lường
4. Một vài ứng dụng



1. Thực hiện kiểm tra chính tả dựa trên ơtmat
Một trong những chương trình kiểm tra chính tả được sử dụng rộng
rãi nhất là chương trình UNIX Spell. Chương trình này thực hiện kiểm
tra bằng cách loạI bỏ từ được cho khỏi tiền tố của nó, cho ví dụ: Rework –ed  work và over – tak- ing  take. Bằng cách sử dụng việc
loại bỏ tiền tố, từ điển ban đầu khoảng 250.000 từ vựng đã giảm xuống
còn 30.000 từ . Tuy nhiên, việc loại bỏ phụ tố( bao gồm tiền tố và hậu tố)
có thể dẫn đến việc chấp nhận những từ khơng tồn tại. Thêm nữa, chương
trình kiểm tra sẽ chấp nhận những từ khơng có nghĩa trong khi kiểm tra
chính tả :womans thay vì woman’s( số nhiều của woman là women), tos
thay vì toes( hoặc có thể là toss), và toing thay vì toeing( hoặc towing).


Để có thê khắc phục những nhược điểm trên , chúng
tôi đã quyết định thử một phương pháp khác bằng cách xây
dựng một otomat hữu hạn đơn định cục bộ (aminimal
acyclic deterministic partial finite automaton) có thể chấp
nhận một cách chính xác khoảng 206.000 từ có mặt trong
từ vựng. Theo cách này chúng ta có thể tránh được vấn đề
đưa vào những từ khơng tồn tại. Bên cạnh đó

Hình 1: Otomat đơn định cho tất cả các dạng của các động
từ : re work , replay, overwork và overplay


Otomat có thể cung cấp một cách đơn giản và chung
chung để loại bỏ một cách tuyệt đối các tiền tố và
hậu tố vì mỗi trong số chúng sẽ được mơ tả duy nhất
một lần. Trong hình 1, chúng tơi chỉ ra một otomat
cho tất cả các dạng của các động từ tiếng anh
rework, replay, overwork and overplay. Chú ý rằng

để bao gồm tất cả các dạng của động từ work, chỉ
cần thêm duy nhất một chuyển (transition) được gán
nhãn bởi chữ cái w từ trạng thái 0  9.


2. Cách thực hiện của automata
Function BuildAutomaton(Vocabulary);
Begin
A  EmptyAutomaton;
Repeat
While A not full do
Include the next word of Vocabulary in A;
A minimal(A)
Until no more words in vocabulary;
Return A;
End;

Đây là thuật toán mô tả cách xây dựng otomat của ‘từ vựng’
mở rộng :
i. Hai vòng lặp để tăng cường khả năng trong q trình xử
lý nhất là đối với loại ngơn ngữ chứa nhiều từ vựng.
ii. Với thuật tốn này thì tốc độ cũng như thời gian truy cập
từ vựng phụ thuộc vào chiều dài của từ đang được tìm kiếm,
mà khơng phụ thuộc vào kích cỡ của otomat.


iii. Thuật tốn tìm kiếm cho một từ là rất hiệu quả, bắt đầu từ
trạng thái đầu tiên nó đi qua otomat bằng cách sử dụng các chữ
cái liên tiếp nhau của từ đó để lựa chọn trạng thái chuyển, cho
đến khi hoặc một trạng thái kết thúc được đưa ra hoặc khơng có

sự chuyển nào tồn tại(hoặc từ đó thuộc từ vựng hay không)
iiii. Từ vựng tiếng anh chứa khoảng 81.000 từ đã tạo ra automata
với khoảng 30.000 trạng thái và 68.000 chuyển. Mỗi trạng thái
có thể được mơ tả bởi một cặp chuyển : một ký tự ( một byte)
và một mục trạng thái ( hai bytes) ; một byte phụ cho mỗI trạng
thái nắm dữ số lượng các chuyển có mặt.
3. Tìm hiểu một vài thống kế và đo lường
Nhiều từ mới được thêm một cách đơn giản từ các từ vựng đã
có trong otomat . .Điều này có thể làm otomat được thu nhỏ lại


Cho ví dụ, nếu từ overplayed bị loại khỏi otomat trong hinh 1,
otomat kết quả sẽ thực sự tăng từ 17 trạng thái và 22 chuyển
tới 18 trạng thái và 25 chuyển.

Hình2: Otomat chấp nhận tất cả các từ có tối đa là bốn ký tự

Trong trường hợp đặc biệt, chúng ta nên nhớ rằng, nếu cho 26
ký tự alphabet, một từ vựng trong tất cả các dãy ký tự có chiều dài
tối đa M sẽ có (26M+1-1)/25 từ; cho ví dụ, cho M=4, chúng ta sẽ có
475,225 từ. Mặt khác, otomat cho từ vựng đó chỉ có 27M+1
chuyển đổi (109 đối với M=4; xem hình 2)


4. Một vài ứng dụng

H ình 3: Cách đánh số của ôtômat

Chúng ta thừa nhận rằng, sự mô tả của otomat gồm một số
nguyên cái mà đưa ra số lượng của từ được chấp nhận bởi otomat

bắt đầu từ trạng thái đó. Chúng ta gọi otomat như vậy được gọi là
otomat được đánh số, kiểu như trong hình 4. chúng ta sẽ xây dựng
hai hàm liên quan giữa các số từ 1 tới L (L là số lượng các từ được
chấp nhận bởi ôtmat) và các từ như sau:


được gọi là otomat được đánh số, kiểu như trong hình 4. Chúng
ta sẽ xây dựng hai hàm liên quan giữa các số từ 1 tới L (L là số
lượng các từ được chấp nhận bởi ôtmat) và các từ như sau:



4.1 Từ điển đa ngơn ngữ
Otomat được đánh số có thể được sử dụng để thực hiện
từ điển đa ngôn ngữ cho việc chuyển đổi giữa từ và từ. Các từ
vựng đối với một vài ngơn ngữ có thể được mô tả bởi một
otomat với nhiều trạng thái khởi tạo. Một điều thú vị là, bằng
cách đảo ngược các từ trong khi xây dựng otomat, yêu cầu xử
lý sẽ tận dụng tối đa sự tồn tại trong việc kiểm tra sự tương
đương giữa các ngôn ngữ (tối ưu bộ nhớ), chẳng hạn như các
tiền tố và các từ gốc tồn tại trong nhiều ngơn ngữ Châu Âu nói
chung. Bên trong ottomat, đối với mỗi ngơn ngữ, chúng ta có
thể sử dụng một mảng được đánh số bởi các con số của từ và
vẽ chúng vào danh sách được định vị cho ngôn ngữ khác.


4.2 Từ đồng nghĩa
Cho một từ 'word', các từ đồng nghĩa của nó bao gồm như
sau:
work:

noun: avocation, calling, employment, field, job, occupation,
proffesion, trade, vocation, chore, grind, sweet
verb: answer, do, fulfill, meetqualify, suffice
Về mặt phạm trù ngữ pháp, từ đó là thuộc về danh từ, động
từ…. Chúng ta có một chuỗi các danh sách các từ có liên
quan, với mỗi danh sách tương xứng với một cách hiểu khác
nhau của từ, nếu chúng ta đưa một từ bất kỳ nằm trong một
danh sách các từ có liên quan. Kết quả mà chúng ta sẽ nhận
được là danh sách các từ đồng nghĩa.


Chúng ta thực hiện việc tìm từ đồng nghĩa này bằng
cách sử dụng một otomat được đánh số với nhiều trạng thái
khởi đầu : mỗi trạng thái phù hợp với một phạm trù ngữ
pháp. Bên cạnh đó, chúng ta sử dụng một vài các cấu trúc
dữ liệu để mô tả danh sách các từ theo tuần tự các con số.
Giả sử, sự thực hiện này được kiểm tra đối với các từ đồng
nghĩa tiếng Anh. Otomat của nó chấp nhận khoảng 9.500
từ , có tối thiểu 9.000 trạng thái và 18.000 chuyển.Yêu cầu
lưu trữ là 88kbytes cho otomat và khoảng 39kbytes cho cấu
trúc dữ liệu


5. Future work
Chúng ta có thể thấy rằng otomat đơn định cung cấp
một cơng cụ có ích cho nhiều ứng dụng. Một trong những
phương hướng mà họ theo đuổi trong tương lai là làm một vài
thử nghiệm trên các ngôn ngữ khác hơn so với tiếng Anh và
thử xây dựng Otomat cho từ vựng mở rộng hơn rất nhiều.



PHẦN II:
AUTOMATA ĐẨY XUỐNG


NỘI DUNG CHÍNH:
Trong chương này, chúng ta khảo sát một dạng mơ
hình ơtơmát khác, có khả năng nhận diện được lớp
ngôn ngữ mà văn phạm phi ngữ cảnh sinh ra ôtômát đẩy xuống (PDA) - với sự bổ sung thêm của
Stack đóng vai trị như một bộ giữ nhớ trong q
trình ơtơmát thực hiện các phép chuyển để nhận
dạng ngơn ngữ. Tiếp theo đó, mối quan hệ tương
đương giữa hai cơ chế - ôtômát đẩy xuống và CFGdùng biểu diễn cho lớp văn phạm phi ngữ cảnh cũng
sẽ được nêu ra và chứng minh chặt chẽ


Mục tiêu cần đạt :
Cuối chương này, sinh viên có thể:
- Thiết kế PDA chấp nhận một ngôn ngữ phi ngữ
cảnh cho trước bằng Stack rỗng hay trạng thái
kết thúc.
- Chuyển một PDA chấp nhận ngôn ngữ bằng
trạng thái kết thúc sang PDA chấp nhận ngôn
ngữ bằng Stack rỗng và ngược lại.
- Xây dựng NPDA chấp nhận ngôn ngữ sinh ra từ
một CFG.
- Viết văn phạm phi ngữ cảnh sinh ra lớp ngôn
ngữ được chấp nhận bởi một NPDA cho trước.



I. ÔTÔMÁT ĐẨY XUỐNG ( PDA : PUSHDOWN AUTOMATA)

Như ta đã biết, lớp các ngơn ngữ chính quy được sinh từ văn
phạm chính quy, đồng thời cũng được đốn nhận bởi các
ôtômát hữu hạn (đơn định hoặc không đơn định). Trong phần
này, chúng ta lại thấy một điều tương tự là lớp ngôn ngữ phi
ngữ cảnh, được sinh ra từ văn phạm phi ngữ cảnh, cũng được
đoán nhận bởi một loại ơtơmát khác - gọi là ơtơmát đẩy xuống
(PDA).
Có một điều khác biệt là ở đây, chỉ có dạng ơtơmát đẩy xuống
khơng đơn định (NPDA) mới có thể đủ mạnh để đốn nhận lớp
ngơn ngữ phi ngữ cảnh, cịn dạng đơn định (DPDA) chỉ cho
phép đoán nhận một tập con thực sự của lớp ngôn ngữ này. Tuy
nhiên, tập con đó cũng bao gồm phần lớn các ngơn ngữ lập
trình.


1.1. Mơ tả PDA
Ơtơmát đẩy xuống thực chất là một ôtômát với sự điều khiển cả
hai: băng nhập và Stack (bộ đẩy xuống). Về cơ bản, nó vẫn giữ
tất cả các thành phần của một ôtômát hữu hạn, với sự bổ sung
thêm một ngăn xếp làm việc (Stack) đóng vai trị như một bộ giữ
nhớ, nhờ đó mà khả năng ghi nhớ của ôtômát được tăng thêm.
Stack xem như là một chồng đĩa, vì vậy cái đặt vào sau sẽ lấy ra
trước (LIFO).
Với sự mở rộng này ôtômát đẩy xuống có thể chấp nhận cả các
biểu thức khơng chính quy. Chẳng hạn tập hợp L = {wcwR | w ∈
(0+1)*} (với wR là chuỗi đảo ngược của chuỗi w) là một ngôn
ngữ phi ngữ cảnh sinh bởi văn phạm S → 0S0 | 1S1 | c và nó
khơng thể được chấp nhận bởi bất kỳ một ôtômát hữu hạn nào.



Hình 6.1 - Mơ tả một PDA
Để chấp nhận ngơn ngữ L như trên ta dùng bộ điều khiển có hai
trạng thái q1, q2 và một Stack trên đó ta đặt các đĩa xanh (B), vàng
(Y), đỏ (R). Thiết bị sẽ thao tác theo các quy tắc sau đây:
1) Máy sẽ bắt đầu với một đĩa đỏ ở trên Stack và bộ điều
khiển ở trạng thái q1.


×