Khối “Sản sinh mẫu” và thuật toán sinh mẫu

Một phần của tài liệu Đồ án tốt nghiệp Xây dựng thử nghiệm hệ dịch tự động Anh - Việt theo hướng tiếp cận So khớp tập mẫu (Trang 42)

Đầu vào của khối xử lý này là tập hợp gồm các cặp câu song ngữ được xem là “tương tự” nhất (ký hiệu tập là tập Q) so với câu đầu vào (ký hiệu là input) trong tập mẫu, với độ tương tự được xác định qua giải thuật DP-Matching.

Thuật toán sinh mẫu như sau:

Với mỗi cặp câu s ∈Q:

Bước 1: So sánh s và input để tìm ra tập các thành phần khác nhau : Different = {s1, s2,…,sn}

(Giả sử mỗi thành phần si ∈ thành phần ngôn ngữ nguồn của s là

“Substitution” của thành phần ii ∈ input)

Bước 2: Sử dụng từ điển song ngữ để xác định phần nghĩa tương ứng của mỗi di

trong câu ngôn ngữ đích (chẳng hạn câu Tiếng Việt).

Bước 3: Sản sinh mẫu cho s bằng cách: giữ nguyên phần giống nhau với input, còn

những phần khác nhau được biểu diển thành các biến.Nói cách khác, mỗi di và nghĩa

tương ứng được thay bằng Xi.

Bước 4: Đặt ii = Xi và lưu vào bộ nhớ.

Hình 3. 5 Minh hoạ cơ chế sản sinh mẫu. 3.1.6. Khối “Chọn mẫu phù hợp nhất”

Nếu tập ứng viên được chọn ra sau bước “Example Retrieval” gồm nhiều phần tử, có nghĩa là có nhiều mẫu được sinh ra, chúng ta phải chọn ra từ chúng một mẫu tốt nhất để hiệu chỉnh thành câu dịch cuối cùng. Để thực hiện được điều đó, một số luật heuristic đã được đưa ra như là những tiêu chí cho sự lựa chọn:

Luật 1: Mẫu được lựa chọn phải là mẫu có số “khoảng trống” (gaps) ít nhất so với câu đầu vào.Trong đó, gaps được định nghĩa là tổng của các insertion,

INPUT: We close the door.

EXAMPLE_1:

ENGLISH: You close the door. VIETNAMESE: Bạn đóng cái cửa.

EXAMPLE_2:

ENGLISH: We close the shop. VIETNAMESE: Chúng tôi đóng cửa hàng

Từ điển song ngữ You = Bạn Shop = Cửa hàng 1-X1 = We X2 = door 2-PATTERN_1:

ENGLISH: X1 close the door. VIETNAMESE: X

1 đóng cái cửa.

PATTERN_2:

ENGLISH: We close the X2. VIETNAMESE: Chúng tôi đóng X2. 1-Store input word. 2-Allign source and tagret 43

deletion và các biến (đã được lập ở bước trước) không ứng với bất kỳ từ nào của câu dịch.

Luật 2: Chọn mẫu có tính chất: được tạo thành từ nhiều câu nhất trong tập ứng viên.

Luật 3: Chọn mẫu làm tối ưu hoá tần suất xuất hiện của các từ trong PC.

3.1.7. Khối “Thay thế”

Sau khi đã chọn được mẫu phù hợp nhất, chỉ còn một pha cuối cùng nữa là chúng ta đã có được câu dịch cần tìm, đó là thao tác thay thế. Thực chất đây là sự điều chỉnh phần câu dịch (ngôn ngữ đích) của mẫu để nó trở thành câu dịch của đầu vào.Quy trình thay thế như sau:

Lần lượt xét từng biến một trong mẫu.Với mỗi biến Xi :

Bước 1: Lấy ra từ trong input tương ứng với biến đó, đã được lưu trong pha “Sản

sinh mẫu” (ký hiệu là ei )

Bước 2: Thông qua Từ điển song ngữ, xác định được nghĩa của nó là vi.

Bước 3: Thay thế biến Xi trong cả 2 vế của mẫu (phần ngôn ngữ nguồn và đích) bằng cặp (ei, vi).

Cơ chế này có thể được hình dung một cách trực quan thông qua sơ đồ dưới đây:

Hình 3. 6 Minh hoạ cơ chế Thay thế

PATTERN_1: X1close the door.

X1 đóng cái cửa.

Chúng tôi đóng cái cửa

THAY THẾ X1 = We LOOK-UP X1 = Chúng tôi Từ điển song ngữ 44

3.2. Các ý tưởng cải tiến hệ D3 truyền thống

3.2.1. Phân lớp và “đồ thị hoá” tập mẫu3.2.1.1. Đặt vấn đề 3.2.1.1. Đặt vấn đề

Đối với hệ D3 truyền thống như đã trình bày ở trên, PC chỉ cần được huấn luyện như trong mục (2.3.2) là đã đủ. Tuy vậy, quá trình tìm kiếm trong D3 là rất khó thực hiện nếu kích thước PC lớn. Do vậy, việc cải tiến cơ chế tìm kiếm phải đi đôi với việc nâng cao hơn nữa mức độ “huấn luyện” tập mẫu. Ở đây chúng ta sẽ xét một bước huấn luyện nữa, xuất phát từ PC như đã đề cập ở trên, bao gồm hai giai đoạn, đó là Phân lớp và Đồ thị hoá PC.

3.2.1.1.1.Giai đoạn 1: Phân lớp PC

Ở giai đoạn này, PC – bao gồm các cặp câu song ngữ Anh-Việt (E, V) sẽ được phân

nhóm như sau: Tất cả các cặp (Ei, Vi) có số từ nội dung (content word) và số từ

chức năng (functional word) trong Ei tương ứng bằng nhau sẽ được nhóm vào cùng một lớp. Trong phát biểu trên có bao gồm hai khái niệm: “content word” và “functional word”, chúng được định nghĩa như sau:

* Functional word: Từ chức năng (hay còn có thể gọi với một tên khác là “từ ngữ pháp”-grammatical word), là những từ có rất ít ý nghĩa từ vựng (ý nghĩa biểu đạt), hoặc có nghĩa nhập nhằng, nhưng lại đóng vai trò trong việc biểu đạt mối liên hệ ngữ pháp của các từ còn lại trong câu.

* Content word: Từ nội dung (còn được gọi là “từ vựng”-lexical word) là những

từ không phải là functional word. Đây là từ có một hoặc một vài nghĩa cố định, rõ ràng, là yếu tố mang thông tin, góp phần hình thành nên nội dung mà câu muốn biểu đạt.

Xuất phát từ đặc thù của từng loại từ mà chúng ta thấy: Trong các từ điển hầu như

chỉ liệt kê được nghĩa của content word, còn đối với functional word chỉ có thể mô tả

được cách dùng mà thôi.Trái ngược lại, các quy tắc ngữ pháp lại chú trọng đến việc

liệt kê từng trường hợp sử dụng của các functional word mà ít quan tâm đến content word.

Có hai câu hỏi được đặt ra là:

Câu hỏi 1: Tại sao lại lấy số lượng các content word và functional word làm tiêu chí phân lớp PC?

Trả lời: Đơn giản vì hai loại từ này đại diện cho 2 mặt quan trọng nhất của

bất kỳ một câu nào, đó là: mặt nội dung (thông tin mà câu biểu đạt) và mặt ngữ

pháp (kết cấu ngữ pháp của câu).Hai câu sẽ không thể là tương tự nếu số lượng các

từ này tương ứng khác biệt quá nhiều.Vì vậy, đây sẽ là tiêu chí tốt giúp loại bớt một số lớp có sự khác biệt như vậy, làm giảm đáng kể số câu cần so khớp.

Câu hỏi 2: Làm sao để xác định được đâu là content word, đâu là functional word trong câu?

Trả lời: Đây là vấn đề thuần tuý ngôn ngữ học, đã được các nhà khoa học dày công nghiên cứu và đã đưa ra sự phân loại sau:

+ Content word gồm có: Danh từ; động từ; tính từ và hầu hết các phó từ (trừ

then why)

+ Functional word đông đảo hơn vì bao gồm phần còn lại.Cụ thể là: Giới từ; đại từ; mạo từ; liên từ; hư từ; tiểu từ…

Ví dụ: Trong câu sau đây, các content word sẽ được in nghiêng, và phần còn lại là functional word:

The Phantom of the Opera, a novel which Gaston Leroux published in 1900,

draws us into an extraordinary adventure which keeps us in suspense from the

first to the last line.

Rõ ràng PC của chúng ta đã được gán nhãn từ loại nên việc phân chia content word và functional word là rất dễ dàng.Tóm lại, sau giai đoạn 1, PC sẽ được chia thành

các lớp. Trong mỗi lớp, các Ei đều có số content word bằng nhau, số functional word

bằng nhau và do đó, có tổng số từ là như nhau.

3.2.1.1.2. Giai đoạn 2: Đồ thị hoá PC

Sau khi phân lớp xong, chúng ta tiến hành xây dựng đồ thị để biểu diễn các câu trong mỗi lớp. Mục đích của việc xây dựng đồ thị là tạo nguồn ngữ liệu sử dụng được cho thuật toán so khớp (xem chi tiết ở 3.2.4). Với tiêu chí tối ưu không gian lưu trữ mà vẫn đảm bảo biểu diễn lớp câu (không thừa, không thiếu), đồ thị sau khi xây dựng phải thoả mãn các yêu cầu bắt buộc sau:

(1) Số đỉnh phải là cực tiểu.

(2) Mỗi đường đi bất kỳ từ đỉnh đầu đến đỉnh cuối của đồ thị phải tương ứng với một câu nào đó trong lớp.

Việc xây dựng đồ thị tối ưu này có thể được thực hiện thông qua việc chuyển nó về bài toán tối ưu hoá Otomat.Trước khi thực hiện, bắt buộc phải tìm hiểu một số khái niệm và lý thuyết Otomat.

3.2.1.2. Một số vấn đề liên quan đến Otomat hữu hạn đơn định (Deterministic Finite State Automata):

* Otomat hữu hạn đơn định (OHĐ) là một “máy” trừu tượng để đoán nhận ngôn ngữ. Về mặt hình thức, nó có thể được định nghĩa như là một bộ 5:

M = (Σ,Q,δ,q0,F) Trong đó: Σ là bảng chữ vào Q là tập hữu hạn các trạng thái. q0∈ Q là trạng thái đầu. F ⊂ Q là tập các trạng thái kết thúc. 46

δ : Q × Σ →Q là hàm chuyển trạng thái.

* Nếu δ (q, a) không được định nghĩa (tức là không tương ứng với 1 trạng thái nào

trong Q), ký hiệu : δ (q, a) = ⊥.

* Từ định nghĩa trên, chúng ta mở rộng hàm δ thành hàm δ* : Q × Σ* như sau :

δ*(q, ε) = q δ*(q, ax) = ( ) ( )    ⊥ ⊥ ≠ otherwise a q if x a q, ), , ( * δ δ δ

* Chúng ta gọi một OHĐ là có tính chất không chu trình nếu không tồn tại trạng thái

q ∈ Q và xâu v nào mà : δ*(q, v) = q.

* Ngôn ngữ được đoán nhận bởi một OHĐ M được ký hiệu bởi L(M) và được định nghĩa như sau :

L(M) = {x∈Σ*|δ*(q0,x)∈F}

* Tiếp theo, định nghĩa hàm : L : QP(Σ*)

là một ánh xạ, đặt tương ứng mỗi một trạng thái q trong tập trạng thái với tất cả các xâu x mà nếu suy diễn từ q, sẽ đến được một trong các trạng thái kết thúc. Tức là :

*

δ (q, x) ∈ F.

L(q)={x∈Σ* |δ*(q,x)∈F}

Trong đó : Σ* là tập hợp tất cả các xâu có thể được tạo ra từ bảng chữ Σ.

Hàm L(q) được gọi là ngôn ngữ phải của mỗi trạng thái q.

Dễ thấy : L(M) = L(q0).

* Một OHĐ được gọi là có thể đạt tới được (reachable) nếu trạng thái q bất kỹ nào

thuộc tập Q cũng đều có thể suy dẫn được từ trạng thái đầu (thông qua một xâu x

nào đó thuộc Σ*)

Reachable(M) ≡ ∀qQx∈Σ*(q0,x)=q

* Trong số tất cả các OHĐ cùng đoán nhận một lớp ngôn ngữ, OHĐ M* được gọi là

cực tiểu nếu như nó có kích thước (hay số trạng thái) là bé nhất so với các OHĐ khác.Hay nói cách khác, M* là OHĐ có tính chất:

( ' ( ) ( ')) ,q, Q q q L q L q q   ≠ ⇒ ≠ ∀ ∈ và Reachable(M) = true.

3.2.1.3. Mối tương quan giữa bài toán xây dựng đồ thị tối ưu và bài toán cực tiểu hoá OHĐ

Từ những định nghĩa trên về OHĐ cùng các tính chất của nó, chúng ta có thể thấy rõ mối tương quan giữa việc xây dựng đồ thị tối ưu cho một lớp các câu ứng viên với

bài toán cực tiểu hoá OHĐ: Trong số tất cả các OHĐ đoán nhận cùng một lớp ngôn ngữ, xác định OHĐ có kích cỡ (hay số trạng thái) là nhỏ nhất. Cụ thể hơn, mối tương quan đó là:

- Số trạng thái nhỏ nhất tương tương với số đỉnh của đồ thị là cực tiểu.

- Lớp ngôn ngữ mà Otomat đoán nhận ở đây chính là tập các câu ững viên, tương ứng với việc mỗi đường đi từ đỉnh đầu đến đỉnh cuối của đồ thị chắc chắn sẽ ứng với một câu trong lớp ứng viên đó.

Như vậy, chúng ta sẽ chuyển bài toán xây dựng đồ thị tối ưu về bài toán: Xây dựng OHĐ không chu trình, cực tiểu đoán nhận lớp ngôn ngữ là tập các câu ứng viên.

3.2.1.4. Bài toán cực tiểu hoá OHĐ

Phát biểu bài toán:

"Trong tất cả các OHĐ, không chu trình cùng đoán nhận một lớp ngôn ngữ L, hãy tìm Otomat có số trạng thái là nhỏ nhất."

Theo như các phương pháp truyền thống, bài toán này có thể giải quyết qua hai giai đoạn:

Giai đoạn 1: Xây dựng một Otomat bất kỳ đoán nhận lớp ngôn ngữ trên.

Giai đoạn 2: Dùng một số thuật toán để thu gọn (cực tiểu hoá) Otomat đó.

Tuy nhiên, sẽ là ngắn gọn hơn nếu như hai công việc: Xây dựngtối ưu hoá

Otomat được tiến hành song song, tức là vừa xây dựng, vừa rút gọn, làm cho bài toán chỉ còn 1 giai đoạn duy nhất.

Để thực hiện được công việc đó, các ý tưởng chính là:

i) Bắt nguồn từ Otomat ban đầu rỗng, thực hiện thêm dần các trạng thái vào khi xét từng xâu trong ngôn ngữ L. Cụ thể, với mỗi một ký tự a trong xâu x nào đó, giả sử

đang ở trạng thái q.Nếu tồn tại trạng thái p nào đó sao cho : δ (q,a) = p thì thiết lập

trạng thái hiện tại là p và xét tiếp ký tự tiếp theo.Tuy nhiên, nếu như δ (q,a) = ⊥ thì

từ đó cho đến hết xâu, với mỗi ký tự còn lại, lần lượt tạo ra các trạng thái mới cho Otomat. Riêng trạng thái khi đoán nhận xong ký tự cuối cùng được đặt thuộc tính là kết thúc, còn lại là các trạng thái không kết thúc.

ii) Tuy nhiên, sau mỗi lần xét xong 1 xâu trong L, cần phải xét tất cả các trạng thái vừa mới được tạo ra đó. Nếu như trạng thái nào là tương đương với một trạng thái đã được tạo ra trước đó (khái niệm tương đương giữa hai trạng thái sẽ được trình bày ngay dưới đây) thì loại nó đi và dùng lại trạng thái cũ thay cho nó. Đây chính là thao tác mấu chốt để tối thiểu hoá số trạng thái của Otomat.Tuy nhiên, việc dùng lại này sẽ phát sinh ra một số vấn đề như :

• Mỗi lần dùng lại trạng thái q, tất cả các trạng thái trước nó sẽ có ngôn ngữ phải

(tập L(p)) thay đổi nên cần phải update lại.

• Nếu như trạng thái tương đương với q lại có nhiều hơn một “đầu vào” (tức là

có nhiều hơn 1 trạng thái mà suy dẫn trực tiếp đến q) thì việc dùng lại nó là 48

không thể được vì sẽ làm phát sinh một xâu mới mà Otomat có thể đoán nhận (và vì thế mà lớp ngôn ngữ mà nó đoán nhận không còn là L nữa).

Các vấn đề đó sẽ được xét sau.

Hai trạng thái p và q được gọi là tương đương với nhau nếu tất cả các điều kiện sau đây đều được thoả mãn:

-Cả hai đều có cùng tính chất (hoặc là trạng thái kết thúc, hoặc là không kết thúc).

-Cả hai đều có cùng số đầu ra (mỗi đầu ra tương ứng với một trạng thái được suy diễn trực tiếp từ chúng).

- Ứng với mỗi đầu ra của p, chẳng hạn:δ (p, a) = p’, tồn tại một đầu ra của q:

δ (q, b) = q’ sao cho a = b và đồng thời p’, q’ có cùng ngôn ngữ phải (hay nói cách khác là p’ và q’ tương đương nhau).

iii) Như vừa mới đề cập ở trên, vấn đề làm sao để không phát sinh xâu mới (và vì thế gây ra gia tăng tập ngôn ngữ được đoán nhận bởi Otomat) trong quá trình xây dựng Otomat cũng là một vấn đề rất quan trọng. Nó có thể được giải quyết theo hướng sau: Việc phát sinh xâu mới sẽ xảy ra tại các trạng thái mà số đầu vào >1. Bởi vậy, bắt đầu từ trạng thái này đến trạng thái cuối cùng mà xâu đang xét còn giống với một xâu trong Otomat, phải “bắt chước” từng trạng thái một. Bắt chước (Cloning) một trạng thái q là một quá trình tạo một trạng thái tương đương với q, nghĩa là có cùng tập đầu ra và dẫn đến các trạng thái đích có cùng ngôn ngữ phải.

Có thể thấy rõ điều này thông qua một ví dụ sau đây: giả sử cần thêm xâu “bae” vào một Otomat đã đoán nhận 2 xâu là “abd” và “bad” trong hình a).Hai hình b) và c) là hai giải pháp khác nhau. Thoạt nhìn, chúng ta lầm tuởng b) là giải pháp tối ưu với số trạng thái ít nhất có thể là 5 (trong khi phương án c) cần 6 trạng thái). Tuy nhiên, khi thêm như hình b) vô tình ta đã tạo thêm 1 xâu mới mà Otomat có thể đoán nhận được, đó là “abe”.Nguyên nhân bởi chính trạng thái 3 có nhiều hơn 1 đầu vào. Phương án c) đã “bắt chước” trạng thái này thành trạng thái 6 và chính là giải pháp tối ưu mong muốn.

Hình 3. 7 Ví dụ minh hoạ hiện tượng phát sinh xâu mới tại những trạng thái có số đầu vào lớn hơn 1

3.2.1.5.Thuật toán cực tiểu hoá OHĐ

Register :=∅; {Tập lưu tất cả các trạng thái chưa tương đương với bất kỳ trạng thái nào đã được xét trước đó}

While (vẫn còn xâu chưa được xét) do begin

Word := next_word; { xét xâu tiếp theo }

CommonPrefix := common_prefix(Word); {tiền tố giống với các xâu đã

được xét}

CurrentSuffix := Word[length(CommonPrefix) + 1 ... length(Word)];

if (CurrentSuffix = ε ∧δ*(q0, CommonPrefix) ∈ F) thencontinue ;

FirstState := first_state( CommonPrefix); {Trạng thái đầu tiên có số đầu vào > 1, xét trong CommonPrefix } if (FirstState = ∅) then LastState := δ*(q0, CommonPrefix) b d a d b d e a b d b a e d a b b a 1 2 4 3 5 1 2 4 3 5 1 2 4 3 5 6 a) b) c) 50

else begin

LastState := clone(δ* ( qo, CommonPrefix ) ) ;{“bắt chước” trạng thái

Một phần của tài liệu Đồ án tốt nghiệp Xây dựng thử nghiệm hệ dịch tự động Anh - Việt theo hướng tiếp cận So khớp tập mẫu (Trang 42)

Tải bản đầy đủ (DOC)

(113 trang)
w