---o0o--- Báo cáo chuyên đề MÁY HỌC VÀ ỨNG DỤNG THUẬT TỐN NẠVE BAYES ỨNG DỤNG BỎ DẤU TIẾNG VIỆT TỰ ĐỘNG CHO VĂN BẢN KHƠNG DẤU GV hướng dẫn: PG.TS VŨ THANH NGUYÊN... Mở đầu Việc xử lý
Trang 1-o0o -
Báo cáo chuyên đề
MÁY HỌC VÀ ỨNG DỤNG
THUẬT TỐN NẠVE BAYES
ỨNG DỤNG BỎ DẤU TIẾNG VIỆT
TỰ ĐỘNG CHO VĂN BẢN KHƠNG DẤU
GV hướng dẫn: PG.TS VŨ THANH NGUYÊN
Trang 2Mục lục
Lời cảm ơn 3
Mở đầu 4
I Giới thiệu bài tốn bỏ dấu tự động cho đoạn văn bản khơng dấu: 5
1.1 Sơ lược bài tốn: 5
1.2 Hướng giải quyết: 5
II Các chương trình đã cĩ: 5
1 AMPad[1] 5
2 VietPad.Net[2]: 6
III Phân tích các phương pháp giải quyết bài tốn: 7
1 Phương pháp LRMM: 7
2 Thuật tốn Nạve Bayes và mơ hình đề xuất: 9
2.1 Sơ lược về thuật tốn Bayes: 9
2.3 Tiền xử lý: 10
2.4 Tách câu: 10
2.5 Tìm các khả năng đánh dấu của từ: 11
2.6 Tính trọng số để tìm câu thích hợp: 12
2.5 Phương pháp huấn luyện: 13
IV Chương trình demo: 14
1 Chương trình huấn luyện: 14
2 Chương trình ứng dụng bỏ dấu tự động: 14
3 Hướng cải tiến: 17
V Tài liệu tham khảo: 18
Trang 3Lời cảm ơn
Máy học được ứng dụng rộng rãi trong nhiều lĩnh vực cuộc sống Nó giúp giải quyết nhiều bài toán mà đòi hỏi con người hàng trăm hoặc ngàn năm mới giải quyết được Kiến thức về máy học là kiến thức thiết yếu và quan trọng trong con đường học tập và nghiên cứu
Em xin chân thành cám ơn Thầy, PGS.TS Vũ Thanh Nguyên đã định hướng, giúp
đỡ và hướng dẫn em hoàn thành môn chuyên đề này, mở đầu cho con đường nghiên cứu chuyên sâu về máy học cũng như khoa học máy tính sau này
Trang 4Mở đầu
Việc xử lý văn bản khơng dấu tự động đã là bài tốn đặt ra từ khi người Việt Nam bắt đầu sử dụng Internet Bắt nguồn từ việc những hệ thống email ban đầu khơng hỗ trợ tốt tiếng Việt Unicode, cho đến những thơng tin trao đổi qua chat do người Việt khơng sử dụng được các bộ gõ tiếng Việt trong thời gian làm quen với máy tính
Qua một thời gian dài gần 10 năm, tình hình trên cĩ khả quan hơn Tuy nhiên sự bùng nổ thiết bị di động ngày nay lại một lần nữa đưa người Việt Nam trở về với bài tốn của thập kỉ trước: bài tốn bỏ dấu tự động cho các tin nhắn khơng dấu
Mặc dù hiện nay, các thiết bị di động hầu hết hỗ trợ bộ gõ tiếng Việt mặc định, nhưng giới trẻ vẫn sử dụng tiếng Việt khơng dấu như một cách tiết kiệm thời gian và cơng sức, qua đĩ gây ra những lỗi khơng đáng cĩ Chính vì vậy, xây dựng một bộ bỏ dấu tiếng Việt tự động với tỉ lệ chính xác cao nhằm hỗ trợ cho việc này là một nhu cầu thiết yếu nhưng ít người cịn quan tâm
Qua nội dung của bài báo cáo này, em xin giới thiệu một số phương pháp đã được
sử dụng và giới thiệu việc ứng dụng phương pháp máy học – cụ thể là thuật tốn Nạve Bayes – vào việc xử lý bài tốn trên
Trang 5I Giới thiệu bài toán bỏ dấu tự động cho đoạn văn bản không dấu:
1.1 Sơ lược bài toán:
Bài toán được phát biểu đơn giản như sau:
- Cho một đoạn văn bản tiếng Việt không dấu, chuyển văn bản này thành có dấu với độ chính xác càng cao càng tốt
- Áp dụng thêm các mô hình hỗ trợ ra quyết định bỏ dấu trong trường hợp nhập nhằng
- Chỉ xử lý các văn bản Unicode
1.2 Hướng giải quyết:
Trong nội dung của bài báo cáo sẽ cài đặt và sử dụng mô hình dựa trên công thức xác suất Bayes làm cơ sở nghiên cứu, được cài đặt dựa trên việc tách cụm 2 từ và 3 từ để
so sánh và đối chiếu
Sau đây ta sẽ xem qua một số chương trình hiện có và nghiên cứu sơ bộ về cách hoạt động của chúng
II Các chương trình đã có:
1 AMPad [1]
AMPad (phiên bản cũ là AutoMark) là sản phẩm đầu tiên tiên phong trong lĩnh vực
bỏ dấu văn bản không dấu
Trang 6Chương trình AMPad
Không chỉ đơn thuần hỗ trợ bỏ dấu cho văn bản không dấu, chương trình còn hỗ trợ
bỏ dấu tự động trực tiếp trong khi gõ (bỏ dấu online)
Tuy nhiên, chương trình đã rất lâu không có phiên bản cập nhật
2 VietPad.Net [2] :
Là chương trình hỗ trợ soạn thảo văn bản đơn giản thay thế Notepad với khả năng
hỗ trợ Unicode tốt, VietPad còn hỗ trợ thêm bộ gõ đơn giản và chức năng bỏ dấu tiếng Việt cho đoạn văn bản không dấu
VietPad.Net được xây dựng trên nền tảng Net 2.0 và có cả phiên bản Java hỗ trợ chạy tốt trên các hệ điều hành khác như Linux và MacOSX
VietPad phiên bản NET
VietPad là phần mềm mã nguồn mở, được cung cấp miễn phí tại
http://vietpad.sourceforge.net/
Trang 7Mô hình bỏ dấu tự động VietPad sử dụng là LRMM, gần giống như AMPad nhưng
dữ liệu được tăng lên và độ chính xác được nâng lên rõ rệt
Ngữ liệu bỏ dấu tự động của VietPad.NET
III Phân tích các phương pháp giải quyết bài toán:
1 Phương pháp LRMM:
Mô hình LRMM được sử dụng chủ yếu trong hầu hết các phần mềm bỏ dấu tự động
và cho kết quả khá cao, đồng thời cách triển khai của phương pháp này khá đơn giản, ngữ liệu tạo ra nhỏ và dễ sử dụng.[3]
Trang 8Mô hình bỏ dấu của VietPad
Vd: với câu “Nhung van de ve giai quyet nguon nuoc sach cho nguoi dan tren
dia ban thanh pho se duoc chu trong trong nam toi” sẽ được VietPad tách thành
Nhung van / de ve / giai quyet / nguon nuoc / sach / cho / nguoi dan / tren dia ban / thanh pho / se duoc / chu trong / trong / nam toi
Sau bước so khớp, sẽ điền được câu kết quả: Nhưng vẫn để về giải quyết nguồn
nước sách cho người dân trên địa bàn thành phố sẽ được chú trọng trong năm tới
Trang 9Như vậy, độ chính xác của phương pháp này phụ thuộc nhiều vào phương pháp tách từ Tuy nhiên, việc tách từ, nhất là tách từ cho tiếng Việt đến nay vẫn chưa cĩ cách giải quyết triệt để
2 Thuật tốn Nạve Bayes và mơ hình đề xuất:
2.1 Sơ lược về thuật tốn Bayes:
Nạve Bayes (NB) là phương pháp phân loại dựa vào xác suất được sử dụng rộng rãi trong lĩnh vực máy học, được sử dụng lần đầu tiên trong lĩnh vực phân loại bởi Maron vào năm 1961, sau đĩ trở nên phổ biến dùng trong nhiều lĩnh vực như trong các cơng cụ tìm kiếm, bộ lọc email… [5]
Thuật tốn Nạve Bayes dựa trên định lý Bayes được phát biểu như sau:
𝑃(𝑌|𝑋) = 𝑃(𝑋𝑌)
𝑃(𝑋) =
𝑃(𝑋|𝑌)𝑃(𝑌) 𝑃(𝑋) Theo định lý Bayes[4]:
𝑃(𝐶𝑖|𝑋) = 𝑃(𝑋|𝐶𝑖)𝑃(𝐶𝑖)
𝑃(𝑋) Theo tính chất độc lập điều kiện:
𝑃(𝑋|𝐶𝑖) = ∏ 𝑃(𝑥𝑘|𝐶𝑖)
𝑛
𝑘=1
Trong đĩ:
𝑃(𝐶𝑖|𝑋) là xác suất thuộc phân lớp i khi biết trước mẫu X
𝑃(𝐶𝑖) xác suất là phân lớp i
𝑃(𝑥𝑘|𝐶𝑖) xác suất thuộc tính thứ k mang giá trị xk khi đã biết X thuộc phân lớp i
Trang 102.2 Mô hình đề xuất:
Mô hình đề xuất gồm các bước thực hiện: tiền xử lý, tách câu, xác định khả năng bỏ dấu của cụm từ (cụm 2 hay 3 từ), tính trọng số và lựa chọn câu kết quả
2.3 Tiền xử lý:
Là giai đoạn xóa các khoảng trắng thừa, lặp, xóa các kí tự không xử lý…
2.4 Tách câu:
Đoạn văn bản được tách thành từng câu và xử lý bỏ dấu trên từng câu này để đảm bảo tốc độ cho chương trình, vì các đơn vị từ và ngữ giữa các câu là không liên quan đến nhau trong phương pháp bỏ dấu tự động bằng thống kê
Văn bản không dấu
Tiền xử lý
Tách câu
Xác định khả năng bỏ dấu firstmark.txt
Tính trọng số cho các vector từ
(cụm 2 hoặc 3 từ)
Lựa chọn câu có trọng số thích hợp
vector.txt
Trang 11Câu không đơn thuần chỉ được xác định bằng các dấu hết câu (như chấm, chấm than, chấm hỏi, xuống dòng…) mà còn được xác định bằng các kí tự ngắt như phẩy, ngoặc đơn, dấu nháy…
Vd: ta có câu: Hom nay, troi mua rat to
Thì đưa vào bộ tách câu, ta sẽ được 2 câu là “hom nay” và “troi mua rat to” và xử lý bỏ dấu trên 2 câu này
2.5 Tìm các khả năng đánh dấu của từ:
Tập tin firstmark.txt chứa các khả năng bỏ dấu của 1 từ, qua đó ta sẽ thiết lập được các cách bỏ dấu có thể có của 1 câu
VD: ta đưa vào câu: Troi mua rat to
Tập tin firstmark.txt có các thông tin:
troi|trời mua|mua,mưa rat|rát,rất to|to,tô
Ta sẽ có các cách bỏ dấu:
Và có được các khả năng bỏ dấu câu:
- trời mua rát to
- trời mua rát tô
Trang 122.6 Tính trọng số để tìm câu thích hợp:
Các câu được tạo sẽ được tra theo từ để tính trọng số vector và chọn ra câu thích hợp nhất
VD với ví dụ ở trên, ta có một số câu ứng viên:
- trời mua rát to
- trời mua rát tô
- trời mua rất to
- trời mua rất tô
- trời mưa rát to
- trời mưa rất to
Tập tin trọng số dict.txt được bố trí như sau:
trời mưa|0.381067832267509
mưa rất|0.600380292102955
rất to|0.406428366841093
mưa bão|0.449865294270964
thiên tai|0.38932132107303
tai đứt|0.600380292102955
đứt cáp|0.515870488101529
cáp quang|0.485767488535131
Tra theo bảng trọng số, ta có trọng số của câu:
- trời mưa rất to: 0.381067832267509 + 0.600380292102955 + 0 + 0
- trời mưa rát to: 0.381067832267509 + 0 + 0 + 0
…
Như vậy, câu “trời mưa rất to” có trọng số nhỏ nhất, ta chọn câu này để xuất ra (mỗi từ đôi – cụm 2 từ – không có, ta tính là w=0)
Tương tự trên cho cách tính theo cụm 3 từ
Trang 132.5 Phương pháp huấn luyện:
Dữ liệu được thống kê từ hơn 20.000 file là các bài báo được lấy ngẫu nhiên từ Internet, được rút trích và tổng hợp thành 2 tập tin:
- Tập tin firstmark: ghi nhận các khả năng bỏ dấu của từng từ
- Tập tin vector.txt: ghi nhận đặc trưng của vector và trọng số của vector đó VD: ta có đoạn văn bản “Trợ lý Bộ trưởng Ngoại giao – ông A đã đến thăm và làm việc với…” thì sau khi tách câu, ta được câu đầu tiên là:
“Trợ lý Bộ trưởng Ngoại giao”
Tập tin firstmark sẽ nhận thêm các giá trị:
tro|trợ ly|lý bo|bộ truong|trưởng ngoai|ngoại giao|giao Tập tin vector (cụ thể là vector với đặc trưng là từng cặp 2 từ) sẽ nhận các giá trị:
trợ lý|[trọng số]
lý bộ|[trọng số]
bộ trưởng|[trọng số]
trưởng ngoại|[trọng số]
ngoại giao|[trọng số]
Trọng số được tính theo công thức Bayes:
Trang 14IV Chương trình demo:
1 Chương trình huấn luyện:
Chương trình nhằm mục đích học từ dữ liệu thô và tạo ra 2 tập tin firstmark.txt và vector.txt
Thời gian thống kê cho cụm 2 từ là khoảng 5 phút và cụm 3 từ là khoảng 20 phút
Tập tin tạo ra sau khi thống kê Với bộ ngữ liệu 27,557 tập tin, ta thống kê được:
2 Chương trình ứng dụng bỏ dấu tự động:
Trang 15Giao diện chương trình bỏ dấu tự động Chương trình hỗ trợ bỏ dấu tự động theo 2 phương thức chi cụm 2 từ và 3 từ tích hợp
Trang 163 So sánh và đánh giá:
Thực hiện so sánh và thử bỏ dấu trên 10 văn bản được chọn ngẫu nhiên, ta thu được kết quả như sau:
(độ chính xác dựa theo số từ đúng/tổng số từ trong văn bản, tính bằng %)
(cụm 2 từ)
mAuto (cụm 3 từ)
Như bảng so sánh, ta thấy sử dụng thuật tốn Nạve Bayes cho kết quả cao hơn hẳn so với
mơ hình LRMM
Trang 173 Hướng cải tiến:
Mặc dù đã đạt được độ chính xác cao và tốc độ chạy khơng thua kém gì so với phương pháp LRMM, sử dụng thuật tốn Nạve Bayes vẫn cịn gặp những vấn đề cần khắc phục:
- Sử dụng tài nguyên quá lớn (60MB Ram khi load các vector cho cụm 2 từ và 400MB khi sử dụng cụm 3 từ) làm chiếm dụng tài nguyên máy
- Thời gian chạy lâu nếu gặp từ/cụm từ cĩ quá nhiều khả năng bỏ dấu
- Phương pháp huấn luyện là khơng giám sát nên cịn nhiều sai sĩt và khơng thực sự chính xác cao
Trong tương lai, cĩ thể tích hợp thêm một bộ kiểm tra chính tả cơ bản sau khi đã thực hiện
bỏ dấu tự động Như vậy cĩ thể tăng thêm độ chính xác cho mơ mình bỏ dấu tự động này
Trang 18V Tài liệu tham khảo:
[1] Trần Khiết Tâm - Phần mềm AMPad
[2] VietPad.NET - http://vietpad.sourceforge.net/
[3] Christopher D.Manning, Hinrich Schutze, Foundations Of Statistical Natural Language Processing
[4] PGT TS Vũ Thanh Nguyên, Bài giảng máy học và ứng dụng, trường Đại học Công
Nghệ Thông Tin, ĐHQG.HCM
[5] Andrew McCallum, Kamal Nigam, A Comparison of Event Models for Naive Bayes Text Classication