Tải bản đầy đủ (.docx) (35 trang)

: CÁC HỆ THỐNG THÔNG MINH ĐỀ TÀI : Spelling Correction – Sửa lỗi chính tả văn bản

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 (634.13 KB, 35 trang )

TRƯỜNG ĐẠI HỌC HẢI PHỊNG
KHOA CƠNG NGHỆ THƠNG TIN

BÁO CÁO MÔN HỌC
MÔN: CÁC HỆ THỐNG THÔNG MINH

ĐỀ TÀI : Spelling Correction – Sửa lỗi chính tả văn bản
Thành viên: Nguyễn Cát Hải (NHĨM TRƯỞNG)
Nguyễn Đức Hải
Trần Văn Hồng
Vũ Phú Tài
Vũ Văn Dương
Lớp: CNTT1.K21
Giảng viên hướng dẫn: Phạm Nghĩa Luân

Hải Phòng 05/2022

Nhóm 4


LỜI CẢM ƠN
Trước hết em xin gửi lời cảm ơn và lòng biết ơn đến Thầy Phạm Nghĩa
Luân Trường Đại Học Hải Phịng đã tận tình hướng dẫn trong suốt thời
gian làm bài tập. Thầy đã tạo rất nhiều điều kiện thuận lợi và cho những
lời khuyên quý báu giúp Nhóm em hồn thành tốt bài tập.
Xin chân thành cảm ơn thầy giáo nói riêng và các thầy cơ Bộ mơn
trong khoa CNTT nói chung đã tận tình giảng dạy, truyền đạt cho em
những kiến thức quý bảo và tạo điều kiện giúp đỡ trong quá trình học tập,
giúp em có được cơ sở lý thuyết vững vàng.
Cuối cùng, em xin chân thành cảm ơn gia đình và bạn bè đã luôn tạo
điều kiện, quan tâm, ủng hộ, giúp đỡ, động viên em trong suốt q trình


học tập và hồn thành tốt bài báo cáo của nhóm.
Em xin chân thành cảm ơn!

2


MỤC LỤC

MỞ ĐẦU
1.

Lý do chọn chủ đề:

Trong quá trình phát triển và hội nhập văn hóa, kinh tế thế giới. Quá trình giao
lưu giữa người Việt Nam và người nước ngồi ngày càng nhiều d ẫ n đến khó
khăn trong q trình sửa lỗi chính tả cho văn bản. Hiện nay có nhiều hệ thống tự
động sửa lỗi chính tả: Google docs, VCatSpell, TummoSpell, TinySpell,…
Những hệ thống này cho phép người sử dụng kiểm tra lỗi chính tả một cách
nhanh chóng ngay trên giao diện làm việc. Điều ấy cho thấy sự phát triển của
dịch máy càng ngày càng tiến gần hơn đến ngơn ngữ tự nhiên của con người.
Chính vì lý do đó, nhóm em lựa chọn và thực hiện đề tài“ Spelling Correction –
Sửa lỗi chính tả văn bản”.
2. Hướng nghiên cứu của đề tài:
- Nghiên cứu tìm hiểu phân tích.
- Cài đặt thử nghiệm.
3. Nội dung:
- Phần 1: Tổng quan về bài toán.
- Phần 2: Kiến trúc của mạng.
- Phần 3: Ứng dụng RNN cho bài toán sửa lỗi chính tả tiếng Việt.
- Phần 4: Thử nghiệm và đánh giá.


3


Phần 1: Tổng quan về bài toán
1.1. Giới thiệu bài toán.
1.1.1. Hiện trạng và các ứng dụng thực tế:
Hiện nay công nghệ thông tin ngày càng phát triển, văn bản được soạn thảo bằng
hình thức viết tay dần được thay thế bằng hình thức đánh máy. Lỗi chính tả xuất
hiện là điều khơng thể tránh khỏi và có thể do nhiều nguyên nhân khác nhau: lỗi
đánh máy, người soạn thảo khơng biết mình đang viết sai... Những lỗi sai này,
người soạn thảo văn bản thường khơng hoặc khó có thể nhận ra lỗi chính tả của
mình. Để phát hiện và sửa lỗi cho một văn bản có thể mất rất nhiều thời gian.
Điều này đã dẫn nhu cầu phát hiện và sữa lỗi chính tả tự động cho nhiều ngơn ngữ
trên các hệ soạn thảo văn bản khác nhau.
Bài toán kiểm tra chính tả tự động cho văn bản tiếng Việt đã được quan tâm
nghiên cứu trong những năm gần đây. Ứng dụng của bài tốn kiểm tra chính tả tự
động có ý nghĩa thực tế rất lớn đối với những hệ thống xử lý văn bản và nhiều bài
toán khác nhau như các văn bản được gõ trên máy tính (Viết nhật ký, viết thư từ,
viết truyện ngắn, bình luận, đánh giá , thơ, văn xuôi, truyện ngắn, kịch, văn tự sự,
tùy bút, tiểu thuyết, phê bình văn học, ký, các loại sách giáo khoa, tài liệu tham
khảo học tập, các bài báo khoa học, cơng trình nghiên cứu khoa học, đồ án tốt
nghiệp, luận văn, sách vở bài tập, các biên bản nộp phạt, biên bản các cuộc họp,
nghị quyết, các điều luật, quyết định buộc thôi việc…) đều có nhu cầu sửa lỗi
chính tả hoặc là các văn bản OCR Tiếng Việt , các văn bản dịch từ ngơn ngữ khác
sang Tiếng Việt bị sai chính tả ,.. hay là áp dụng trong các hệ thống hỗ trợ gõ văn
bản sửa sai trên các trình biên soạn
Tại Việt Nam, những nghiên cứu về kiểm tra chính tả tiếng Việt hiện nay cũng đã
thu được một số kết quả, tuy nhiên cịn gặp nhiều khó khăn như: có nhiều chuẩn
chính tả khác nhau và chưa thống nhất chung trên cả nước trong mọi lĩnh vực, có

chuẩn chính tả nhưng chưa có chuẩn chính âm,... Một số phần mềm kiểm tra
chính tả tiếng Việt cho văn bản điện tử cũng đã được cơng bố như: VietSpell,
Unikey, tích hợp trong MSWord 2003,… Tuy nhiên, ngoài VietSpell, hầu hết
chúng đều chưa được áp dụng khả quan trong thực tế.

1.1.2. Phương hướng:
4


Chính tả là sự chuẩn hố hình thức chữ viết của ngơn ngữ. Đó là một hệ thống các
quy tắc về cách viết các âm tiết, từ, các dấu câu, tên riêng, từ nước ngồi, … Quan
niệm về chính tả không phải do bản thân ngôn ngữ quy định mà do xã hội quy
định, và là các quy tắc được cộng đồng xã hội thừa nhận để viết. Khác với các
ngơn ngữ biến hình - ngơn ngữ mà các nội dung từ biểu hiện ngay ở mức từ khi
biến đổi hình thái từ như các ngơn ngữ Châu Âu (tiếng Anh, Pháp, ...) - là chính tả
ở mức “từ” thì chính tả tiếng Việt – ngơn ngữ đơn lập (nội dung của từ chỉ mang
tính từ vựng) - lại là chính tả ở mức “âm tiết”.
Vì thế trong khi bước đầu tiên của bài tốn kiểm tra chính tả cho các ngơn ngữ
biến hình là kiểm tra chính tả “từ” thì với tiếng Việt sẽ phải tiến hành thêm một
pha kiểm tra chính tả mức “âm tiết” ở trước pha kiểm tra mức “từ” này. Hay nói
các khác mơ hình tổng quan kiểm tra chính tả cho tiếng Việt sẽ bao gồm 3 pha:
- Pha kiểm tra chính tả ở mức “âm tiết” 7
- Pha kiểm tra chính tả ở mức “từ”
- Pha kiểm tra chính tả ở mức “câu” (mức ngữ pháp)
Nội dung của luận văn chỉ tập trung trình bày giải pháp cho pha kiểm tra chính tả
ở mức âm tiết.
Vấn đề kiểm tra lỗi chính tả là một trong những vấn đề quan trọng của xử lý ngơn
ngữ tự nhiên. Có nhiều ngun nhân tạo ra lỗi chính tả: lỗi do gõ sai từ, lỗi do sử
dụng từ điển sai. Tương tự như những ngôn ngữ khác, phát hiện và sửa lỗi chính
tả tiếng Việt gồm hai giai đoạn: thứ nhất, tìm những từ sai lỗi chính tả và thứ hai

là tìm ra những từ gợi ý. Bởi vì mỗi ngơn ngữ có những đặc trưng riêng, chi tiết
mỗi giai đoạn là khác nhau.


-

1.1.3. Đầu vào, đầu ra của bài tốn:
Đầu vào:
Các tệp dữ liệu ngơn ngữ txt,các file văn bản doc,docs,…như được soạn trên
ngôn ngữ tiếng Việt nhưng bị sai lỗi chính tả.
Các văn bản dịch tự động từ ngơn ngữ khác chưa chính xác.
Các loại OCR chữ viết thành văn bản.
Đầu ra:
Tệp chứa văn bản đã qua xử lý tự động loại bỏ các lỗi thừa ,thiếu, sai,.. khiến
tệp văn bản ít lỗi hơn hoặc khơng cịn lỗi, các câu từ mang đúng ý nghĩa, đúng
đấu câu, ngữ pháp của bài , đảm bảo được yêu cầu đặt ra.
5


1.2. Một số đặc điểm trong Tiếng Việt.
1.2.1. Đặc điểm của Tiếng Việt:
Tiếng Việt là một ngôn ngữ đơn lập, quan hệ giữa các từ được biểu thị bằng
những phương tiện nằm ngoài từ như trật tự từ, hư từ. Đặc điểm này được áp
dụng cho cả về ngữ âm, ngữ pháp và ngữ nghĩa.
-

1.2.2. Các đơn vị của Tiếng Việt:
Tiếng (âm tiết) là đơn vị phát âm tự nhiên nhỏ nhất trong ngôn ngữ. Trong
tiếng Việt, một âm tiết bao giờ cũng được phát ra với một thanh điệu, và khi
viết được tách rời với âm tiết khác bằng một khoảng trống. Trên chữ viết,

mỗi âm tiết tiếng Việt được ghi thành một “chữ” và đọc thành một “tiếng”.
Có nhiều cách mô tả cấu trúc âm tiết tiếng Việt khác nhau: 3 thành phần, 4

-

hay 5 thành phần.
Từ: Từ là đơn vị ngơn ngữ có nghĩa hồn chỉnh. Từ tiếng Việt bao gồm một
hay nhiều âm tiết sắp xếp theo một thứ tự nhất định. Có từ đơn, từ ghép và từ
láy. Từ trong tiếng Việt có khả năng hoạt động tự do và độc lập về mặt cú
pháp. Từ tiếng Việt khơng có sự biến dạng (số nhiều, ngôi thứ, bị động...)

-

như trong nhiều ngôn ngữ khác.
Câu: Câu do các từ hợp thành theo những quy tắc nhất định. Trong tiếng

-

Việt, các quy tắc này rất đa dạng.
Dấu thanh: Tiếng Việt gồm có 6 thanh điệu như ngang, huyền, hỏi, ngã, sắc,
nặng. Trong đó có 5 dấu thanh, thanh ngang không được biểu diễn bởi dấu
thanh nào. Trong văn bản viết tay, dấu thanh được đánh khá tùy tiện, khơng
đặt vào đúng vị trí của âm chính.
1.3. Một số lỗi chính tả cơ bản và phương pháp kiểm lỗi mức độ âm tiết.
1.3.1. Các nguyên nhân gây ra lỗi chính tả:
Có nhiều ngun nhân khác nhau gây ra lỗi chính tả, tuy vậy có thể
tổng hợp lại một số nguyên nhân như sau:
- Nguyên nhân do nhập liệu sai: Lỗi này có thể do gõ sai/ thiếu/ thừa phím gây

ra, do cách cài đặt bàn phím, loại bàn phím, do quy tắc gõ tiếng Việt của các

kiểu gõ khác nhau (Telex, VNI, TCVN, Unicode, ...).
- Nguyên nhân do phát âm sai: Lỗi này do sự nhầm lẫn giữa cách đọc và cách

viết của những từ đồng âm hoặc âm gần với nhau dẫn đến viết sai (như lỗi dấu
6


hỏi/ngã, lối sai âm đầu s/x, tr/ch, r/d/gi/v...). Với tiếng Việt, do có nhiều khác
biệt về cách phát âm giữa các vùng trong khi hệ thống chữ viết lại dựa trên hệ
thống phát âm của thủ đô Hà Nội nên dễ dẫn đến các lỗi sai loại này.
- Nguyên nhân do sử dụng từ vựng sai: Lỗi này do khi sử dụng từ sai với ý

nghĩa thực của nó. Đây là lỗi về vốn từ vựng của người sử dụng, nhưng nhiều
khi vẫn địi hỏi trình bắt lỗi chính tả phải tìm ra những lỗi này.
- Các nguyên nhân khác: Ngồi ra cịn các loại lỗi chính tả khác như viết hoa,

viết tên riêng, thuật ngữ, tên tiếng nước ngoài khơng đúng qui cách, …
1.3.2. Phân loại lỗi chính tả.
Có nhiều cách phân loại lỗi chính tả theo các tiêu chí khác nhau. Ta có thể phân
loại theo nguồn gốc sinh ra lỗi như ở trên. Nếu xét theo quan điểm của chương
trình bắt lỗi chính tả ở mức từ thì lỗi chính tả có thể được phân làm hai loại là lỗi
non-word và lỗi real-word:
Lỗi non-word:
Đây là lỗi tạo ra từ sai, nghĩa là từ đó hồn tồn khơng có trong từ điển từ vựng
tiếng Việt hoặc một số dữ liệu đầu vào cho quá trình tiền xử lý văn bản như: từ
điển tên riêng, từ điển viết tắt, từ điển vay mượn,... Đây là loại lỗi dễ phát hiện.
1.3.2.1.

Lỗi real-word:
Đây là lỗi chính tả mà từ đó có trong từ điển nhưng sử dụng từ sai. Nếu không dựa

vào ngữ cảnh xung quanh thì khơng thể xác định được đó có phải là lỗi chính tả
hay khơng. Đây là loại lỗi rất khó phát hiện và xử lý.
1.3.3. Phát hiện lỗi chính tả.
Giải pháp đơn giản để phát hiện lỗi chính tả là dùng một cấu trúc dữ liệu để lưu tất
cả các từ đã biết (được lưu trong từ điển). Nếu khơng có trong từ điển có nghĩa là
từ đó bị sai. Giải pháp này cần một số heuristic để tránh xem các con số, ngày
tháng, … là lỗi sai.
1.3.2.2.

Đối với trình bắt lỗi chính tả truyền thống thì từ điển là một phần rất quan trọng. Từ
điển có thể được lưu theo dạng cấu trúc dữ liệu như bảng băm hoặc cấu trúc dữ liệu
dạng cây có thể được sử dụng.
Với những lỗi sai dạng từ vựng, ta phải dùng một số phương pháp khác phức tạp
hơn để phát hiện.
1.3.4. Sửa lỗi chính tả.
Sau khi đã phát hiện được lỗi chính tả, ta cần tiến hành bước sửa lỗi chính tả đó.
7


Ta có thể tạm chia ra hai phương pháp sửa lỗi chính hiện nay đó là dựa vào luật và
dựa vào thống kê. Các phương pháp dựa theo luật có ưu điểm là không tốn quá
nhiều tài nguyên của thiết bị, tuy nhiên các chương trình sử dụng phương pháp này
khơng có khả năng học, và hiện tại kết quả chưa cao đối với nhiều ngơn ngữ.
Có khá nhiều phương pháp dựa vào thống kê khác nhau đã được đưa ra để kiểm tra
lỗi chính tả tiếng Anh. Trong phạm vi giới hạn của luận văn, tôi xin chỉ liệt kê một
vài phương pháp được đánh giá là nổi bật: “Một số nghiên cứu sử dụng mơ hình
kênh nhiễu như Mays và cộng sự (1990), Church và Gale (1991), Brill và Moore
(2001)”. “Phương pháp lai Bayes, sử dụng hàm phân loại Naive Bayes”. “Kết hợp
mơ hình trigram từ loại và hàm phân loại Bayes”.
1.4. Một số phần mềm và sản phẩm thực tế đã được ứng dụng.

- Những chiếc điện thoại thơng minh là một ví dụ về việc áp dụng tính năng sửa
lỗi văn bản thơng qua chức năng Auto Correct thường được tích hợp với hệ
thống của điện thoại điện thoại thơng minh.
Chức năng này có thể phát hiện ra
gõ một từ hoặc một đoạn văn bản và
đấy khi ta nhấp enter.

lỗi sai chính tả khi ta
tự động sửa lại lỗi sai

Với sự phát triển của điện thoại
thông minh, tính năng
Auto Correct càng ngày càng được
nâng cấp và có thể bắt
được lỗi chuẩn xác hơn và chỉnh sửa hợp lí hơn (Ví dụ bên hình) khi ta gõ một đoạn
văn bản.
- Sửa lỗi chính tả cũng được áp dụng trong những chiếc máy tính giúp ta có thể

gõ những đoạn văn bản chuẩn xác hơn khi làm việc với những ứng dụng văn
bản như Word, Excel,… làm gia tăng chất lượng làm việc.
Chức năng này cũng tương tư như điện thoại thơng minh và ta có thể bật tắt
được chúng 1 cách dễ dàng thơng qua cài đặt.
Tính năng này cũng được cập nhập tuỳ theo sự phát triển của hệ điều
hành máy tính và càng ngày càng được trau truốt hơn giúp người
dùng thuận tiện khi làm việc.

8


-


1.5. Một số cách tiếp cận bài toán sửa lỗi chính tả văn bản:
Có một số vấn đề cần giải quyết trong vấn đề sửa lỗi. Vấn đề đầu tiên liên
quan đến các mẫu lỗi được tạo bởi các phương tiện tạo văn bản khác nhau như
máy đánh chữ và bàn phím máy tính, sắp chữ và in bằng máy, hệ thống OCR,
đầu ra trình nhận dạng giọng nói và tất nhiên, chữ viết tay.

- Thông thường, mẫu lỗi của một phương tiện không phù hợp với phương tiện
kia. Vấn đề mẫu lỗi của mỗi phương tiện truyền thông liên quan đến độ lệch
tương đối của chèn, xóa, thay thế và chuyển vị lỗi, lỗi chạy và tách từ, lỗi so
với nhiều ký tự, hiệu ứng độ dài từ, độ lệch vị trí, hiệu ứng hình dạng ký tự,
hiệu ứng tương tự ngữ âm, xu hướng heuristic, vv kiến thức về mơ hình lỗi là
cần thiết để mơ hình hóa hiệu quả cơng cụ kiểm tra chính tả. Cách tiếp cận
dựa trên khoảng cách chỉnh sửa tối thiểu là các phương pháp phổ biến nhất.
- Khoảng cách chỉnh sửa tối thiểu là số hoạt động chỉnh sửa tối thiểu (chèn, xóa
và thay thế) cần thiết để chuyển đổi một chuỗi văn bản thành chuỗi văn bản
khác. Khoảng cách này còn được gọi là khoảng cách Damerau- Levenshtein
sau khi những người tiên phong đề xuất nó để sửa lỗi văn bản. Trong hình
thức ban đầu của nó, thuật tốn khoảng cách chỉnh sửa tối thiểu yêu cầu từ
'm'. Sau khi so sánh, các từ có khoảng cách chỉnh sửa tối thiểu được chọn làm
phương án thay thế chính xác.
- Để cải thiện tốc độ, khoảng cách chỉnh sửa tối thiểu được sử dụng khi một tập
hợp các từ được tạo ra bằng cách tạo ra mọi hoán vị lỗi duy nhất có thể có của
chuỗi sai chính tả và sau đó kiểm tra tập đoàn cho bất kỳ từ hợp lệ nào. Trình
kiểm tra chính tả là ứng dụng độc lập có khả năng hoạt động trên một khối
văn bản hoặc như một tính năng của ứng dụng lớn hơn, chẳng hạn như trình
xử lý văn bản, ứng dụng email, từ điển điện tử hoặc cơng cụ tìm kiếm
- Một vấn đề quan trọng khác mà chúng ta có thể đề cập đó chính là tập đồn
được gắn thẻ có liên quan đến kích thước của tập đồn, vấn đề về hình thái
uốn cong và sáng tạo, kỹ thuật truy cập từ và vân vân. Trong các cách tiếp cận

khác, thì cách tiếp cận phổ biến được sử dụng trong các vấn đề OCR đó chính
9


là cách tiếp cận N-gram. Việc xây dựng N-gram thích hợp từ dữ liệu văn bản
thô là một vấn đề quan trọng trong cách tiếp cận này.
- Việc phát hiện lỗi từ thực sự cần kiến thức mức cao hơn so với việc phát hiện
lỗi của lỗi không phải từ. Trong thực tế, phát hiện lỗi từ thực là một vấn đề
cần công cụ NLP để giải quyết. Một số phương pháp tiếp cận dựa trên khoảng
cách chỉnh sửa tối thiểu; các quy tắc chính tương tự, N-grams, xác suất và
lưới thần kinh được đề xuất để hoàn thành nhiệm vụ.



Cách tiếp cận bài tốn sửa lỗi chính tả văn bản thông qua 1 số phương pháp
sau:
Phương pháp làm mịn Add-one:

Thuật toán làm mịn Add-one cộng thêm 1 vào tần số xuất hiện của tất cả các
cụm N-gram rồi nhân với phân số chuẩn hóa (để bảo tồn tổng xác suất).
Với unigram, khi cộng thêm 1 vào tần số của mỗi cụm unigram, thì tổng số
cụm unigram đã xuất hiện bằng:
M’ = M + V với M là tổng số cụm unigram đã xuất hiện
V là kích thước bộ từ vựng
Để bảo toàn tổng số cụm unigram vẫn bằng M, thì tần số mới của các cụm
unigram được tính lại theo công thức:
C = (C+1) với C là tần số của cụm unigram trước khi làm mịn
Như vậy, xác suất của các cụm unigram cũng được tính lại:
P* = =
Xét các cụm N-gram với N>1, thay M bằng C(w...w) thì xác suất của cụm

w...ww được tính theo cơng thức sau:
P(w|w...w) =
Chúng ta có thể thấy thuật tốn này sẽ làm thay đổi đáng kể xác suất của các
cụm N-gram đã xuất hiện trong tập huấn luyện nếu kích thước bộ từ điển V là rất
lớn. Trong thực nghiệm, một vài cụm N-gram có xác suất giảm đi gần 10 lần, do
kích thước bộ từ điển là lớn trong khi tần số xuất hiện của cụm N-gram đó khơng
cao. Để thuật tốn thêm hiệu quả, người ta sử dụng cơng thức sau:
P(ww...w) =
10


Công thức trên là một phiên bản cải tiến thông dụng của thuật tốn add-one. Để
bảo tồn tổng xác suất của tất cả các cụm N-gram, thì λ được chọn trong khoảng [0,
1], với một số giá trị thông dụng sau:
- λ = 0: không làm mịn
- λ = 1: thuật toán add-one
- λ = : được gọi là thuật toán Jeffreys – Perks
 Phương pháp làm mịn Witten-Bell:
Thuật toán Witten-Bell hoạt động dựa trên nguyên tắc:
Khi gặp những cụm N-gram có tần số 0, ta coi đây là lần đầu tiên cụm từ này
xuất hiện. Như vậy, xác suất của cụm N-gram có tần số bằng 0 có thể tính dựa vào
xác suất gặp một cụm N-gram lần đầu tiên.
Với unigram, gọi T là số cụm unigram khác nhau đã xuất hiện, còn M là tổng
số các cụm unigram đã thống kê, khi đó tổng số sự kiện sẽ là (T+M), và xác suất để
gặp cụm unigram lần đầu tiên (hay tổng xác suất của các cụm unigram chưa xuất
hiện lần nào) được tính bằng:
Gọi V là kích thước bộ từ vựng, còn Z là số cụm unigram chưa xuất hiện lần
nào: Z = V - T
Xác suất xuất hiện của một cụm unigram chưa xuất hiện lần nào (có tần số
bằng 0) được tính bằng:

P* =
Và xác suất xuất hiện của các cụm unigram có tần số khác 0 được tính lại theo
cơng thức:
P(w) = với c(w) là số lần xuất hiện của cụm w
Cũng giống thuật toán add-one, khi xét các cụm N-gram với N>1, thay M bằng
C(w...w) thì xác suất của cụm w...ww với C(w...ww) = 0 được tính theo cơng thức
sau:
P(w|w...w) =
Với C(w...ww) > 0, thì xác suất cụm w...ww tính bằng cơng thức:
P(w|w...w) =



Phương pháp truy hồi:
11


Trong các phương pháp chiết khấu như Add-One hay Witten-Bell, nếu cụm
w...ww không xuất hiện trong tập huấn luyện, và cụm w...w cũng khơng xuất hiện,
thì xác suất của cụm w...ww sau khi làm mịn vẫn bằng 0. Phương pháp truy hồi
tránh rắc rối trên bằng cách ước lượng xác suất các cụm N-gram chưa xuất hiện lần
nào dựa vào xác suất của các cụm N-gram ngắn hơn có xác suất khác 0 [10][4].
Cụ thể, xác suất của cụm w...ww được tính lại theo cơng thức sau:
P(w|w...w) =
Áp dụng cho bigram, ta có:
P(w|w) =
Cơng thức trên có thể viết lại thành:
P(w|w) = P(w|w) + µ(ww) * α * P(w)
với u(x) =
Tương tự, khi áp dụng cho trigram ta có:

P(w|ww) = Cơng thức trên cũng có thể viết lại thành:
P(w|ww) = P(w|ww) + µ(www) * α * P(w|w) + µ(ww) *
α * P(w)
Sự chính xác của mơ hình truy hồi phụ thuộc vào các tham số α và α. Có vài
kỹ thuật giúp lựa chọn được những tham số này, tùy theo tập huấn luyện và mơ hình
ngơn ngữ.
Một cách đơn giản, có thể chọn α và α là các hằng số. Tuy nhiên rất khó có thể
chọn được hai hằng số để tổng xác suất của tất cả các cụm N-gram khơng thay đổi.
Việc chọn hằng số khơng chính xác, sẽ làm ảnh hưởng lớn đến độ chính xác của cả
mơ hình ngơn ngữ. Do đó, ta có thể chọn tham số α như một hàm của N-gram:
α = α(ww) và α = α(ww)
Tuy nhiên, trong phương pháp truy hồi, tổng xác suất của tất cả các cụm Ngram sẽ luôn lớn hơn 1, do xác suất của các cụm N-gram đã xuất hiện thì khơng thay
đổi, trong khi xác suất của các cụm N-gram chưa xuất hiện thì được tăng lên. Do đó,
để thuật tốn chính xác hơn, thì ta cần kết hợp nó với một thuật tốn chiết khấu như
Witten-Bell hay Good-Turing để làm giảm xác suất của các cụm N-gram đã xuất
hiện. Do đó, trong thực tế, chúng ta có cơng thức sau:
P(w|ww) =
12


Trong đó P’ chính là xác suất của cụm N-gram khi áp dụng thuật toán làm mịn chiết
khấu.


Phương pháp nội suy:

Phương pháp này có chung nguyên lý với phương pháp truy hồi: “sử dụng các
cụm N-gram ngắn hơn để tính xác suất của cụm N-gram dài hơn”. Tuy nhiên,
phương pháp này khác phương pháp truy hồi ở điểm: phương pháp này không phụ
thuộc vào sự xuất hiện của các cụm N-gram.

Cơng thức tính xác suất theo phương pháp nội suy như sau:
P(w|w...w) = λP(w|w...w) + (1-λ)P(w|w...w)
Áp dụng cho bigram và trigram ta có:
P(w|w) = λP(w|w) + (1-λ)P(w)
P(w|w...w) = λP(w|ww) + λP(w|w) + λP(w) với λ = 1
Ở công thức trên, do tổng của tất cả các tham số λ bằng 1 nên để đơn giản ta có
thể chọn tất cả λ bằng nhau và bằng .
Tuy nhiên, cũng có thể chọn các tham số λ như là một hàm của N-gram:
λ = λ(www), λ = λ(ww) và λ = λ(w)

13


Phần 2: Kiến trúc mạng
2.1. Kiến trúc mạng nơ ron nhân tạo.
Mạng nơ ron nhân tạo (Artificial Neural Network – ANN) là một mơ hình xử lý
thơng tin được mơ phỏng dựa trên hoạt động của hệ thống thần kinh của sinh vật,
bao gồm số lượng lớn các Nơ-ron được gắn kết để xử lý thông tin. ANN hoạt động
giống như bộ não của con người, được học bởi kinh nghiệm (thơng qua việc huấn
luyện), có khả năng lưu giữ các tri thức và sử dụng các tri thức đó trong việc dự
đốn các dữ liệu chưa biết (unseen data).

Hình 2.1: Kiến trúc chung của một ANN gồm 3 thành phần đó là Input
Layer, Hidden Layer và Output Layer
Một mạng ANN sẽ có 3 thành phần:
• Tầng vào (input layer): Là tầng bên trái cùng của mạng thể hiện cho
các đầu vào của mạng.
• Tầng ra (output layer): Là tầng bên phải cùng của mạng thể hiện cho
các đầu ra của mạng.
• Tầng ẩn (hidden layer): Là tầng nằm giữa tầng vào và tầng ra thể

hiện cho việc suy luận logic của mạng.
2.2. Mạng nơ – ron hồi quy RNN.
Mạng nơ-ron hồi quy Recurrent Neural Network (RNN) là một trong những
mơ hình Deep learning được đánh giá có nhiều ưu điểm trong các tác vụ xử lý
14


ngôn ngữ tự nhiên (NLP). Trong phần này, tôi sẽ trình bày các khái niệm, các
đặc điểm cũng như những ứng dụng của RNN trong các bài tốn thực tế.

Hình 2.2: Mạng RNN
RNN tạo ra các mạng vòng lặp bên trong chúng, cho phép thông tin
được lưu trữ lại cho các lần phân tích tiếp theo.
2.3.

Mạng long short-term memory.
Mạng bộ nhớ dài-ngắn (Long Short Term Memory networks), thường
được gọi là LSTM - là một dạng đặc biệt của RNN, nó có khả năng học được
các phụ thuộc xa. LSTM được giới thiệu bởi Hochreiter & Schmidhuber (1997),
và sau đó đã được cải tiến bởi rất nhiều người trong ngành. Chúng hoạt động cực
kì hiệu quả trên nhiều bài tốn khác nhau nên dần đã trở nên phổ biến như hiện
nay.
STM được thiết kế để tránh được vấn đề phụ thuộc xa (long-term
dependency). Việc nhớ thông tin trong suốt thời gian dài là đặc tính mặc định
của chúng, chứ ta khơng cần phải huấn luyện nó để có thể nhớ được. Tức là ngay
nội tại của nó đã có thể ghi nhớ được mà khơng cần bất kì can thiệp nào.
Mọi mạng hồi quy đều có dạng là một chuỗi các mô-đun lặp đi lặp lại
của mạng nơ-ron. Với mạng RNN chuẩn, các mơ-đun này có cấu trúc rất đơn
giản, thường là một tầng tanh.


15


Hình 2.3.1: Mơ-đun lặp lại trong RNN chuẩn chứa một lớp đơn.
LSTM cũng có kiến trúc dạng chuỗi như vậy, nhưng các mơ-đun trong
nó có cấu trúc khác với mạng RNN chuẩn. Thay vì chỉ có một tầng mạng nơron, chúng có tới 4 tầng tương tác với nhau một cách rất đặc biệt.

Hình 2.3.2: Mơ-đun lặp lại trong một LSTM chứa bốn lớp tương tác.

Các kí hiệu được sử dụng trong sơ đồ trên:

Ở sơ đồ trên, mỗi một đường mang một véc-tơ từ đầu ra của một nút tới
đầu vào của một nút khác. Các hình trong màu hồng biểu diễn các phép toán
như phép cộng véc-tơ chẳng hạn, cịn các ơ màu vàng được sử dụng để học
trong từng mạng nơ-ron. Các đường hợp nhau kí hiệu việc kết hợp, còn các
đường rẽ nhánh ám chỉ nội dung của nó được sao chép và chuyển tới các nơi
khác nhau.

16


Phần 3: Ứng dụng RNN cho bài toán sửa lỗi chính tả
3.1.
3.1.1.

Bài tốn sửa lỗi chính tả sử dụng RNN.
Mơ hình hóa ngơn ngữ:
Mục tiêu của ta là xây dựng một mơ hình ngơn ngữ sử dụng RNN.

Giả sử ta có một câu với m từ, thì một mơ hình ngơn ngữ cho phép ta dự đốn

được xác suất của một câu (trong tập dữ liệu) là:

Ở đây, xác suất của câu chính là tích xác suất của mỗi từ. Trong đó, xác
suất mỗi từ là xác suất với điều kiện là biết trước các từ trước nó. Ví dụ, xác
suất của câu: “Chú chim bay trên bầu trời” sẽ là xác suất của “trời” khi đã biết
“Chú chim bay trên bầu”, nhân với xác suất của “bầu” khi đã có “Chú chim
bay trên”, …
Tại sao cách tính này lại hữu dụng? Tại sao ta lại cần tính xác suất cho
câu?
Thứ nhất, một mơ hình như vậy có thể được sử dụng như một cơ chế
đánh giá. Ví dụ, một hệ thống dịch máy thường sinh ra nhiều khả năng cho
một câu đầu vào. Lúc này bạn có thể sử dụng mơ hình ngơn ngữ để chọn ra
khả năng có xác suất cao nhất. Một cách trừu tượng, câu có xác suất cao có
thể là câu đúng ngữ pháp. Cách đánh giá này cũng tương tự như với hệ thống
nhận dạng giọng nói.
Nhưng việc giải quyết bài tốn mơ hình hố ngơn ngữ cũng có những
điều rất tuyệt vời. Vì ta có thể dự đốn được xác suất của một từ khi đã biết
17


các từ trước đó, nên ta có thể làm được hệ thống tự động sinh văn bản. Mơ
hình như vậy được gọi là “mơ hình sinh” (generative model). Ta lấy một vài
từ của một câu rồi chọn dần ra từng câu một từ xác suất dự đoán được cho tới
khi ta có một câu hồn thiện. Cứ lặp lại như vậy ta sẽ có được một văn bản tự
sinh. Mơ hình này huấn luyện với
các kí tự đơn thay vì cả một từ hồn chỉnh và có thể sinh ra được rất nhiều thứ
từ Shakespeare cho tới Linux Code.
Lưu ý rằng các công thức xác suất ở trên của mỗi từ là xác suất có điều
kiện là biết trước tất cả các từ trước nó. Trong thực tế, bởi khả năng tính tốn
và bộ nhớ của máy tính có hạn, nên với nhiều mơ hình ta khó có thể biểu diễn

được những phụ thuộc xa (long-term dependences). Vì vậy mà ta chỉ xem
được một vài từ trước đó thơi. Về mặt lý thuyết, RNN có thể xử lý được cả
các phụ thuộc xa của các câu dài, nhưng trên thực tế nó lại khá phức tạp.
Nền tảng của việc xây dựng mơ hình chuỗi tuần tự (ví dụ, mơ hình dịch máy)
là mơ hình ngơn ngữ. Ở mức cao, một mơ hình ngơn ngữ đón nhận chuỗi các
phần tử đầu vào, nhìn vào từng phần tử của chuỗi và cố gắng để dự đoán các
phần tử tiếp theo của chuỗi văn bản. Có thể mơ tả q trình này bằng
phương trình hàm số sau đây: Yt = f (Yt-1) Trong đó, Y(t) là phần tử chuỗi ở
thời điểm t, Y(t-1) là phần tử chuỗi ở thời điểm trước đó (t – 1), và f là hàm
ánh xạ các phần tử trước đó của chuỗi sang phần tử tiếp theo của chuỗi. Bởi
vì chúng ta đang đề cập đến mơ hình chuỗi sử dụng mạng nơ-ron, f đại diện
cho mạng nơ-ron mà có thể dự đốn được phần tử tiếp theo của một chuỗi,
được cho trước bởi một phần tử hiện tại trong chuỗi đó. Khơng giống với các
mơ hình ngơn ngữ đơn giản là chỉ dự đoán xác suất cho từ tiếp theo khi được
cho bởi từ hiện tại, mô hình RNN chụp lại tồn bộ bối cảnh của chuỗi đầu
vào. Do đó, RNN dự đốn xác suất tạo ra các từ tiếp theo dựa trên các từ hiện
tại, cũng như tất cả các từ trước.
18


3.1.1.1.
Tạo bộ dữ liệu.
Để huấn luyện mơ hình ngơn ngữ, ta cần dữ liệu là văn bản để làm dữ liệu
huấn học. May mắn là ta không cần dán nhãn cho các mơ hình ngơn ngữ mà
chỉ cần tập văn bản thô là đủ. Cũng như hầu hết các dự án học máy khác, đầu
tiên cần phải tiền xử lý dữ liệu thô cho đúng định dạng đầu vào.
3.1.1.2.
Các bước tiền xử lý.
3.1.1.2.1.
Phân rã dữ liệu thơ.

Ta có dữ liệu văn bản thơ, nhưng ta lại muốn dự đốn từng từ sai chính tả
một, nên ta cần phải phân rã dữ liệu ra thành từng từ riêng biệt. Đầu tiên ta sẽ
phân ra thành từng câu một, sau đó lại phân câu thành từng từ riêng biệt, hoặc
mức độ nhỏ hơn là từng ký tự. Ta có thể chia các bình luận bằng dấu cách,
nhưng cách đó khơng giúp ta phân tách được các dấu chấm câu. Ví dụ: “Trời
đẹp!” cần phải chia thành 3 phần: “Trời”, “đẹp”, “!”. Để đỡ phải vất vả, ta
sẽ sử dụng NLTK với hàm word_tokenize và sent_tokenize để phân tách dữ
liệu.
3.1.1.2.2.
Bỏ các từ ít gặp.
Trong hầu hết các văn bản có những từ chỉ xuất hiện 1 hoặc 2 lần, những từ
không xuất hiện thường xun như thế này ta hồn tồn có thể loại bỏ. Càng
nhiều từ thì mơ hình của ta học càng chậm, và chúng ta khơng có nhiều ví dụ
sử dụng những từ đó nên khơng thể nào mà học cách sử dụng chúng sao cho
chính xác được. Việc này cũng khá giống với cách con người học. Để hiểu
cách sử dụng một từ chuẩn xác, bạn cần phải xem xét nó ở nhiều ngữ cảnh
khác nhau.
Ta sẽ giới hạn lượng từ vựng phổ biến của ta bằng biến vocab_size. Những
từ ít gặp khơng nằm trong danh sách các từ phổ biến, ta sẽ thay thế nó bằng
UNK. Ví dụ, nếu danh sách vựng của ta khơng có từ “Chú” thì câu “Chú
chim bay trên bầu trời” sẽ được chuyển hoá thành “UNK chim bay trên bầu
trời”. Ta sẽ coi UNK cũng là 1 phần của danh sách từ vựng và cũng sẽ dự
19


đốn nó như các từ khác. Khi một từ mới được sinh ra, ta có thể thay thế
UNK lại bằng cách lấy ngẫu nhiên một từ nào đó khơng nằm trong danh sách
từ vựng của ta, hoặc ta có thể tạo ra một trong các từ cho tới khi từ được sinh
ra nằm trong danh sách từ của ta.
3.1.1.2.3.

Thêm ký tự đầu, cuối.
Ta cũng muốn xem từ nào là từ bắt đầu và từ nào là từ kết thúc của một
câu. Để làm được chuyện đó, ta cần phải thêm vào 2 kí tự đặc biệt cho mỗi
câu là:
<GO> liền trước câu và <EOS> liền sau câu. Nó sẽ cho phép ta đặt câu hỏi là:
Giờ ta có một từ là <GO>, thì từ tiếp theo của ta sẽ là gì? Từ tiếp theo chính là
từ đầu tiên của câu.
3.1.1.2.4.
Ma trận hóa dữ liệu.
Đầu vào của RNN là các vec-tơ chứ không phải là các chuỗi. Nên ta cần
chuyển đổi giữa các từ và địa chỉ tương ứng với int_to_vocab và
vocab_to_int. Ví dụ cho câu “Chú chim bay trên bầu trời” từ “Chú” ở vị trí
201 trong danh sách từ vựng thì địa chỉ của nó sẽ là 201. Như vậy tập dữ liệu
của ta sẽ có dạng: [0, 201, 179, 314, 416, 100, 50], trong đó 0 tương ứng với
<GO>. Cịn các nhãn (dự đốn) y sẽ là [201, 179, 341, 416, 100, 50, 1], trong
đó 1 tương ứng với <EOS>. Vì mục tiêu của ta là dự đốn các từ tiếp theo,
nên y đơn giản là dịch một vị trí so với x, và kết câu là <EOS>. Nói cách
khác, với dự đốn chuẩn xác cho từ 179 sẽ là 314.
3.1.1.3.
Huấn luyện mơ hình.
3.1.1.3.1.
Khởi tạo.
Ta sẽ bắt đầu bằng việc khởi tạo các tham số của mạng trong lớp RNN. Khởi
tạo các tham số có chút ràng buộc là khơng thể để chúng bằng 0 ngay được. Vì
như vậy sẽ làm cho mạng của ta không thể học được. Ta phải khởi tạo chúng một
cách ngẫu nhiên. Hiện nay đã có nhiều nghiên cứu chỉ ra việc khởi tạo tham số có
ảnh hưởng tới kết quả huấn luyện ra sao. Việc khởi tạo còn phụ thuộc vào hàm kích
hoạt (activation function) của ta là gì nữa. Trong trường hợp của ta là hàm
tanh, nên giá trị khởi tạo được khuyến khích nằm trong khoảng [ 1 , 1 ]. Trong √�
√�

đó, n là lượng kết nối tới từ tầng mạng trước. Nhìn nó có vẻ phức tạp, nhưng đừng
lo lắng nhiều về nó. Chỉ cần bạn khởi tạo các tham số của mình ngẫu nhiên đủ nhỏ
thì thường mạng của ta sẽ hoạt động tốt.
20


3.1.1.3.2.
Lan truyền tiến.
Tiếp theo, ta sẽ cài đặt hàm lan truyền tiến (forward propagation) để thực hiện
việc tính xác xuất của từ.
Ở đây, ta không chỉ trả ra kết quả tính tốn được mà cịn trả ra cả trạng thái
ẩn, để phục vụ cho việc tính đạo hàm, việc này tránh cho ta phải tính lại lần
nữa khi tính đạo hàm. Mỗi ot là một véc-tơ xác suất của mỗi từ trong danh
sách từ vựng của ta, nhưng đôi lúc ta chỉ cần lấy từ có xác suất cao nhất.
3.1.1.3.3.

Tính lỗi.

Để huấn luyện mạng, ta cần phải đánh giá được lỗi cho từng tham số.
Và mục tiêu của ta là tìm các tham số U, V, W để tối thiểu hàm lỗi (loss
function) L của ta trong quá trình huấn luyện. Một trong số các hàm đánh giá
lỗi thường được sử dụng là cross-entropy. Nếu ta có N mẫu huấn luyện (số từ
trong văn bản) và C lớp (số từ vựng) thì lỗi tương ứng với dự đốn o và nhãn
chuẩn y sẽ là:

Cơng thức trên trơng có vẻ hơi phức tạp chút, nhưng tất cả những gì
làm là cộng tổng sự khác biệt của từng dự đoán của ta so với thực tế (hay còn
gọi là lỗi). Nếu y (các từ đúng) và o (các từ dự đoán) càng khác biệt thì lỗi
của ta càng lớn.
3.1.1.3.4.


Huấn luyện.

Nhớ lại rằng, ta cần tìm các tham số U, V, W sao cho tổng lỗi của ta là
nhỏ nhất với tập dữ liệu huấn luyện. Cách phổ biến nhất là sử dụng SGD
(Stochastic Gradient Descent - trượt đồi). Ý tưởng đằng sau SGD khá đơn
giản. Ta sẽ lặp đi lặp lại suốt tập dữ liệu của ta và tại mỗi bước lặp ta sẽ thay
đổi tham số của ta sao cho tổng lỗi có thể giảm đi. Hướng của việc cập nhập
21


tham số được tính dựa vào đạo hàm của hàm lỗi:

Để thực hiện SGD, ta cần phải có độ học (learning
rate) để xác định các mức độ thay đổi tham số của ta ở mỗi bước lặp. SGD
không chỉ là phương thức tối ưu phổ biến nhất trong mạng nơ-ron mà còn
trong nhiều giải thuật học máy khác nữa. Cho tới thời điểm này, ta có rất
nhiều các nghiên cứu làm sao để tối ưu SGD bằng cách sử dụng các lơ dữ
liệu, bằng cách song song hố và thay đổi tham số học trong q trình huấn
luyện. Thậm chí với nhiều ý tưởng đơn giản để thực hiện SGD một cách hiệu
quả cũng khiến nó trở lên rất phức tạp để cài đặt.
Làm sao ta có thể tính được đạo hàm như ta vừa đề cập phía trên?
Trong các mạng nơ-ron truyền thống, ta sẽ làm việc đó bằng giải thuật lan
truyền ngược (backpropagation algorithm). Nhưng với mạng RNN, ta sử dụng
phiên bản hơi khác của giải thuật này là lan truyền ngược liên hồi - BPTT
(Backpropagation Through Time). Vì các tham số được chia sẻ chung trong
suốt các bước trong mạng, nên đạo hàm tại mỗi đầu ra phụ thuộc khơng chỉ
vào kết quả tính hiện tại mà cịn phụ thuộc vào các các tính tốn ở bước
trước. BPTT nhận tham số đầu vào là tập mẫu huấn
luyện (x, y) và trả ra đạo hàm:

3.1.1.4.

Sinh từ gợi ý.
Sau khi huấn luyện mạng ta được các tham số của mơ hình RNN.

Giờ ta có thể nhờ nó sinh ra các từ gợi ý khi biết các từ trước nó.
3.2.

Áp dụng LSTM trong bài tốn sửa lỗi chính tả tiếng Việt.
22


Mặc dù mạng RNN có thể giải quyết được bài tốn sửa lỗi chính
tả, tuy nhiên như đã phân tích trong chương 2, mạng RNN gặp phải những
vấn đề về phụ thuộc xa và mất mát đạo hàm. Nên khi khoảng cách giữa các từ
đến từ dự đoán càng lớn thì RNN bắt đầu khơng thể nhớ và học được.
Do đó, mạng LSTM sẽ được sử dụng để giải quyết bài toán. Tuy nhiên,
ta cũng nhận thấy rằng để sửa lỗi chính tả cho câu:

“Tối qua di chơi ở Hạ
Long” t (0) 1 2 3 4 5 6
Thì việc sửa lỗi chính tả cho từ thứ 2 (thực chất là việc dự đốn xem từ
ở vị trí thứ 2 là từ gì). Việc dự đốn này khơng chỉ phụ thuộc vào những từ
phía trước nó mà những từ ở phía sau cũng rất quan trọng. Do đó ta sẽ sử
dụng mạng LSTM 2 chiều (Bidirectional) cho bài toán để giải quyết vấn đề
trên.

Hình 3.1. Bidirectional LSTM
Tuy vậy, mặc dù đầu vào của LSTM, RNN có thể là sequence nhưng
23



output bản chất không phải là sequence. Việc sửa lỗi chính tả chính xác là
việc lặp đi lặp lại dự đốn t + 1. Vậy nếu từ trước đó sai, như vậy việc dự
đoán những từ tiếp theo cũng sẽ bị sai. Do đó ta cần thêm các kỹ thuật khác
để bổ sung giải quyết vấn đề này.
Và sự ra đời của mơ hình sequence-to-sequence (seq2seq) cùng với kỹ
thuật attention sẽ làm tăng độ chính xác cho bài tốn sửa lỗi chính tả.
3.2.1.

Mơ hình seq2seq (LSTM Encoder - Decoder) và kỹ thuật attention.

Mơ hình seq2seq được xây dựng dựa trên hai mạng neural truy hồi
(Recurrent Neural Network) đóng vai trị là các bộ mã hóa, giải mã để sinh ra
chuỗi đầu ra t1:m từ một chuỗi đầu vào x 1: n. Mạng neural encoder mã hóa chuỗi
đầu vào thành một vector c có độ dài cố định. Mạng neural decoder sẽ lần lượt
sinh từng từ trong chuỗi đầu ra dựa trên vector c và những từ được dự đốn
trước đó cho tới khi gặp từ kết thúc câu. Trong mô hình seq2seq, chúng ta có
thể sử dụng các kiến trúc mạng khác nhau cho thành phần encoder và
decoder như RNN hay mạng neural convolutional. Trong bài viết này, ta sẽ
tập trung vào mơ hình seq2seq sử dụng mạng RNN.

Hình 3.2. Ví dụ về mơ hình seq2seq
Về mặt tốn học, mơ hình seq2seq được mơ tả như sau:
Trước hết, thành phần RNN encoder sinh ra vector c với độ dài cố định từ một
24


chuỗi các vector đầu vào: c=RNNenc (x1: n). Sau đó, thành phần RNN decoder sẽ sinh
lần lượt từng từ cho chuỗi đầu ra theo mơ hình sinh có điều kiện (conditional

generation).
P (tj+1=k|t^1:

,

j

c)

=

f(0(sj+1)) sj+1=R (sj, [t^j;
c])
t^j ~ p (tj|t^1: j−1, c)
Ở đây, tj là bước thời gian thứ j trong chuỗi output. t^ j là giá trị dự đoán tại
bước thứ j và sj là các trạng thái ẩn.
Mơ hình seq2seq cơ bản có nhược điểm là yêu cầu RNN decoder sử dụng
tồn bộ thơng tin mã hóa từ chuỗi đầu vào cho dù chuỗi đó dài hay ngắn. Thứ
hai, RNN encoder cần phải mã hóa chuỗi đầu vào thành một vec-tơ duy
nhất và có độ dài cố định. Ràng buộc này khơng thực sự hiệu quả vì trong
thực tế, việc sinh ra từ tại một bước thời gian trong chuỗi đầu ra có khi phụ
thuộc nhiều hơn vào một số những thành phần nhất định trong chuỗi đầu vào.
Ví dụ, khi dịch một câu từ tiếng nước này sang tiếng nước khác, chúng ta
thường quan tâm nhiều hơn đến ngữ cảnh xung quanh từ hiện tại so với các từ
khác trong câu. Kỹ thuật attention được đưa ra để giải quyết vấn đề đó.
Kỹ thuật attention được đưa ra lần đầu vào năm 2014 bới Bahdanau và cộng
sự trong công trình nghiên cứu về dịch máy. Ở mức trừu tượng, kỹ thuật
attention nới lỏng điều kiện rằng toàn bộ chuỗi đầu vào được mã hóa bằng
một vector duy nhất. Thay vào đó các từ trong chuỗi đầu vào sẽ được RNN
encoder mã hóa thành một dãy các vector. Sau đó RNN decoder áp dụng kỹ

thuật attention mềm dẻo (soft attention) bằng cách lấy tổng có trọng số của
dãy các vector mã hóa. Các trọng số trong mơ hình này được tính bằng một
25


×