Ng dụng cho mô hình dịch máy dựa vào cụm

Một phần của tài liệu Trung tâm Thư viện và Tri thức số - Library and Digital Knowledge Center (Trang 40)

3.3.1. Mô hình dịch

Các mô hình dịch trong Mose đƣợc cấu tạo bởi một mô hình dịch cụm từ và một mô hình sắp xếp lại cụm từ đó. Trong những mô hình đầu tiên, m i c p cụm từ p s,t , xác suất của việc dịch từ s sang t bằng cách kết hợp nhiều đ c tính

, đƣợc đo theo , là (p)=∏ .

Các mô hình sắp xếp lại tƣơng tự, nhƣng sắp xếp lại cục bộ giữa p với cụm từ trƣớc đó và tiếp theo phía đích, và , ho c nhiều hơn.

(p| , ,) = ∏ Công thức 3.6) 3.3.2. y dựng tập h trợ

Vê cơ bản, thực hiện các mô hình này là tƣơng đối để tính toán các thành phần đƣợc mô tả trong công thức 3.5. Đó là P s,t , P p s|t và argmax(SP(p(s,t))).

Tính toán phân bổ đồng đều và phân phối đa thức P s,t là đơn giản, phân bổ đồng đều đảm bảo cùng 1 giá trị cho tất cả s và t, và phối đa thức có thể đƣợc mô hình hóa bằng cách chiết xuất ra số đếm từ ngữ liệu giống nhau.

Tính P s|t cũng là không quá khó khăn, vì ta chỉ cần tính tính PT(p(s,t)), và có thể đƣợc thực hiện bằng cách lấy các đ c tính dịch của p áp dụng cho các trọng số của m i đ c tính đó.

Thách thức nhất đó là tính giá trị argmax SP p s,t , tƣơng tự nhƣ việc giải mã trong dịch máy, chúng ta cần tìm bản dịch tốt nhất ̂ cho một câu s, với giá trị ̂ argma P(s|t)P(t). Trong thực tế, chúng ta không tìm không gian của bản dịch, nhƣng trong không gian nguồn đó là các chu i của bản dịch cụm từ ( ,..., ( nó có thể áp dụng từ s để tạo ra đầu ra t với điểm số cho bởi P(t)∏ .

Thuật toán này xác định SP p s,t có thể đƣợc mô tả nhƣ một sự tƣơng thích với thuật toán giải mã trong Mose, nơi mà chúng tôi giới hạn không gian tìm kiếm thành không gian con SP p s,t , không gian tìm kiếm này chỉ cấu tạo bởi đầu ra t, mà không sử dụng p của chính nó. Điều này có thể đƣợc thực hiện bằng cách sử dụng bắt buộc thuật toán giải mã đề xuất trong Schwartz, 2008.

Thứ hai, đó là số điểm của một giả định dịch không phụ thuộc vào xác xuất P t của mô hình ngôn ngữ, vì tất cả nguồn trong không gian tìm kiếm có t nhƣ nhau, do đó chúng tôi loại bỏ xác xuất này từ số điểm đ c tính.

Cuối cùng, thay vì sử dụng tìm kiếm Beam, ta phải hiểu hết mọi khía cạnh tìm kiếm của tất cả các không gian tìm kiếm, để giảm bớt các giả định phát sinh một l i tìm kiếm trong giai đoạn này. Điều này là có thể, vì c p cụm từ thƣờng nhỏ hơn so với văn bản ít hơn 8 từ , và bởi vì có ràng buộc không gian tìm kiếm cho t, nên độ lớn nhỏ hơn không gian tìm kiếm thông thƣờng với tất cả các bản dịch.

3.3.3. Thuật toán Pruning

Thuật toán đƣợc dùng để tạo ra một mô hình dịch đƣợc cắt gọt nhƣ sau: thực hiện duyệt qua tất cả các cụm từ ( ,..., ( . Và giải mã bằng cách sử dụng thuật toán giải mã, từ đến , để có đƣờng đi tốt nhất S. Nếu không có đƣờng đi đƣợc tìm thấy nghĩa là là nguyên tử. Sau đó thực hiện cắt gọt dựa trên công thức 3.5.

Thuật toán 1: Cắt gọt độc lập Yêu cầu: Ngƣỡng cắt gọt , Mô hình chƣa đƣợc cắt gọt { ( ,..., ( } for ( , ) ( ,..., ( } do S:=argmax(SP( ))\ Score:= If S then Score: = P(s,t)log∏ End if

If score then

Prune( )

End if End for

Return Mô hình dã cắt gọt

Nút thắt chính trong thuật toán này là tìm argmax(SP(s,t)), trong khi điều này xuất hiện tƣơng đối đơn giản và tƣơng tự nhƣ một công việc giải mã tài liệu, kích thƣớc của công việc là một trật tự khác nhau về độ lớn, vì chúng ta cần giải mã m i c p cụm từ trong mô hình dịch, trong đó có thể không phải là cho mô hình lớn với hàng triệu c p cụm từ, và sẽ đƣợc giải quyết trong mục “Pruning Setup” đƣợc trình bày cụ thể ở mục sau.

Một vấn đề khác với thuật toán này là việc quyết định để cắt gọt m i c p cụm từ đƣợc giả định, và tất cả các c p cụm từ khác vẫn đƣợc giữ nguyên trong mô hình. Vì vậy, có một thách thức c p cụm từ là đƣợc cắt gọt bởi vì dẫn xuất của sử dụng và dẫn đến bản dịch giống nhau. Tuy nhiên, nếu cũng xảy ra việc đƣợc cắt gọt thì một dẫn xuất nhƣ vậy sẽ không còn. Một giải pháp để thực hiện giải quyết vấn đề này là thực hiện cắt gọt l p đi l p lại từ c p cụm từ nhỏ nhất số từ và tăng kích thƣớc của m i lần l p. Tuy nhiên, việc này là không mong muốn, vì mô hình sẽ hƣớng vào việc loại bỏ các c p cụm từ nhỏ, mà các c p cụm từ nhỏ này thƣờng hữu ích hơn vì chúng đƣợc sử dụng trong nhiều dẫn xuất để thay thế các c p cụm từ lớn hơn. Trong ví dụ trên, các mô hình sẽ loại bỏ và giữ , khi chƣa có lựa chọn tốt nhất có thể để giữ và loại bỏ , nếu là thƣờng xuyên sử dụng trong các dẫn xuất của c p cụm từ.

CHƢƠNG 4. ĐÁNH GIÁ THỰC NGHIỆM BẰNG HỆ DỊCH MÁY THỐNG KÊ MOSES

Để phục vụ cho việc thử nghiệm hệ dịch, tôi sử dụng phần mềm opensource Moses làm công cụ thử nghiệm.

Moses là một hệ thống dịch máy thống kê cho phép ngƣời dùng xây dựng các mô hình dịch cho bất kỳ c p ngôn ngữ nào với đầu vào là một tập hợp các văn bản song ngữ, đƣợc nhiều trƣờng đại học, nhóm nghiên cứu nổi tiếng về xử lý ngôn ngữ tự nhiên và dịch máy thống kê nhƣ Edinburg Scotland , RWTH Aachen (Germany), ... tham gia phát triển. Đây là phần mềm có chất lƣợng khá tốt, khả năng mở rộng cao đƣợc dùng để xây dựng nhiều hệ thống dịch thử nghiệm cho nhiều c p ngôn ngữ nhƣ Anh-Czech, Anh-Trung, Anh-Pháp, ..

Moses cho phép chúng ta tự đào tạo mô hình dịch cho c p câu song ngữ. Nhiệm vụ của chúng ta là thu thập và cung cấp dữ liệu đầu vào là các bộ ngữ liệu song ngữ, sau đó Moses sẽ tự động huấn luyện các mô hình dịch.

Hệ thống dịch máy thống kê này chứa một số thành phần sau:

-Tệp phrase-table: tệp này chứa các cụm song ngữ theo định dạng: “cụm từ ở ngôn ngữ đích | cụm từ ở ngôn ngữ nguồn | xác suất”

-tệp moses.ini chứa các tham số cho bộ giải mã nhƣ: đƣờng dẫn đến tệp

phrase-table, đƣờng dẫn đến tệp chứa mô hình ngôn ngữ, số lƣợng tối đa cụm

từ của ngôn ngữ đích đƣợc dịch bởi một cụm từ của ngôn ngữ nguồn, ....

Để xây dựng đƣợc mô hình dịch thống kê, ta có thể sử dụng script: train-

model.perl với một số tham số sau:

--root-dir -- cài đ t thƣ mục gốc nơi lƣu trữ các tệp đầu ra

--corpus -- tên của tệp văn bản huấn luyện (bao gồm cả 2 ngôn ngữ

nguồn và đích

--e -- đuôi mở rộng của tệp văn bản huấn luyện ngôn ngữ đích

--f -- đuôi mở rộng của tệp văn bản huấn luyện ngôn ngữ nguồn

--lm -- language model: <factor>:<order>:<filename> : thiết lập file

cấu hình mô hình ngôn ngữ theo định dạng đã trình bày trong phần 3.3

--max-phrase-length -- độ dài lớn nhất của các cụm từ lƣu trữ trong tệp

phrase-table.

4.1.Môi trƣờng triển khai

Cấu hình phần cứng và phần mềm cài đ t . -CPU Intel Core i3

-Hệ điều hành Ubuntu 12.04 LTS, 64 bit.

Hệ thống dịch máy Moses có thể cài đ t trên các Os khác nhau nhƣ Linux, OSX hay Windows. Ở phần demo này chúng ta sẽ cài đ t và chạy các test case trên Linux cụ thể là Ubuntu phiên bản 12.04 LTS.

Các công cụ đi theo: - Hệ thống đã cài Boost - SRILM

-CMPH Library

Công cụ xây dựng mô hình dịch: GIZA++, mkcls.

4.2.Xây dựng chƣơng trình dịch và thực hiện tối ƣu bảng cụm từ. 4.2.1. Chuẩn bị dữ liệu và chuẩn hóa dữ liệu 4.2.1. Chuẩn bị dữ liệu và chuẩn hóa dữ liệu

Dữ liệu đầu vào cần đƣợc chuẩn hóa theo đúng dạng qui định. Việc chuẩn hóa dữ liệu có thể bao gồm những công việc nhƣ:

- Tách từ - Tách câu

- Chuyển sang chữ thƣờng, chữ hoa - Loại bỏ từ dƣ thừa

-…

Việc chuẩn hóa dữ liệu là một trong những bƣớc tiền xử lý trong hệ dịch máy. Có nhiều phƣơng pháp để chuẩn hóa dữ liệu đầu vào đang đƣợc cung cấp miễn phí dƣới dạng mã nguồn mở.

4.2.2. Xây dựng mô hình ngôn ngữ, mô hình dịch

Bộ công cụ xây dựng mô hình ngôn ngữ - SRILM

-SRILM là một gói công cụ để xây dựng mô hình dịch ngôn ngữ. Nó giúp chúng ta xây dựng đƣợc mô hình ngôn ngữ trƣớc khi cho vào máy dịch. SRILM bao gồm các thành phần sau:

-Một tập hợp các thƣ viện C + + giúp cài đ t mô hình ngôn ngữ, h trợ cấu trúc dữ liệu và các chức năng tiện ích nhỏ.

-Một tập hợp các chƣơng trình thực thi, thực hiện nhiệm vụ xây dựng mô hình ngôn ngữ, đào tạo và thử nghiệm mô hình ngôn ngữ trên dữ liệu, gắn thẻ ho c phân chia văn bản, ...

Bộ công cụ SRILM có rất nhiều chƣơng trình con, để xây dựng mô hình ngôn ngữ, chúng tôi sử dụng 2 chƣơng trình chính là Ngram-count và Ngram[], dung lƣợng khoảng 90MB dữ liệu đơn ngữ.

Bộ công cụ GIZA++

Chúng ta sử dụng GIZA++ để xây dựng mô hình dịch và dùng mkcls để ƣớc lƣợng giá trị cực đại cho m i mô hình. Chức năng chủ yếu của GIZA++ là gióng hàng từ từ nguồn ngữ liệu song ngữ. GIZA++ đƣợc tích hợp cùng với MOSES để huấn luyện, xây dựng mô hình dịch.

Sau khi chuẩn hóa dữ liệu và đã xây dựng mô hình ngôn ngữ, mô hình dịch việc tiếp theo của chúng ta là dịch máy. Bộ ngữ liệu song ngữ trên các c p ngôn ngữ khác nhau. Tiến hành dịch và so sánh kết quả.

4.2.3. Cắt gọt (Pruning) bảng cụm từ theo mô hình Entropy

Để xây thực hiện cắt gọt bảng cụm từ, chúng tôi sử dụng bộ công cụ SALM tích hợp tự động với Moses. SALM cho phép loại bỏ những cụm từ dƣ thừa nhằm giảm kích thƣớc của bảng Phrase và tăng tốc độ dịch. Tuy nhiên, việc thực hiện này cũng tính toán các điểm quan trọng Johnson et al., 2007 3, và sử dụng phiên bản đã cập nhật lại code bởi Chris Dyer trong thƣ mục “contrib/relent-filter/sigtest-filter” .

Chúng ta thực hiện nhƣ sau:

Bƣớc 1: Cài đ t công cụ h trợ

Tải bộ cài SALM4

Bƣớc 2: Biên dịch

Chạy "make SALMDIR=/path/to/SALM" in "contrib/relent-filter/sigtest- filter" để tạo thực thi filter-pt

Bƣớc 3: chuẩn bị các file dữ liệu

1 s_train: file dữ liệu gốc để training. Trong phần thực nghiệm này tôi chọn s_train là: “ ~/tools/work/corpus/50001b_train.en “

2 t_train: file dữ liệu mục tiêu. Trong phần thực nghiệm này tôi chọn t_train là “~/tools/work/corpus/50001b_train”

3 moses_ini: là đƣờng dẫn đến file cấu hình Moses sau khi tuning , trong phần thực nghiệm này tôi dùng “~/tools/work/mert-work/moses.ini”

4 pruning_binaries: là đƣờng dẫn đến thƣ mục pruning, trong phần thực nghiệm này tôi dùng “~/tools/moses/bin”

(5) pruning_scripts: là đƣờng dẫn đến thƣ mục: "contrib/relent- 3 http://www.aclweb.org/anthology/D/D07/D07-1103.pdf 4 http://projectile.sv.cmu.edu/research/public/tools/salm/salm.htm#update

filter/scripts"

(6 sigbin: là đƣờng dẫn đến "contrib/relent-filter/sigtest-filter"

(7) output_dir: là đƣờng dẫn thƣ mục chứa kết quả đầu ra. Trong phần thực nghiệm này tôi chọn “~/tools/”

Bƣớc 4: Xây dựng mảng hậu tố cho dữ liệu training song ngữ của ngôn

ngữ nguồn và ngôn ngữ đích.

% SALM/Bin/Linux/Index/IndexSA.O32 <s_train> % SALM/Bin/Linux/Index/IndexSA.O32 <t_train>

Bƣơc 5: tính điểm cho các c p cụm từ

% perl <pruning_scripts>/calcPruningScores.pl -moses_ini <moses_ini> \ -training_s <s_train> -training_t <t_train> \

-prune_bin <pruning_binaries> -prune_scripts <pruning_scripts> \ -moses_scripts <path_to_moses>/scripts/training/ \

-workdir <output_dir> -dec_size 10000

Kết quả đầu ra của bƣớc này là các file đƣợc sinh ra trong thƣ mục <output_dir>/scores/ dir:

1. count.txt : đếm các c p cụm từ cho N(s, t) N (s, *) và N (*, t) 2. divergence.txt: log của sự phân kỳ của các c p cụm từ

3. empirical.txt - phân phối thực nghiệm của các c p cụm từ N s, t / N (*, *)

4. rel_ent.txt: entropy tƣơng đối của các c p cụm từ

5. significance.txt : tính điểm quan trọng của các c p cụm từ

Chúng ta có thể sử dụng bất kỳ một trong những tập tin này cho cắt gọt và cũng kết hợp những điểm số bằng cách sử dụng scripts <pruning_scripts> /interpolateScores.pl.

Để thực sự cắt gọt một bảng cụm từ, chạy <pruning_scripts> /prunePT.pl, điều này sẽ cắt gọt c p cụm từ dựa trên các tập tin đó là điểm số đƣợc sử dụng.

Bƣớc 6: thực hiện cắt gọt với mô hình entropy

Ví dụ, để cắt gọt giảm 30% kích thƣớc bảng cụm từ, ta sử dụng entropy quan hệ nhƣ sau:

% perl <pruning_scripts>/prunePT.pl -table <phrase_table_file> \ -scores <output_dir>/scores/rel_ent.txt

-percentage 70 > <pruned_phrase_table_file> Ho c cũng có thể cắt gọt bởi ngƣỡng

% perl <pruning_scripts>/prunePT.pl -table <phrase_table_file> \ -scores <output_dir>/scores/rel_ent.txt

-threshold 0.1 > <pruned_phrase_table_file>

Bƣớc 7: thay thế <phrase_table_file> với <reord_table_file>

% perl <pruning_scripts>/prunePT.pl -table <reord_table_file> \ -scores <output_dir>/scores/rel_ent.txt

-percentage 70 > <pruned_reord_table_file>

Bƣớc 8: Song song hóa

Các scripts <pruning_scripts> /calcPruningScores.pl đòi hỏi việc giải mã buộc của toàn bộ các c p cụm từ trong bảng cụm từ, nhƣ vậy trừ khi nó đƣợc sử dụng cho một ngữ liệu nhỏ, nó thƣờng đòi hỏi một lƣợng lớn thời gian để xử lý. Vì vậy, chúng tôi khuyên ngƣời dùng chạy nhiều trƣờng hợp của <pruning_scripts> /calcPruningScores.pl song song để xử lý các phần khác nhau của bảng cụm từ. Để làm điều này, chúng tôi chạy câu lệnh sau:

% perl <pruning_scripts>/calcPruningScores.pl -moses_ini <moses_ini> \

-training_s <s_train> -training_t <t_train> \

-prune_bin <pruning_binaries> -prune_scripts <pruning_scripts> \ -moses_scripts <path_to_moses>/scripts/training/ \

-workdir <output_dir> -dec_size 10000 -start 0 -end 100000

4.2.4. Đánh giá kết quả dịch

Kết quả dịch máy thống kê có chính xác hay không đều dựa vào các chỉ số dịch máy. Có 2 chỉ số cần quan tâm đó là chỉ số BLEU [11] và chỉ số NIST.  Chỉ số BLEU

Đây là chỉ số đánh giá chất lƣợng dịch của máy dịch thống kê từ ngôn ngữ này sang ngôn ngữ khác.

Kết quả dịch máy thống kê càng chính xác thì chỉ số BLEU càng cao và ngƣợc lại. Điểm chỉ số BLEU đƣợc tính dựa vào việc so sánh câu dịch đƣợc với một tập hợp các câu dịch tốt, sau đó lấy giá trị trung bình từ những câu này.

Chỉ số BLEU có giá trị nằm từ 0 đến 1. Chỉ số càng gần 1 thì chất lƣợng dịch càng tốt, chỉ số càng nhỏ gần tới 0 thì chất lƣợng dịch càng kém.

BLEU tính điểm bằng cách đối chiếu kết quả dịch với tài liệu dịch tham khảo và tài liệu nguồn. M c dù chỉ ra rằng điểm BLEU thƣờng không thực sự tƣơng quan với đánh giá thủ công của con ngƣời với các loại hệ thống khác nhau, thế nhƣng vẫn có thể đảm bảo chính xác để đánh giá trên một hệ thống

dịch thống kê. Chính vì vậy, trong luận văn này, điểm BLEU đƣợc sử dụng làm tiêu chuẩn đánh giá chất lƣợng dịch.

Chúng tôi lấy trung bình hình học của các điểm chính xác sửa đổi các văn dữ liệu thử và sau đó nhân kết quả của một yếu tố hình phạt ngắn gọn theo cấp số nhân. Hiện nay, trƣờng hợp gấp là việc bình thƣờng hóa văn bản chỉ đƣợc thực hiện trƣớc khi tính toán độ chính xác. Đầu tiên chúng ta tính trung bình

Một phần của tài liệu Trung tâm Thư viện và Tri thức số - Library and Digital Knowledge Center (Trang 40)