hiện một đề tài còn khá mới và thú vị, mang tính ứng dụng vào đời sống là: Ứng Dụng Hệ Thống Học Sâu Tự Động Thêm Dấu Cho Tiếng Việt với các công nghệ mới đi đầu trong deep learning tro
Trang 1ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
HUỲNH DƯƠNG KHANG
XÂY DỰNG HỆ THỐNG HỌC SÂU TỰ ĐỘNG THÊM
DẤU CHO TIẾNG VIỆT
Chuyên Ngành: Khoa Học Máy Tính
Mã số: 60480101
LUẬN VĂN THẠC SĨ
TP HCM, ngày 24 tháng 08 năm 2020
Trang 2CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA – ĐHQG -HCM
Cán bộ hướng dẫn khoa học: PGS.TS Quản Thành Thơ
Cán bộ chấm nhận xét 1: TS Lê Thanh Vân
Cán bộ chấm nhận xét 2: PGS.TS Lê Anh Cường
Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày
24 tháng 08 năm 2020
Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm:
1 Chủ tịch: PGS TS Dương Tuấn Anh
2 Thư ký: TS Võ Thị Ngọc Châu
3 Phản biện 1: TS Lê Thanh Vân
4 Phản biện 2: PGS TS Lê Anh Cường
5 Ủy viên: TS Lê Thị Ngọc Thơ
Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có)
………
………
………
………
CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA…………
Trang 3ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC BÁCH KHOA
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: HUỲNH DƯƠNG KHANG MSHV: 1770476
Ngày, tháng, năm sinh: 25/12/1993 Nơi sinh: Tiền Giang
Chuyên ngành: Khoa học máy tính Mã số : 60480101
I TÊN ĐỀ TÀI: XÂY DỰNG HỆ THỐNG HỌC SÂU TỰ ĐỘNG THÊM DẤU CHO
TIẾNG VIỆT
II NHIỆM VỤ VÀ NỘI DUNG: Ứng dụng các phương pháp trong học sâu xây dựng và
phát triển hệ thống tự động thêm dấu cho Tiếng Việt
III NGÀY GIAO NHIỆM VỤ : 10/02/2020
IV NGÀY HOÀN THÀNH NHIỆM VỤ: 21/06/2020
V CÁN BỘ HƯỚNG DẪN : PGS TS QUẢN THÀNH THƠ
Trang 4LỜI CÁM ƠN
Trên thực tế, không có sự thành công nào mà không gắn liền với những sự hỗ trợ, giúp đỡ và hướng dẫn dù ít hay nhiều, trực tiếp hay gián tiếp từ những người xung quanh Có câu nói rằng: “Chúng ta hãy nhớ rằng một đứa trẻ, một giáo viên, một quyển sách và một cái bút có thể thay đổi cả thế giới” – Malala Yousafzai Nhờ
sự hướng dẫn và hỗ trợ, cung cấp kiến thức từ những người thầy bất cứ một đứa trẻ nào cũng có thể thay đổi thế giới Trong suốt thời gian từ khi bắt đầu học tập tại giảng đường Bách Khoa đến nay, tôi đã nhận được rất nhiều sự quan tâm, giúp đỡ của quý Thầy Cô, gia đình, bạn bè
Với lòng biết ơn sâu sắc nhất, tôi xin gửi đến quý Thầy Cô ở Khoa Khoa Học Máy Tính – Trường Đại Học Bách Khoa TP.HCM đã cùng với tri thức và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho những học viên cao học trong suốt thời gian học tập và nghiên cứu Đặc biệt hơn, là khoảng thời gian thực hiện luận văn này Thầy hướng dẫn đã dành rất nhiều thời gian và sự quan tâm cho tôi
Em xin gửi lời cám ơn đặc biệt đến Thầy Quản Thành Thơ đã tận tâm hướng dẫn các kiến thức, cùng những buổi thảo luận các phương pháp, tư duy để hoàn thành khóa luận này Nếu không nhận được sự tận tâm từ Thầy, thì đề tài này khó mà hoàn thành tốt được Một lần nữa em xin chân thành cám ơn Thầy
Luận văn này được thực hiện trong khoảng thời gian bốn tháng Với kiến thức bản thân cùng với khả năng nghiên cứu khoa học hạn chế nên còn khá nhiều công việc chưa hoàn thiện Do vậy, không tránh khỏi những điều thiếu sót nên tôi rất mong nhận được những ý kiến đóng góp từ quý Thầy Cô và các bạn để có thể hoàn thiện kiến thức hơn
Một lần nữa tôi xin chân thành cảm ơn vì đã dành thời gian cho Luận Văn này!!!
Tp Hồ Chí Minh, ngày 03 tháng 8 năm 2020
Sinh viên thực hiện
Huỳnh Dương Khang
Trang 10MỤC LỤC
Mở đầu 1
1.1 Lý do chọn đề tài 1
1.1.1 Giới thiệu sơ lược 1
1.1.2 Lý do chọn đề tài 2
1.2 Mục tiêu, đối tượng và phạm vi nghiên cứu 2
1.2.1 Mục tiêu 2
1.2.2 Đối tượng 3
1.2.3 Phạm vi nghiên cứu 4
1.3 Ý nghĩa khoa học và thực tiễn của đề tài cần nghiên cứu 4
1.3.1 Ý nghĩa khoa học của đề tài 4
1.3.2 Ý nghĩa thực tiễn 4
Tổng quan 6
2.1.1 Các công trình liên quan 6
2.1.2 Vấn đề chung còn tồn tại 7
2.1.3 Hướng giải quyết 7
Cơ sở lý thuyết và nghiên cứu thực nghiệm 9
3.1 Cơ sở lý thuyết 9
3.1.1 Machine Translation 9
3.1.2 Mạng nơ-ron hồi quy – RNN 10
3.1.3 Mô hình hóa ngôn ngữ - Language Model 17
3.1.4 Beam search – Thuật toán tìm kiếm theo chùm tia 21
3.1.5 Cây tìm kiếm Trie 24
3.2 Phương pháp nghiên cứu 26
3.2.1 Phương pháp thu thập dữ liệu 26
3.2.2 Phương pháp xử lý tiếng Việt 27
Trang 113.2.3 Phương pháp xây dựng mô hình học sâu 27
3.2.4 Các phương pháp nghiên cứu khoa học 28
3.2.5 Đánh giá kết quả 28
Trình bày, đánh giá, bàn luận kết quả 30
4.1 Hiện thực đề tài 30
4.1.1 Mô hình của bài toán 30
4.1.2 Giải thích chi tiết mô hình 32
4.1.3 Trình bày kết quả 45
Kết luận và kiến nghị hướng mở rộng đề tài 52
5.1 Kết luận 52
5.2 Hướng mở rộng đề tài 52
Danh mục tài liệu tham khảo 54
Phụ lục 57
Trang 12
DANH MỤC HÌNH ẢNH
Hình 3-1 Mô hình mô phỏng mạng neural network - Nguồn:
https://noron.vn/post/gioi-thieu-ve-mang-neural-hoi-quy -recurrent-neur-40wwa1jsk2si 10
Hình 3-2 Mô hình RNN dàn trải ra - Nguồn:
https://noron.vn/post/gioi-thieu-ve-mang-neural-hoi-quy -recurrent-neur-40wwa1jsk2si 11
Hình 3-3 Đầu vào được tô màu đỏ, mạng RNN màu xanh, đầu ra màu xanh dương - Nguồn: Andrej Karpathy 11
Hình 3-4 Ứng dụng RNN cho bài toán dịch máy - Nguồn: http://cs224d.stanford.edu/lectures/CS224d-Lecture8.pdf 14
Hình 3-5 Ứng dụng RNN tạo tiêu đề cho ảnh Source: http://cs.stanford.edu/people/karpathy/deepimagesent/ 14
Hình 3-6 Mô hình chuẩn RNN 1 lớp Nguồn: Internet 16
Hình 3-7 Mô hình bên trong LSTM Nguồn: Internet 16
Hình 3-8 Mô hình ngram language models - nguồn: https://ongxuanhong.wordpress.com/2016/08/27/language-modeling-la-gi/ 18
Hình 3-9 Ví dụ minh họa mô hình trigram Markov LM Nguồn: https://ongxuanhong.wordpress.com/2016/08/27/language-modeling-la-gi/ 19
Hình 3-10 Cây ngữ pháp của câu "The dogs chasing the cat bark." - Nguồn: http://people.ee.ethz.ch/~spr/publications/Beutler:07_diss.pdf 21
Hình 3-11 Minh họa cho Beam search Nguồn: https://nerophung.github.io/2019/06/02/nlp-p4 22
Hình 3-12 Thuật toán Beamsearch – Nguồn Andrew Ng 23
Hình 3-13 Mô hình vẽ tay thuật toán Beamsearch - Nguồn: Andew Ng 23
Hình 3-14 Cấu trúc dữ liệu Trie Nguồn: https://github.com/umbertogriffo/Trie 25
Hình 4-1 Mô hình hiện thực bài toán 30
Hình 4-2 Mô hình processing 33
Hình 4-3 Bộ ký tự từ điển cho quá trình huấn luyện 34
Hình 4-4 Mô hình LSTM dùng training Language Model 37
Hình 4-5 Bidiectional LSTM = LSTM chạy tới + LSTM chạy lùi 37
Hình 4-6 Mô hình cho khối dự đoán 38
Hình 4-7 Mô hình áp dụng thuật toán tham lam sau khi decode 42
Hình 4-8 Mô hình áp dụng TrieSearch và Levenhstein distance 43
Hình 4-9 Kết quả của Greedy decode 45
Hình 4-10 Kết quả Beamsearch 46
Hình 4-11 Biểu đồ đánh giả thang điểm BLEU trên số từ văn bản dùng bộ decode bằng thuật toán tham lam 48
Hình 4-12 Biểu đồ đánh giả thang điểm BLEU trên số từ văn bản dùng bộ decode bằng thuật toán tím kiếm Beam 49
Hình 4-13 So sánh về độ chính xác (theo thang điểm BLEU) của 2 bộ giải mã 50
Trang 13MỞ ĐẦU 1.1 Lý do chọn đề tài
1.1.1 Giới thiệu sơ lược
Ngày nay, trí thông minh nhân tạo là một lĩnh vực phát triển rất mạnh với nhiều ứng dụng thực tế và các chủ đề nghiên cứu rất tích cực Con người ngày nay tìm kiếm các phần mềm thông minh để tự động hóa lao động, hiểu được âm thanh hay hình ảnh, chuẩn đoán y học và có thể hỗ trợ nghiên cứu khoa học cơ bản AI - Artificial Intelligence (Trí Tuệ Nhân Tạo), và cụ thể hơn là Machine Learning (Học Máy hoặc Máy Học) nổi lên như một bằng chứng của cuộc cách mạng công nghiệp lần thứ tư (1 - động cơ hơi nước, 2 - năng lượng điện, 3 - công nghệ thông tin) Trí Tuệ Nhân Tạo đang len lỏi vào mọi lĩnh vực trong đời sống mà có thể chúng ta không nhận ra Xe tự hành của Google và Tesla, hệ thống tự tag khuôn mặt trong ảnh của Facebook, trợ lý ảo Siri của Apple, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim của Netflix, máy chơi cờ vây AlphaGo của Google DeepMind, …, chỉ là một vài trong vô vàn những ứng dụng của AI/Machine Learning [1]
Thuật ngữ trí tuệ nhân tạo có thể được hiểu là trí tuệ được biểu diễn bởi bất cứ một hệ thống nhân tạo nào, do con người lập trình tạo nên với mục tiêu giúp máy tính
có thể tự động hóa các hành vi thông minh như con người Artificial Intelligence (AI) được hiểu là bản sao trí thông minh của con người trong máy tính Khi nghiên cứu về
AI lần đầu được bắt đầu, các nhà nghiên cứu đã thử tái tạo trí thông minh con người cho một vài việc cụ thể - như là chơi game Họ đã giới thiệu một lượng lớn các quy tắc mà máy tính cần phải tuân theo Máy tính phải có một danh sách cụ thể các hành động khả thi và quyết định đưa ra từng hành động dựa vào các quy tắc này [2] Machine Learning, theo Wikipedia, được hiểu là một ngành học thuộc khoa học của máy tính, giúp máy tính có khả năng tự học mà không phải lập trình một cách rõ ràng
Những năm gần đây, khi mà khả năng tính toán của các máy tính được nâng lên một tầm cao mới và lượng dữ liệu khổng lồ được thu thập bởi các hãng công nghệ lớn, Machine Learning đã tiến thêm một bước dài và một lĩnh vực mới được ra đời gọi là Deep Learning Deep Learning đã giúp máy tính thực thi những việc tưởng chừng như không thể vào 10 năm trước: phân loại cả ngàn vật thể khác nhau trong các bức ảnh, tự tạo chú thích cho ảnh, bắt chước giọng nói và chữ viết của con người, giao tiếp với con người, hay thậm chí cả sáng tác văn hay âm nhạc [2] Sự thành công của Deep Learning trong hầu như mọi lĩnh vực là không thể phủ nhận, bên cạnh
Trang 14những thành tựu to lớn về xử lý ảnh, xử lý âm thanh, xử lý tiếng nói thì xử lý ngôn ngữ tự nhiên (NLP) cũng đang là một trong những lĩnh vực gặt hái được rất nhiều thành công
hiện một đề tài còn khá mới và thú vị, mang tính ứng dụng vào đời sống là: Ứng Dụng Hệ Thống Học Sâu Tự Động Thêm Dấu Cho Tiếng Việt với các công nghệ
mới đi đầu trong deep learning trong một vài năm gần đây như thư viện keras của tensorflow, mô hình neural network, ứng dụng beam_search, …
1.2 Mục tiêu, đối tượng và phạm vi nghiên cứu
1.2.1 Mục tiêu
Mục tiêu nghiên cứu của đề tài này là áp dụng các kỹ thuật tiên tiến, mới nhất của Xử Lý Ngôn Ngữ Tự Nhiên (NLP) vào Tiếng Việt để chuyển đổi từ một câu nhập vào không dấu có thể trả về một câu có dấu, có ý nghĩa và sát với suy nghĩ của tác giả nhất có thể Hướng tiếp cận tôi muốn thực hiện ở đây là sử dụng một mô hình dịch máy (Machine Translation) với ngôn ngữ nguồn là Tiếng-Việt-không-dấu và ngôn ngữ đích là Tiếng-Việt-có-dấu kết hợp các kỹ thuật mới của Deep Learning:
Ví dụ: input: hom nay toi di hoc => output: hôm nay tôi đi học
Việc tạo ra được kết quả sau ứng dụng có thể dùng cho các nghiên cứu khác như dự đoán tự hoàn thành tìm kiếm (như công cụ của google), sửa lỗi chính tả (điển hình ở đây là các lỗi liên quan đến dấu câu), Ngoài ra, qua việc vận dụng, tiếp cận theo nhiều phương pháp khác nhau giúp cho sau việc hoàn thành để tài này có thể giới thiệu một cách chi tiết hơn về các công nghệ mới trong Deep Learning hiện nay,
Trang 15phương pháp training model language có thể sinh ra model dùng để áp dụng thêm cho một vài bài toán hay nghiên cứu liên quan
Mục tiêu:
o Hoàn thành đề tài trong khoảng thời gian kế hoạch
o Nắm rõ được kiến thức trong đề tài và trình bày chi tiết, dễ hiểu
o Có sản phẩm demo và có kết quả
o Đánh giá được đề tài về mức độ hoàn thiện và kết quả khoa học
o Trình bày được hướng mở rộng đề tài
1.2.2 Đối tượng
Đối tượng nghiên cứu của đề tài là ngôn ngữ Tiếng Việt, với sự đặc thù của ngôn ngữ gồm các ngữ điệu được tạo thành bởi các dấu câu và sự đa dạng về nghĩa cũng như từ vựng Với một từ ngữ hay một câu khi ta đặt vào dấu câu khác nhau có thể dẫn đến sai lệch rất lớn về ngữ nghĩa dẫn đến khó hiểu cho người đọc cũng như mất đi sự tinh tế hay trong sáng của ngôn ngữ Việt Nam
Ví dụ ở câu nói “Mua nuoc lon o mien tay co rat nhieu ca vi the nen am thuc
o cac vung nay rat phong phu va da dang”, khi ta đọc một câu không có dấu sẽ thấy
rất tối nghĩa và thậm chí không hiểu được ý nghĩa của câu này nhưng khi thêm dấu
vào ta có câu “Mùa nước lớn ở miền tây có rất nhiều cá vì thế nên ẩm thực ở các
vùng này rất phong phú và đa dạng” Một ví dụ khác mà dấu câu làm thay đổi nghĩa
hoàn toàn câu nói như ở câu “nha trang co bai bien rat dep” nếu thêm dấu câu “Nha
Trang có bãi biển rất đẹp” hay một cách khác là “Nhà Trắng có bãi biển rất đẹp”,
khi ta đọc hai câu trên và hiểu thì sẽ thấy nội dung của câu khác nhau và thông tin đưa vào sẽ khác biệt hoàn toàn Tuy nhiên, với những thông tin giao tiếp trong cuộc sống thông thường con người (hay đặc biệt là người Việt Nam) có thể dễ dàng biết
được là ở đây đang nói ý câu thứ nhất và từ đúng là “Nha Trang”, nhưng làm sao máy tính có thể hiểu được như chúng ta?
Các dấu của Tiếng Việt ở đây không chỉ nói về những thanh âm như “sắc, huyền, hỏi, ngã, nặng” mà ở đây còn nói về các ký tự đặc biệt chỉ có ở Tiếng Việt như “â, ă, ơ, ô, ư, ê, đ” và sự kết hợp có ý nghĩa giữ các từ với nhau chứ không đơn thuần là thêm dấu cho chúng
Trang 161.2.3 Phạm vi nghiên cứu
Phạm vi nghiên cứu của đề tài này tôi dùng phương pháp học máy trong đó quan tâm đến các khía cạnh là khả năng áp dụng các mạng nơ ron học sâu (deep neural network) vào bài toán này so với các giải thuật học máy căn bản khác như thế nào
Bên cạnh đó, bài toán cần rất nhiều dữ liệu huấn luyện cho máy tính và nguồn
dữ liệu chủ yếu lấy từ các trang web trên internet, các bài báo mạng, các trang du lịch,… nên các từ ngữ là những từ thường dùng, các câu thông dụng và xuất hiện trong cuộc sống thường nhật với ngôn ngữ là Tiếng Việt quốc ngữ và vì thế các từ ngữ mới của giới trẻ hiện nay, các từ ngữ địa phương hay dân tộc hiếm xuất hiện trong tập dữ liệu, hay các tên riêng, địa danh ít xuất hiện trong tập dữ liệu huấn luyện
có thể dẫn đến ảnh hướng đến kết quả dự đoán ít nhiều
1.3 Ý nghĩa khoa học và thực tiễn của đề tài cần nghiên cứu
1.3.1 Ý nghĩa khoa học của đề tài
Đề tài củng cố được kiến thức khoa học cho người nghiên cứu, giúp bổ sung
và hoàn thiện về kiến thức khoa học cho nghiên cứu về Xử Lý Ngôn Ngữ Tự Nhiên bằng phương pháp Học Sâu
Giúp người nghiên cứu có thể ứng dụng được các phương pháp nghiên cứu
“state of the art” – thịnh hành nhất – vào mô hình xử lý mà chưa có công bố khoa học nào, áp dụng các kiến thức khác nhau vào một mô hình để xử lý cho một ngôn ngữ
cụ thể mang tính ứng dụng vào đời sống
Bằng cách dùng Deep Learning để tạo ra mô hình dữ liệu, đề tài này có thể cung cấp được mô hình dữ liệu cho Tiếng Việt ở mức ký tự Mô hình này có thể được dùng lại cho các nghiên cứu liên quan về xử lý ngôn ngữ
1.3.2 Ý nghĩa thực tiễn
Với sự yêu thích và tôn trọng ngôn ngữ Tiếng Việt tôi chọn đề tài này với mong muốn góp phần ứng dụng được nhiều thành tựu khoa học mới vào xử lý cho ngôn ngữ mẹ đẻ đồng thời góp phần làm trong sáng Tiếng Việt tránh gây hiểu nhầm về dấu câu làm sai ngữ nghĩa
Có thể giúp phát triển các bộ phần mềm liên quan đến xử lý ngôn ngữ Tiếng Việt
Trang 17 Có thể ứng dụng được để xấy dựng bộ “tự hoàn thành tìm kiếm” hay “gợi ý tìm kiếm” cho hướng mở rộng của đề tài này
Trang 18TỔNG QUAN 2.1.1 Các công trình liên quan
Các nghiên cứu về dịch máy (machine translation) đã được nghiên cứu từ rất lâu trước đây và đạt được các thành tựu nhất định trong những năm gần đây bằng việc thay thế mô hình thống kê (Statistical Machine Translate) trước đây bằng các
mô hình dịch máy neural network [2] Về đề tài dịch máy có rất nhiều các công trình liên quan đến đề tài Tiếng Việt hiện tại như:
Neural Machine Translation: A Review – Trong bài báo này, truy nguyên
nguồn gốc của các kiến trúc NMT hiện đại với các từ và các câu embedding và các
ví dụ trước đây của chúng mạng bộ giải mã-giải mã Bài báo kết thúc với một cuộc khảo sát về các xu hướng gần đây trong lĩnh vực này [1]
Neural Machine Translation Between Vietnamese And English: An Empirical Study – Bài báo này nêu bật những nỗ lực của tác giả trong việc cải thiện
các bản dịch tiếng Anh-Việt theo hai hướng: (1) Xây dựng kho văn bản tiếng Việt - tiếng Anh mở lớn nhất cho đến nay và (2) Các thử nghiệm mở rộng với các mô hình neural mới nhất để đạt được điểm BLEU cao nhất Các thí nghiệm của chúng tôi cung cấp các ví dụ thực tế về việc sử dụng hiệu quả các mô hình dịch máy thần kinh khác nhau với các cặp ngôn ngữ tài nguyên thấp [5]
VnCoreNLP: A Vietnamese Natural Language Processing Toolkit: Bài báo
trình bày một bộ công cụ nhanh và dễ sử dụng, cụ thể là VnCoreNLP, một bộ xứ lý Java NLP cho tiếng Việt VnCoreNLP hỗ trợ các tác vụ xử lý ngôn ngữ tự nhiên (NLP) chính bao gồm phân đoạn từ, gắn thẻ lời nói (POS), nhận dạng thực thể có tên (NER) và phân tích cú pháp phụ thuộc và đạt được kết quả hiện đại (SOTA) cho các kết quả này nhiệm vụ [4]
Sentiment Analysis for Vietnamese: bài viết này giải quyết vấn đề phân tích
cảm xúc ở cấp độ câu và xây dựng một hệ thống dựa trên quy tắc bằng cách sử dụng khung Gate Kết quả thử nghiệm trên một loạt các đánh giá sản phẩm máy tính là rất hứa hẹn [3]
Bên cạnh đó còn khá nhiều công trình nhưng đề tài về áp dụng dịch máy để
xử lý thêm dấu câu tự động này theo cá nhân tôi nhận thấy có ứng dụng cao và chưa
có công bố khoa học nào
Trang 19Các bài toán trong cuộc thi AIVIVN-challenge 3 với đề bài thêm dấu cho Tiếng Việt: [6]- Bài thi yêu cầu thí sinh dùng mô hình trí tuệ nhân tạo xử lý và thêm dấu cho Tiếng Việt với tập câu đề bài được làm sạch dấu do ban tổ chức đưa ra
2.1.2 Vấn đề chung còn tồn tại
Ở các bài toán trên (ngoại trừ cuộc thi AIVIVN-challenge3) chưa trực tiếp đi vào nghiên cứu về thêm dấu cho Tiếng Việt Riêng ở dự án cuối cùng có nhiều tác giả đã đi vào nghiên cứu về đúng nội dung thêm dấu cho Tiếng Việt, nhưng theo các bài thi gửi về có đề cập đến là nằm trong phạm vi cuộc thi và độ hoàn thiện chưa đạt mức cao cùng với đó mô hình chưa được tối ưu và thử nghiệm với nhiều mô-đun bổ sung hơn Kết quả training và cuối cùng tập dữ liệu cũng bị overfitting với đề bài của Ban tổ chức
Nhược điểm:
Mô hình vẫn còn khá lớn trong khi tập dữ liệu và thời gian huấn luyện hạn chế, đo đạc tính chính xác chưa cao – chỉ gói gọn xử lý cho tập dữ liệu của cuộc thi
Mặc dù có độ chính xác tốt, nhưng mô hình của tác giả chạy rất chậm Tác giả chưa có đủ thời gian để thử nghiệm nhiều cấu hình khác nhau xem ảnh hưởng của nó tới độ chính xác như thế nào
Mô hình seq2seq của tác giả chưa được thử nhiều config khác nhau nên chưa biết phần nào đem lại hiệu quả lớn nhất, hoặc phần nào không thực sự có ích (decoder 2 chiều, teacher forcing, hay masked softmax?)
Code của tác giả có một số đoạn không được gọn và còn nhiều thiếu sót
2.1.3 Hướng giải quyết
Ở đề tài này, tôi sẽ giải quyết bài toán này theo phương pháp dùng Language Model kết hợp với bộ dịch máy LSTM để chuyển văn bản không dấu thành có dấu với câu có ý nghĩa xuất hiện phổ biến nhất dựa trên tập training Giải quyết được các vấn đề chung đưa ra về:
Dùng ít resource hơn (Đề tài được training trên Google Colab với resource khá hạn chế)
Tập data training ít hơn nhưng đa dạng và phong phú hơn và cho ra mô hình
có kết quả tương đương đến tốt hơn với thời gian training và resource ít hơn
Trang 20Thử nghiệm thêm các phương pháp khác nhau như GRU, LSTM hay BeamSearch để chọn ra phương pháp có kết quả cao hơn đồng thời đánh giá bằng công cụ khoa học khách quan rõ ràng
Thêm vào xử lý từ ngữ ở mức ký tự, đề tài này mở rộng hơn bằng cách kết hợp thêm bộ xử lý ở mức từ để cho ra kết quả tối ưu hơn, đồng thời nắm rõ thêm kiến thức và nghiên cứu về “Word-Level Neural Language Model”
Trang 21CƠ SỞ LÝ THUYẾT VÀ NGHIÊN CỨU THỰC NGHIỆM 3.1 Cơ sở lý thuyết
Qua quan sát và phân tích các ví dụ ở mục 1.2.2, tôi thấy rằng chúng ta có thể
dễ dàng dự đoán được câu “nha trang co bai bien rat dep” trên do kiến thức của con
người có thể biết rằng ở Nhà Trắng thì không có bãi biển, hay nói cách khác là chúng
ta ít nhắc về “bãi biển” khi nói đến “Nhà Trắng” nhưng lại dễ dàng thấy rằng từ “Nha
Trang” và “bãi biển” xuất hiện cùng nhau khá nhiều, hay hầu hết khi nói đến “Nha Trang” thì sẽ thấy có từ “bãi biển” xuất hiện Từ quan sát trên tôi quyết định dùng
các phương pháp deep learning, bằng cách huấn luyện máy học một lượng dữ liệu đủ lớn để phân biệt những từ hay xuất hiện cùng nhau và tăng độ chính xác của dự đoán lên, kết hợp với mô hình dịch máy được áp dụng các kỹ thuật mới là dùng neural network với mô hình ngôn ngữ để đưa ra dự đoán chính xác nhất
Trong đề tài “Ứng dụng hệ thống học sâu tự động thêm dấu cho Tiếng Việt”,
tôi tập trung nghiên cứu các vấn đề sau:
3.1.1 Machine Translation
Machine Translation: là nhiệm vụ dịch một câu x ở một ngôn ngữ (ngôn ngữ nguồn) thành một câu y ở một ngôn ngữ khác (ngôn ngữ đích) mà ý nghĩa của câu không đổi
Các hệ thống machine translation được bắt đầu nghiên cứu từ năm 1954 Trước đây, người ta giải quyết bài toán này dựa trên thống kê là chủ yếu, gọi là Statistical Machine Translation Vài năm trở lại đây, với sự phát triển vượt bậc của các kĩ thuật học máy, Neural Machine Translation được đưa vào nghiên cứu và có những cải thiện vược bậc cho các hệ thống dịch máy Đây là phương pháp dịch mà quá trình dịch được dựa trên 1 mạng neural duy nhất Kiến trúc này được gọi là sequence-to-sequence( seq2seq) do đầu vào và đâu ra đều là các sequence(khác với các bài toán phân loại, hồi quy thông thường) Các kiến trúc mạng thường được sử dụng là các kiến trúc mạng cho dữ liệu dạng time-series như RNN, LSTM, [1] …
Bài toán thêm dấu cho tiếng Việt được mình hiểu ở đây như một bài toán dịch máy kèm theo Language Model (cụ thể là dùng Markov model), công việc được thực hiện tương tự như việc dịch từ một ngôn ngữ nguồn sang một ngôn ngữ đích, điểm đặc biệt khá thú vị ở đây là cả hai ngôn ngữ nguồn và đích đều là Tiếng Việt, việc dịch từ Tiếng Việt sang Tiếng Việt cũng gây ra một số khó khăn đặc biệt nhất định
Trang 223.1.2 Mạng nơ-ron hồi quy – RNN
3.1.2.1 Mạng hồi quy là gì?
Mạng nơ-ron hồi quy (RNN - Recurrent Neural Network) là một thuật toán được chú ý rất nhiều trong thời gian gần đây bởi các kết quả tốt thu được trong lĩnh vực xử lý ngôn ngữ tự nhiên RNN ra đời với ý tưởng chính là sử dụng một bộ nhớ
để lưu lại thông tin từ từ những bước tính toán xử lý trước để dựa vào nó có thể đưa
ra dự đoán chính xác nhất cho bước dự đoán hiện tại Trong các mạng nơ-ron truyền thống tất cả các đầu vào và cả đầu ra là độc lập với nhau Tức là chúng không liên kết thành chuỗi với nhau Nhưng các mô hình này không phù hợp trong rất nhiều bài toán Ví dụ, nếu muốn đoán từ tiếp theo có thể xuất hiện trong một câu thì ta cũng cần biết các từ trước đó xuất hiện lần lượt thế nào? RNN được gọi là hồi quy (Recurrent) bởi lẽ chúng thực hiện cùng một tác vụ cho tất cả các phần tử của một chuỗi với đầu ra phụ thuộc vào cả các phép tính trước đó Nói cách khác, RNN có khả năng nhớ các thông tin được tính toán trước đó Trên lý thuyết, RNN có thể sử dụng được thông tin của một văn bản rất dài, tuy nhiên thực tế thì nó chỉ có thể nhớđược một vài bước trước đó (ta cùng bàn cụ thể vấn đề này ở phía sau) mà thôi
Về cơ bản một mạng RNN có dạng như sau:
Hình 3-1 Mô hình mô phỏng mạng neural network - Nguồn: mang-neural-hoi-quy -recurrent-neur-40wwa1jsk2si
https://noron.vn/post/gioi-thieu-ve-Trong hình trên, A là mạng neural hồi quy Nó nhận đầu vào xt, tiến hành xử
lý và cho ra đầu ra là ht Điểm đặc biệt của A là nó sẽ lưu lại giá trị của ht để sử dụng cho đầu tiếp theo Có thể thấy rằng mạng neural hồi quy này là một chuỗi mạng giống
Trang 23hệt nhau lặp đi lặp lại và mỗi mạng con sẽ truyền đi thông tin mà nó vừa xử lý cho
mạng phía sau nó Ta có thể tách vòng lặp ở A ra và vẽ lại để dễ hiểu kiến trúc của
RNN như sau:
Hình 3-2 Mô hình RNN dàn trải ra - Nguồn:
https://noron.vn/post/gioi-thieu-ve-mang-neural-hoi-quy -recurrent-neur-40wwa1jsk2si
Ta thấy rằng, chuỗi các ngõ vào x0, x1 , …, xt là những sự kiện, dữ liệu có dạng
chuỗi thời gian (time series) Các sự kiện này có mối liên hệ với nhau về thông tin
liên tiếp như tiếng nói hay văn bản, các thông tin của các sự kiện phía trước sẽ được
giữ lại để làm cơ sở một phần hoặc toàn bộ tính toán cho dữ liệu phía sau trong mạng
neural hồi quy Vì vậy, mô hình RNNs có ứng dụng quan trọng trong các bài toán xử
lý ngôn ngữ tự nhiên như: Dịch máy, phân loại ngữ nghĩa, Nhận diện giọng nói
Một trong các điểm mạnh của mạng neural hồi quy so với mạng ANN thông
thượng đó là khả năng tính toán trên một chuỗi vector Dưới đây là các kiểu hoạt
động của mạng RNN:
Theo hình vẽ trên, từ trái sang phải ta có các mô hình ứng dụng RNN:
Hình 3-3 Đầu vào được tô màu đỏ, mạng RNN màu xanh, đầu ra màu xanh dương - Nguồn: Andrej Karpathy
Trang 24 Mạng neural kiểu Vanilla: Đầu vào và đầu ra có kích thước cố định (Bài toán nhận diện ảnh - Image Classification)
Đầu ra có dạng chuỗi: Đầu vào cố định và đầu ra là một chuỗi các vector (Bài toán tạo tiêu đề cho ảnh - Image Captioning)
Đầu vào có dạng chuỗi: Đầu vào là một chuỗi vector và đầu ra cố định (Bài toán phân loại ngữ nghĩa - Sentiment Classification)
Đầu vào và đầu ra có dạng chuỗi: Bài toán Dịch máy - Neural Machine Translation
Đầu vào và đầu ra có dạng chuỗi đồng bộ: Đầu vào và đầu ra là một chuỗi vector có độ dài bằng nhau (Bài toán phân loại video và gắn nhãn từng frame - Video Classification)
Có thể nhận thấy rằng độ dài các chuỗi đầu vào hay đầu ra tại mỗi trường hợp không bắt buộc phải cố định vì kích thước vector trạng thái thông tin trao đổi trong mạng neural hồi quy là cố định Giờ chúng ta sẽ đi sâu hơn vào phương thức hoạt động của mạng neural hồi quy
Phương thức hoạt động
Mạng neural hồi quy nhận một vector đầu vào x và đưa ra vector đầu ra y Để
có thể lưu trữ được thông tin của các sự kiện trong quá khứ, mạng neural hồi quy lưu
trữ trong chính nó một vector trạng thái ẩn h Vector trạng thái này sẽ lưu trữ những
thông tin của những sự kiện đã được xử lý bằng cách cập nhật lại giá trị mỗi khi một
sự kiện mới được xử lý Ta có:
W_hh: Ma trận weights cho vector trạng thái ẩn
W_xh: Ma trận weights cho vector đầu vào x
W_hy: Ma trận weights dùng để tính vector đầu ra y
Với ht ta tính toán dựa vào ht-1, như vậy ta cần khởi tạo vector đầu vào (thông thường là một vector 0) Các mô hình RNN sử dụng các hàm phi tuyến như hàm kích
hoạt Ví dụ công thức với hàm kích hoạt tanh: ht = tanh(Whhht-1 + Wxhxt) [7]
Các ma trận trọng số được cập nhật trong quá trình huấn luyện và cập nhật ngược trở lại theo thuật toán back propagation để điều chỉnh hành vi của mạng neural hồi quy
Trang 253.1.2.2 Khả năng của RNN
Ở các bài toán máy dịch hiện đại áp dụng RNN vào cho thấy kết quả chính xác cao và chất lượng cải thiện đáng kể [8] Trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP - Natural Language Processing), đã ghi nhận được nhiều thành công của RNN cho nhiều vấn đề khác nhau Tại thời điểm này, tôi muốn đề cập tới một mô hình phổ biến nhất được sử dụng của RNN là LSTM LSTM (Long Short-Term Memory) thể hiện được sự ưu việt ở điểm có thể nhớ được nhiều bước hơn mô hình RNN truyền thống Nhưng vì LSTM về cơ bản giống với cấu trúc của RNN truyền thống, chúng chỉ khác nhau ở cách tính toán của các nút ẩn Chúng ta sẽ cùng xem chi tiết hơn về LSTM trong phần sau Chúng ta cùng nhau xem một vài ứng dụng của RNN trong
xử lý ngôn ngữ tự nhiên dưới đây:
a Mô hình hóa ngôn ngữ
Mô hình ngôn ngữ cho phép ta dự đoán được xác xuất của một từ nào đó xuất hiện sau một chuỗi các từ đi liền trước nó Do có khả năng ước lượng được độ tương
tự của các câu nên nó còn được ứng dụng cho việc dịch máy Một điểm lý thú của việc có thể dự đoán được từ tiếp theo là ta có thể xây dựng được một mô hình tự sinh
từ cho phép máy tính có thể tự tạo ra các văn bản mới từ tập mẫu và xác xuất đầu ra của mỗi từ Vậy nên, tùy thuộc vào mô hình ngôn ngữ mà ta có thể tạo ra được nhiều văn bản khác nhau Trong mô hình ngôn ngữ, đầu vào thường là một chuỗi các
từ (được mô tả bằng vec-tơ one-hot) và đầu ra là một chuỗi các từ dự đoán được Khi huấn luyện mạng, ta sẽ gán ot = xt+1 vì ta muốn đầu ra tại bước t chính là từ tiếp theo của câu Một số bài báo về mô hình hóa ngôn ngữ và sinh văn bản: [9] [10]
b Dịch máy
Dịch máy (Machine Translation) tương tự như mô hình hóa ngôn ngữ ở điểm
là đầu vào là một chuỗi các từ trong ngôn ngữ nguồn (ngôn ngữ cần dịch - ví dụ là tiếng Việt) Còn đầu ra sẽ là một chuỗi các từ trong ngôn ngữ đích (ngôn ngữ dịch -
ví dụ là tiếng Anh) Điểm khác nhau ở đây là đầu ra của ta chỉ xử lý sau khi đã xem xét toàn bộ chuỗi đầu vào Vì từ dịch đầu tiên của câu dịch cần phải có đầy đủ thông tin từ đầu vào cần dịch mới có thể suy luận được
Trang 26Hình 3-4 Ứng dụng RNN cho bài toán dịch máy - Nguồn: Lecture8.pdf
http://cs224d.stanford.edu/lectures/CS224d-Dưới đây là một vài bài báo nghiên cứu về dịch máy: [11] [12]
c Nhận diện giọng nói
Đưa vào một chuỗi các tín hiệu âm thanh, ta có thể dự đoán được chuỗi các đoạn ngữ âm đi kèm với xác xuất của chúng
Dưới đây là một vài nghiên cứu về nhận dạng giọng nói: [13]
d Mô tả hình ảnh
Cùng với ConvNet, RNN được sử dụng để tự động tạo mô tả cho các ảnh chưa được gán nhãn Sự kết hợp này đã đưa ra được các kết quả khá kinh ngạc Ví dụ như các ảnh dưới đây, các mô tả sinh ra có mức độ chính xác và độ tường tận khá cao
Hình 3-5 Ứng dụng RNN tạo tiêu đề cho ảnh Source: http://cs.stanford.edu/people/karpathy/deepimagesent/
Trang 273.1.2.3 Huấn luyện RNN
Huấn luyện mạng RNN cũng tương tự như các mạng nơ-ron truyền thống, tuy nhiên giải thuật lan truyền ngược (backpropagation) phải thay đổi một chút Đạo hàm tại mỗi đầu ra phụ thuộc không chỉ vào các tính toán tại bước đó, mà còn phụ thuộc vào các bước trước đó nữa, vì các tham số trong mạng RNN được sử dụng chung cho tất cả các bước trong mạng Ví dụ, để tính đạo hàm tại t=4 ta phải lan truyền ngược
cả 3 bước phía trước rồi cộng tổng đạo hàm của chúng lại với nhau Việc tính đạo hàm kiểu này được gọi là lan truyền ngược liên hồi (BPTT - Backpropagation Through Time) Tuy nhiên, với các bước phụ thuộc càng xa thì việc học sẽ càng khó khăn hơn vì sẽ xuất hiện vấn đề hao hụt/bùng nổ (vanishing/exploding) của đạo hàm
Có một vài phương pháp được đề xuất để giải quyết vấn đề này và các kiểu mạng RNN hiện nay đã được thiết kế để triệt tiêu bớt chúng như LSTM chẳng hạn
3.1.2.4 Mạng LSTM
LSTM là một dạng đặc biệt của mạng nơ-ron hồi quy, với nhiều bài toán thì
nó tốt hơn mạng hồi quy thuần Hầu hết các kết quả thú vị thu được từ mạng RNN là được sử dụng với LSTM Về mặt lý thuyết, rõ ràng là RNN có khả năng xử lý các phụ thuộc xa (long-term dependencies) Chúng ta có thể xem xét và cài đặt các tham
số sao cho khéo là có thể giải quyết được vấn đề này Tuy nhiên, đáng tiếc trong thực
tế RNN có vẻ không thể học được các tham số đó Vấn đề này đã được khám phá khá sâu, trong các bài báo [14], họ đã tìm được những lý do căn bản để giải thích tại sao RNN không thể học được
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 năm 1977, và sau đó đã được cải tiến và phổ biế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 toán khác nhau nên dần đã trở nên phổ biến như hiện nay
LSTM đượ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
Trang 28Mọ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ô-dun này có cấu trúc rất đơn giản, thường
là một tầng tanh
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
Về mô hình LSTM và mô hình GRU tôi sẽ áp dụng mô hình truyền thống của Mạng Neural Hồi Quy (RNN)
Hình 3-6 Mô hình chuẩn RNN 1 lớp Nguồn: Internet
Hình 3-7 Mô hình bên trong LSTM Nguồn: Internet
Trang 293.1.3 Mô hình hóa ngôn ngữ - Language Model
Language model – Mô hình hóa ngôn ngữ (LM) được định nghĩa như là một
mô hình dùng để đại diện cho những xác suất hay kiến thức đã học được từ một ngôn ngữ nào đó, những kiến thức này, cụ thể hóa thành những xác suất xuất hiện của từ hoặc chuỗi từ hoặc câu mà có thể xuất hiện cùng nhau hoặc mức độ xuất hiện của chúng trong ngôn ngữ đó
Mô hình ngôn ngữ ban đầu được phát triển để xử lý vấn đề nhận diện âm thanh, hiện nay, chúng vẫn còn giữ vai trò quan trọng trong công việc này Bên cạnh đó, LM cũng được ứng dụng rộng rãi trong việc xử lý ngôn ngữ tự nhiên ở các lĩnh vực khác Các kỹ thuật tối ưu thông số phát triển mô hình hóa ngôn ngữ hữu dụng trong các lĩnh vực trong đó có vấn đề mà bài toán của đề tài đang giải quyết [15]
Mô hình hóa ngôn ngữ được phân loại thành nhiều nhóm trong đó các nhóm phát triển được sử dụng rộng rãi gồm có ba nhóm chính như là: Statistical LM (Count-based), Neural Network LM (Continous-space) và Knowledge-base LM Sau đây chúng ta sẽ tìm hiểu từng nhóm này:
a Statistical Language Models (Count-based)
Các mô hình Statistical Language được sử dụng phổ biến nhất từ trước đến nay, các mô hình này dựa trên việc đếm tần suất xuất hiện của từng từ hay chuỗi, vì thế đối với mô hình này dữ liệu càng nhiều, càng lớn cho ra kết quả càng tốt
Statistical Language Model chính là một phân bố xác suất P(W),W∈V+ trên tập hợp của các câu, hay các chuỗi V+ có trong tập dữ liệu thuộc bộ từ vựng V của một ngôn ngữ ta cần mô hình
𝑘=1
𝑃(𝑤𝑘|𝑤1𝑤2… 𝑤𝑘−1) gọi là xác suất của từ 𝑤𝑘 có được khi ta đã biết chuỗi từ
𝑤1𝑤2… 𝑤𝑘−1 và được tính bằng cách đếm, như công thức:
Trang 30𝑃(𝑤𝑘|𝑤1𝑤2… 𝑤𝑘−1) = 𝑐𝑜𝑢𝑛𝑡(𝑤1𝑤2… 𝑤𝑘)
𝑐𝑜𝑢𝑛𝑡(𝑤1𝑤2… 𝑤𝑘−1)Với công thức trên ta có thể thấy được, 𝑘 càng lớn dẫn đến tần suất xuất hiện của chuỗi sẽ càng nhỏ và tần suất của chuỗi 𝑘 − 1 sẽ lớn, khiến cho xác suất 𝑃(𝑤𝑘|𝑤1𝑤2… 𝑤𝑘−1) gần như bằng 0, hay nói cách khác chuỗi K không xuất hiện trong tập huấn luyện (điều này là không đúng) Vì thế, để khắc phục vấn đề này, thay
vì tính theo K-1, ta chọn N-1 từ dẫn trước thôi Từ đây phương thức N-gram Language Model ra đời:
𝑃(𝑤𝑘|𝑤1𝑤2… 𝑤𝑘−1) = 𝑃(𝑤𝑘|𝑤𝑘−𝑁+1𝑤𝑘−𝑁+2… 𝑤𝑘−1)
b N-gram Language Models
N-gram Language Model như được đề cập phía trên là một mô hình hóa ngôn ngữ dựa theo xác suất của một chuỗi với chiều dài cố định xuất hiện trong ngôn ngữ
- Mô hình này hay còn được gọi với một cái tên khác là (N-1)-order Markov Models
Ý tưởng chính của Markov Models là giả định xác suất của đối tượng đang xét như chỉ phụ thuộc vào một bộ (n-1) dữ liệu trước nó Các mô hình Trigram Language Models được rút ra trực tiếp từ mô hình này
Trang 31Như vậy, từ chuỗi có dạng x1,x2,…xn, ta có thể phát sinh ra được |𝑉|𝑛các khả
năng Tất nhiên không thể liệt kê được hết số chuỗi để tính xác suất, thay vào đó, ta
có thể dùng công thức tổng quát hóa như sau (Công thức mô hình Markov bậc nhất):
𝑃(𝑋1 = 𝑥1, 𝑋2 = 𝑥2, … , 𝑋𝑛 = 𝑥𝑛)
= 𝑃(𝑋1 = 𝑥1)∏𝑛𝑖=2𝑃(𝑋𝑖 =𝑥𝑖|𝑋1 = 𝑥1, … , 𝑋𝑖−1 = 𝑥𝑖−1) (1.1)
= 𝑃(𝑋1 = 𝑥1)∏𝑛𝑖=2𝑃(𝑋𝑖 =𝑥𝑖|𝑋𝑖−1 = 𝑥𝑖−1) (1.2)
Theo trên (1.1) là công thức chuẩn suy ra từ xác suất đồng thời, (1.2) là công
thức suy ra với giả thuyết rằng đối tượng thứ i chỉ phụ thuộc vào đối tượng i-1 trước
Ta đặt ∗ là ký tự bắt đầu cho 1 chuỗi/câu 𝑥0 = 𝑥1 = ∗
Như vậy để tính xác suất của đối tượng 𝑥𝑖 có phân bố
𝑃(𝑋𝑖 = 𝑥𝑖|𝑋𝑖−2 = 𝑥𝑖−2, 𝑋𝑖−1 = 𝑥𝑖−1), ta th ực hiện như sau:
1 Khởi tạo 𝑖 = 1, và 𝑥0 = 𝑥1 = ∗
2 Phát sinh đối tượng 𝑥𝑖 từ công thức
𝑃(𝑋𝑖 = 𝑥𝑖|𝑋𝑖−2 = 𝑥𝑖−2, 𝑋𝑖−1 = 𝑥𝑖−1)
3 Nếu 𝑥𝑖 = 𝑆𝑇𝑂𝑃 thì ta trả về chuỗi 𝑥1𝑥2… 𝑥𝑛 Ngược lại, ta gán 𝑖 =
𝑖 + 1 và quay lại bước 2
Ta có được mô hình có thể sinh được chuỗi có chiều dài bất kỳ
Hình 3-9 Ví dụ minh họa mô hình trigram Markov LM Nguồn: https://ongxuanhong.wordpress.com/2016/08/27/language-modeling-la-gi/
Trang 32Thông thường ta sẽ chọn N = 1, 2, 3 Trong mô hình này, việc xử lý dự đoán một chuỗi tự được chia ra dự đoán từng từ mỗi lần Xác suất một mô hình hóa ngôn ngữ được dựa trên lịch sử của các từ cho trước, trong đó được giới hạn bởi n-1 từ thay
vì k-1 từ Từ đây ta có thể dễ dàng thấy được những nhược điểm như:
Sai điều kiện phụ thuộc: Việc chuyển đổi từ K-1 về N-1 từ phụ thuộc
đã không đúng với ngôn ngữ tự nhiên, vì số lượng N (thành phần của chuỗi) rất có thể ngẫu nhiêu và với sự kết hợp hay độ dài khác nhau sẽ sinh ra sự khác nhau về mặt ngữ nghĩa
Bão hòa (hay Saturation): Khi dữ liệu tang lên càng nhiều có thể model
sẽ càng tốt nhưng đến một mức độ ta sẽ thấy được mô hình này cũng gây ra sự bão hòa, hay nói đúng hơn là xác suất không thay đổi, vì lý
do là phân bố xác suất trong n-gram đã không thay đổi (Điều này thường xảy ra cho trigram khi số lượng data đạt đến hàng tỷ)
Thiếu tính tổng quát: Với thể loại hay chủ đề khác nhau thì việc tính xác suất ngôn ngữ cũng sẽ khác nhau, các từ ngữ chuyên ngành hay những ngôn ngữ phổ biến đều tạo ra một xác suất riêng đối với từng lĩnh vực cụ thể Do đó, có thể thấy sự đa dạng của data cũng rất quan trọng trong mô hình hóa ngôn ngữ thao loại này
Thưa thớt dữ liệu: Khi thiếu dữ liệu, hay trong tình huống tập n-gram làm cho các chuỗi có thể không tồn tại trong tập train nhưng lại có mặt trong tập test, sẽ dẫn đến xác suất bằng 0 Việc dùng N-gram ban đầu
có thể làm giảm đi hiện tượng này nhưng thực chất vẫn không giải quyết được hẳn
c Structured Language Models
Giả sử ở câu nói ví dụ: “The dogs chasing the cat bark” Nếu dùng model gram ở đây là Trigram sẽ thấy P(bark|the cat) sẽ rất thấp vì theo tiếng Anh ta có thể thấy mèo không sủa, theo ngữ pháp tiếng anh từ bark ở đây cũng được chia ở dạng
N-số nhiều nên không thể dùng với cat N-số ít Ta có thể tránh tình trạng này bằng cách tăng số n lên Nhưng như thế cũng không triệt để giải quyết cho cả một văn bản hay nếu tăng lớn bằng 4-gram hay 5-gram ta sẽ đối mặt với vấn đề của Statiscal LM Do
đó ta cần áp dụng cấu trúc phân cấp (hierarchical structure) của câu văn vào mô hình, những models được áp dụng theo cách này được gọi là Structured Language Models
Trang 33Hình 3-10 Cây ngữ pháp của câu "The dogs chasing the cat bark." - Nguồn:
http://people.ee.ethz.ch/~spr/publications/Beutler:07_diss.pdf
Các mô hình này thường sẽ sử dụng một statistical parser đã được huấn luyện
để làm hierarchical structure
d Knowledge Based Models
Mô hình này được xây dựng từ các chuyên gia, những người có am hiểu về ngôn ngữ, cú pháp, cụm từ, các thì,… Đúng với tên gọi mô hình ngôn ngữ, các kiến thức này được định nghĩa bằng các luật thì mô hình gọi là rule-based model
Ưu điểm mô hình này là không yêu cầu huấn luyện dữ liệu
Nhược điểm:
Khó xây dựng: cần có kiến thức chuyên môn về ngôn ngữ cũng như mô hình thuật toán để thể hiện những luật ngôn ngữ theo mô hình thuật toán, tốn thời gian, chi phí
Chỉ nhận diện được các từ thuộc intra-grammatical: là các từ thuộc về văn viết, trang trọng, không áp dụng tốt với văn nói thông dụng
Thiếu tính tần số: Mô hình này có thể cho phép chọn câu đúng nhưng không chắc là câu đã hợp lý và xuất hiện phổ biến và thường xuyên
3.1.4 Beam search – Thuật toán tìm kiếm theo chùm tia
Thông thường, khi có được một câu kết quả sau khi dự đoán ta thường không muốn xuất bản ra một kết quả với giá trị ngẫu nhiên, trong nhiều trường hợp, kết quả với xác suất cao nhất chưa hẳn là chính xác nên ta cần kiểm chứng các xác suất có
Trang 34thể xảy ra được Beamsearch là thuật toán được dùng rộng rãi để cho ra được n kết quả với xác suất có khả năng nhất
Beamsearch: Tìm kiếm beam (beam search) giống như tìm kiếm theo bề rộng,
nó phát triển các đỉnh ở một mức rồi phát triển các đỉnh ở mức tiếp theo Tuy nhiên, trong tìm kiếm theo bề rộng, ta phát triển tất cả các đỉnh ở một mức, còn trong tìm kiếm beam, ta hạn chế chỉ phát triển k đỉnh tốt nhất (các đỉnh này được xác định bởi hàm đánh giá) Do đó trong tìm kiếm beam, ở bất kỳ mức nào cũng chỉ có nhiều nhất
k đỉnh được phát triển, trong khi tìm kiếm theo bề rộng, số đỉnh cần phát triển ở mức
d là bd (b là nhân tố nhánh) Trong bài toán này Beam search được áp dụng sau khi
có được mô hình ngôn ngữ, từ câu nhập vào ta dùng Beam N-gram để tìm ra được N đáp án với xác suất cao nhất để cho kết quả và quan sát tốt nhất để điều chỉnh mô hình một cách hợp lý
Thuật toán Beam search có một tham số được gọi là beamwidth Tại mỗi bước
dự đoán, thay vì chọn ra từ có xác suất lớn nhất, ta sẽ chọn ra beam width kết quả, có xác suất cao nhất Chúng ta cùng theo dõi ví dụ:
X=Jane visite l′Afrique en septembre
Chọn beamwidth=3 như vậy chúng ta sẽ xem xét thuật toán của Beam Search
sử dụng để dịch ra câu Đẩu tiên, chúng ta chạy câu tiếng Pháp sang encoder network
và sau đó lớp đầu tiên trong decoder cho ra softmax output với hơn 10,000 khả năng
và chúng ta sẽ chọn ra 3 từ có xác suất tốt nhất [16]
Hình 3-11 Minh họa cho Beam search Nguồn: p4
Trang 35https://nerophung.github.io/2019/06/02/nlp-Hình 3-12 Thuật toán Beamsearch – Nguồn Andrew Ng
Kế đến, cho mỗi 3 lựa chọn này, ta sẽ tính toán xác suất có thể có cho từ thứ hai được cho bởi từ đầu tiên cùng với câu tiếng Pháp Theo kết quả bước này, ta muốn tìm được cặp câu từ đầu và từ thứ hai tương thích nhất, hay xác suất tìm đc từ thứ hai khi biết từ đầu tiên
Hình 3-13 Mô hình vẽ tay thuật toán Beamsearch - Nguồn: Andew Ng
Trong bước hai này, vì chúng ta có 10,000 từ trong từ điển, nên ở bước 2 này
sẽ xét ba lần 10,000 từ (xét 30,000 xác suất) sau đó chọn ra ba kết quả cao nhất
Bởi vì beamwidth = 3, tại mỗi bước, chúng ta dẫn chứng ra ba bản sao của mạng để đánh giá được một đoạn và kết quả Vì thế, chúng ta sẽ dùng ba bản sao này của ba từ đầu tiên nhưng sẽ hiệu quả để tính toán trên 30,000 xác suất của từ thứ 2