ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA PHOMMASENG PHANAKHONE XÂY DỰNG HỆ THỐNG TỰ ĐỘNG PHÂN LOẠI VĂN BẢN TIẾNG LÀO LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Đà Nẵng, Năm 2018 ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA PHOMMASENG PHANAKHONE XÂY DỰNG HỆ THỐNG TỰ ĐỘNG PHÂN LOẠI VĂN BẢN TIẾNG LÀO Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số: 60.48.01.01 LUẬN VĂN THẠC SĨ Người hướng dẫn khoa học: TS ĐẶNG HOÀI PHƯƠNG Đà Nẵng, Năm 2018 LỜI CAM ĐOAN Tôi cam đoan là công trình nghiên cứu khoa học của cá nhân dưới sự hướng dẫn trực tiếp của TS Đặng Hoài Phương, Trường Đại học Bách Khoa-Đại học Đà Nẵng Các dữ liệu, ví dụ và trích dẫn tham khảo luận án đảm bảo độ tin cậy, chuẩn xác và trung thực Những kết quả đóng góp về mặt lý thuyết và ứng dụng của luận án chưa từng được công bố bất kỳ công trình nào khác cho đến Tác giả luận án, Phommaseng Phanakhone i MỤC LỤC MỞ ĐẦU CHƯƠNG TỔNG QUAN PHÂN LOẠI VĂN BẢN 1.1 Phân loại văn bản 1.2 Khái niệm văn bản 1.3 Các phương pháp phân loại văn bản 1.3.1 K-Nearest Neighbor (KNN) 1.3.2 Support Vector Machine (SVM) 1.3.3 Naïve Bayes (NB) 11 1.4 Kết luận .12 CHƯƠNG MƠ HÌNH PHÂN LOẠI VĂN BẢN TIẾNG LÀO .13 2.1 Mô hình phân loại văn bản tiếng Lào 13 2.2 Biểu diễn văn bản tiếng Lào .14 2.3 Tách từ tiếng Lào 15 2.3.1 Đặc trưng tiếng Lào .16 2.3.2 Phương pháp tách từ tiếng Lào sử dụng Regular Expression .22 2.4 Trích chọn đặc trưng 34 2.5 Phân loại văn bản tiếng Lào sử dụng Naive Bayes 34 2.6 Kết Luận .40 CHƯƠNG XÂY DỰNG HỆ THỐNG TỰ ĐỘNG PHÂN LOẠI VĂN BẢN TIẾNG LÀO .41 3.1 Mô hình hệ thống 41 3.2 Cơ sở dữ liệu .42 3.3 Triển khai và đánh giá kết quả 43 3.3.1 Các độ đo đánh giá kết quả phân loại văn bản 44 3.3.2 Thử nghiệm phương pháp tách từ câu tiếng Lào 45 3.3.3 Thực nghiệm Hệ thống phân loại văn bản tiếng Lào 46 3.4 Kết luận .50 KẾT LUẬN 51 TÀI LIỆU THAM KHẢO .52 PHỤ LỤC QUYẾT ĐỊNH GIAO ĐỀ TÀI (BẢN SAO) ii DANH MỤC CHỮ VIẾT TẮT Tiếng Anh STT Chữ viết tắt Nghĩa tiếng Anh CRF Conditional Random Field Xác suất có điều kiện DFD Data Flow Diagram Sơ đồ luồng dữ liệu IDF Inverse document frequency Nghịch đảo tần số văn bản KNN K Nearest Neighbor K láng giềng gần nhất MAP Maximum A Posterior class Phương pháp MAP NB Naive Bayes Phương pháp Naive Bayes RBF Radial Basis Functions network Mạng hàm bán kính xuyên tâm sở SVM Support Vector Machine Máy vec tơ hỗ trợ TF Term frequency Tần số xuất hiện của từ văn bản iii Nghĩa tiếng Việt DANH MỤC CÁC BẢNG Số hiệu bảng Tên bảng Trang 1.1 Bảng so sánh các phương pháp phân loại văn bản 12 2.1 Ví dụ biểu diễn văn bản mô hình không gian vector 15 2.2 Nguyên âm ghép lại với phụ âm cuối vần 18 2.3 Một số cú pháp thường dùng của Regular Expression 24 2.4 Một số chức của Regular Expression 25 2.5 Vector từ đơn tiếng Lào 26 2.6 Các thành phần của Vector từ 27 2.7 Ví dụ cách tạo từ đơn tiếng Lào 28 2.8 Dữ liệu huấn luyện và kiểm thử 39 3.1 CSDL bảng documents 41 3.2 CSDL bảng TrainData 42 3.3 CSDL bảng vocabulary 42 3.4 Kết quả phương pháp tách từ đơn 46 3.5 Kết quả phương pháp tách từ 46 3.6 Kết quả Phân loại văn bản Naive Bayes với phương pháp tách từ không loại bỏ từ dừng 47 3.7 So sánh thời gian phân loại văn bản tiếng Lào kết hợp phương pháp tách từ loại bỏ từ dừng và không loại bỏ từ dừng 48 3.8 Bảng so sánh mô hình phân loại văn bản tiếng Lào đề xuất với các mô hình khác 49 iv DANH MỤC CÁC HÌNH Số hiệu bảng Tên hình Trang 1.1 Bảng mã Unicode tiếng Lào (U+0E80 - U+0EFF) 1.2 Thuật toán k láng giềng gần nhất 1.3 Siêu mặt phẳng h phân chia dữ liệu huấn huyện thành lớp + - với khoảng cách biên lớn nhất Các điểm gần h nhất (được khoanh tròn) là các vector hỗ trợ - Support Vector 2.1 Mô hình tổng quan phân loại văn bản tiếng Lào 13 2.2 Mô hình tách từ tiếng Lào 22 2.3 Một số cấu trúc câu tiếng Lào 26 2.4 Sơ đồ khối hàm word_split 29 2.5 Sơ đồ khối hàm find_first_word 31 2.6 Sơ đồ khối hàm select_best_word 32 2.7 Sơ đồ khối hàm is_next_word 33 2.8 Likelihoods của từng chủ đề với Naïve Bayes 35 2.9 Thuật toán Naïve Bayes Multinominal: huấn luyện và kiểm thử 37 2.10 Thuật toán hàm TRAINMULTINOMINALNB 38 2.11 Thuật toán hàm APPLYMULTINOMINALNB 43 3.1 Sơ đồ phân rã chức 43 3.2 Biểu đồ lớp 43 3.3 Cơ sở dữ liệu 43 3.4 Kết quả phân loại văn bản tiếng Lào kết hợp tách từ 49 v MỞ ĐẦU Internet hiện ngày càng phát triển với số lượng người dùng không ngừng tăng lên, đó Internet đóng vai trị quan trọng c̣c sớng xã hội đối với giao tiếp và chia sẻ thông tin Trước đây, người Lào sử dụng tiếng nước ngoài để nhận biết và trao đổi thông tin lẫn ví dụ: tiếng Anh, tiếng Việt, tiếng Thái Lan, … Ngoài ra, người Lào sử dụng chữ tiếng Anh ghép vào để trở thành từ mà phát âm giớng tiếng Lào thay viết bằng tiếng Lào vì hầu hết thiết bị truy cập được Internet chưa hỗ trợ tiếng Lào Với sự phát triển của công nghệ thông tin, người dân Lào có điều kiện truy cập Internet với chi phí và tốc độ hợp lý; thiết bị smart phone, máy vi tính có bàn phím tiếng Lào và hiển thị được ngơn ngữ tiếng Lào, đó tiếng Lào trở thành ngôn ngữ chính thức mà người Lào sử dụng để chia sẻ thông tin Internet Vấn đề đặt ở là làm cách tìm kiếm thông tin một cách chính xác và có hiệu quả nhất với văn bản tiếng Lào, và một những giải pháp áp dụng phương pháp phân loại văn bản tiếng Lào Trong thực tế, việc phân loại văn bản bằng phương pháp thủ công là rất khó khăn vì lượng dữ liệu thông tin rất lớn Vì vậy, việc phân nhóm văn bản, tốn nhiều thời gian và công sức hiệu quả phân loại không cao Đối với công trình nghiên cứu phân loại văn bản tiếng Lào hạn chế, chủ yếu dựa máy vector hỗ trợ và mạng hàm bán kính xuyên tâm sở Cũng với phương pháp tách từ, những năm gần có một số công trình nghiên cứu về phân loại văn bản tiếng Lào, nhiên đa số vẫn tồn vấn đề về việc xử lý nhập nhằng tiếng Lào Vì tiếng Lào có nhiều cách viết, cách nói và sử dụng từ không thống nhất, đó việc tách từ tiếng Lào rất khó khăn Để khắc phục những hạn chế nêu trên, tác giả đề xuất đề tài luận văn cao học: “Xây dựng hệ thống tự động phân loại văn bản tiếng Lào” bằng cách biểu diễn văn bản thành vector các từ khóa, áp dụng Regular Expression kết hợp với khuôn mẫu từ đơn để tách từ đơn, ghép lại những từ đơn thành từ phức dựa tập từ phức, đồng thời sử dụng phương pháp Naïve Bayes để phân loại văn bản tiếng Lào 1 Mục đích, đối tượng phạm vi nghiên cứu Mục đích của đề tài: Nghiên cứu, phân tích cấu trúc từ và câu văn bản tiếng Lào; đề xuất phương pháp tách từ tiếng Lào dựa Regular Expression với khuôn mẫu biểu thức chính quy Sử dụng phương pháp Naive Bayes để xây dựng mơ hình phân loại văn bản tiếng Lào, hiệu thức hoá hệ thống tự động phân loại văn bản tiếng Lào sở mô hình đề xuất Ý nghĩa khoa học: Đề xuất phương pháp tách từ đối với văn bản tiếng Lào sử dụng Regular Expression và cải tiến với khuôn mẫu biểu thức chính quy của từ đơn Lào Xây dựng mô hình phân loại văn bản tiếng Lào dựa sở phương pháp tách từ đề xuất và Naive Bayes; Ý nghĩa thực tiễn: Hiệu thức hoá hệ thống tự động phân loại văn bản tiếng Lào sở mô hình đề xuất Đối tượng nghiên cứu: Trong khuôn khổ của luận văn thuộc loại xây dựng hệ thống, tác giả chỉ giới hạn nghiên cứu các vấn đề sau: - - Các cấu trúc từ và câu văn bản tiếng Lào; Phương pháp tách từ tiếng Lào dựa biểu thức quy (Regular Expression) kết hợp với khuôn mẫu từ đơn ghép lại những từ đơn thành từ phức dựa tập từ phức; Phương pháp phân loại văn bản Naive Bayes Mục tiêu nhiệm vụ Mục tiêu: Mục tiêu chính của đề tài là nghiên cứu về cấu trúc từ tiếng Lào, đề xuất phương pháp tách từ sử dụng biểu thức chính quy (Regular Expression) và xây dựng hệ thống tự động phân loại văn bản tiếng Lào dựa phương pháp Naive Bayes Để thỏa mãn mục tiêu này thì cần đạt được những mục tiêu cụ thể sau: - Nghiên cứu cấu trúc và phương pháp tách từ văn bản tiếng Lào; - Nghiên cứu sử dụng Naive Bayes phân loại văn bản tiếng Lào; - Xây dựng được hệ thống phân loại văn bản tiếng Lào và áp dụng vào thực tế - Nhiệm vụ: Để đạt được những mục tiêu thì nhiệm vụ đạt của đề tài là: Phân tích cấu trúc từ và câu văn bản tiếng Lào; - Phân tích phương pháp tách từ tiếng Lào; Phân tích các mô hình và phương pháp phân loại văn bản, đưa bài toán cần giải quyết; Phân tích và đề xuất mô hình giải quyết bài toán; - Hiện thực hóa hệ thống nêu trên, đánh giá kết quả đạt được thực tế - Phương pháp nghiên cứu Phương pháp lý thuyết: Tiến hành thu thập và phân tích các tài liệu có liên quan đến đề tài, nghiên cứu phương pháp tách từ và phương pháp phân loại văn bản; - Phương pháp thực nghiệm: Xây dựng sở dữ liệu văn bản tiếng Lào; - Xây dựng hệ thống tự động phân loại văn bản tiếng Lào; Cài đặt hệ thống và triển khai thực tế, nhận xét và đánh giá kết quả đạt được - Phương tiện, công cụ triển khai: Ngôn ngữ lập trình Python 3; Môi trường phát triển tích hợp (IDE) PyCharm CE 2017.3.3; Hệ quản trị sở dữ liệu MongoDB Đóng góp chính của luận án Xây dựng kho ngữ vựng từ phức tiếng Lào phục vụ cho phương pháp tách từ tiếng Lào Đề xuất giải pháp tách từ sử dụng biểu thức chính quy (Regular expression) kết hợp với khuôn mẫu từ đơn và ghép lại từng từ đơn thành từ phức có âm tiết dài nhất từ điển từ phức Ứng dụng Naive Bayes xây dựng mô hình phân loại văn bản tiếng Lào Triển khai hệ thống thực tế và đánh giá hiệu quả của mô hình - Tách từ tiếng Lào sử dụng trường xác suất có điều kiện CRF (Conditional Random Field) [11]; - Tách từ dựa so khớp tối đa của âm tiết [4]; Hỗn hợp tiếp cận tách từ sử dụng phương pháp so khớp tối đa cấp độ âm - tiết với sự công nhận của các đặt tên [10]; Phân âm tiếng Lào cho tách dòng [23]; Tách từ tiếng Lào dựa phương pháp so khớp tối đa với kho từ vựng (gồm có từ đơn nhận từ máy suy diễn kết hợp với sở luật, từ ghép và cụm từ) và xử lý khứ bỏ nhập nhằng [1] Do đó, tác giả đề xuất mô hình tách từ tiếng Lào dựa sở Regular Expression kết hợp với khuôn mẫu cấu trúc câu, cấu trúc từ đơn 2.3.1 Đặc trưng tiếng Lào Lào là một đất nước có ngôn ngữ và chữ viết riêng của mình có tên gọi là ngôn ngữ Lào và chữ Lào Đối với tiếng lào nó sinh và hình thành song song với sự xuất hiện của đất nước Lào là một những ngôn ngữ từng có từ lâu đời Châu Á Ngữ pháp Lào được chỉnh sửa nhiều lần cho đến thời kỳ giải phóng đất nước và xây dựng Cợng hịa Dân chủ Nhân dân Lào hiện được sử dụng phương pháp tiếng Lào theo ngữ pháp Ơng Phoumy Vongvichith là Bợ Giáo dục cơng nhận sử dụng hiện nay, có thể vì có nhiều lần chỉnh sửa phương pháp tiếng Lào mà làm cho cách viết, cách nói tiếng Lào của người Lào khác khơng có sự hịa hợp cho nhất là những từ câu hình thành từ câu ngôn ngữ Bali Sansakit hay là các từ câu hình thành từ câu ngoại ngữ, hay câu của Lào 2.3.1.1 Tổng quan đặc trưng của văn bản tiếng Lào Cấu trúc một văn bản tiếng Lào thường gồm một Chủ đề, các mục (có chữ số ở phía trước tuân theo với ký tự dấu chấm) và nội dung Nội dung là tập hợp của nhiều đoạn, một đoạn là tập hợp của nhiều câu, một câu là tập hợp của một cụm/nhóm từ, một cụm từ là tập hợp của hai từ đơn trở lên ghép sát (không có rảnh giới giữa các từ) và một từ đơn gồm hai ký tự trở lên Đặc trưng của cách viết một đoạn và câu tiếng Lào không khác với hệ chuẩn của tiếng Anh kết thúc câu phải có các ký tự dấu chấm câu (dấu chấm, dấu hai chấm, 16 dấu phẩy, dấu than, ), bắt đầu một đoạn phải có thụt lề hay ký tự đặc biệt (\t) và kết thúc đoạn phải x́ng bắt đầu dịng mới ký tự (\n) Về đặc trưng của từ đơn tiếng Lào là một tập hợp các ký tự tiếng Lào (gồm có phụ âm, nguyên âm và dấu thanh), một từ đơn ít nhất phải có ký tự gồm ký tự phụ âm và ký tự nguyên âm Trong hệ viết từ tiếng Lào không có chữ hoa Trong hệ viết tiếng Lào, ký tự khoảng trống sử dụng để tách hai câu cụm từ có đủ ý nghĩa của từng câu cho dễ dàng đọc và tránh biến nghĩa của câu Khoảng trống thường dùng để tách tên riêng (tên người, tên công ty, tên quốc gia, chữ viết tắt) và chữ số (số ngày, số năm, số tiền, …) khỏi câu/cụm từ 2.3.1.2 Cấu trúc từ tiếng Lào Ngôn ngữ tiếng lào có ký tự viết và đọc tương tự với ngôn ngữ quốc gia khác Bảng chữ cái tiếng Lào gồm nhóm: phụ âm, nguyên âm và dấu Cách tạo một từ tiếng Lào phải dùng ít nhất ký tự gồm ít nhất phụ âm và nguyên âm ghép lại với nhau, các ký tự đó phải nằm vị trí theo ngữ pháp tạo từ của tiếng Lào thì mới phát âm được và có nghĩa tiếng Lào 2.3.1.3 Bảng chữ cái tiếng Lào Chữ cái tiếng Lào mà sử dụng giao tiếp là có nguồn gốc từ tiếng Sanskrit (Bắc Phạn) và chữ cái sử dụng phật giáo là có nguồn gốc từ tiếng Pali (Nam Phạn) Bảng chữ cái tiếng Lào gồm nhóm: phụ âm, nguyên âm và dấu Tiếng Lào có chữ số Lào ít sử dụng hiện Phụ âm Có 33 phụ âm được chia loại: phụ âm đơn (trung tâm) và phụ âm ghép Các 27 phụ âm đơn: ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລສຫອຮ Các phụ âm ghép: ຫງ ຫຍ ຫນ(ໜ) ຫມ(ໝ) ຫລ(ຫຼ) ຫວ Nguyên âm Có 28 nguyên âm đó gồm nguyên âm dài, nguyên âm ngắn, nguyên âm đặc biệt (không thể ghép với phụ âm cuối vần), có sau: - Nguyên âm dài: xະ xີ xຶ xຸ ເxະ ແxະ ໂxະ ເxາະ ເxິ ເxັຍ xົວະ ເxຶອ - Nguyên âm ngắn: xາ xີ xື xູ ເx ແx ໂx xໍ ເxີ ເxຍ xົວ ເxືອ - Nguyên âm đặc biệt: ໄx ໃx ເxົາ xໍາ 17 Trong các 24 nguyên âm (trừ nguyên âm đặc biệt) nó có thể ghép với phụ âm cuối từ để trở thành nguyên âm với phụ cuối vần Phụ âm cuối từ phụ âm cuối vần là phụ âm đơn vừa làm phụ âm đầu vần vừa làm phụ âm cuối vần gồm có phụ âm (ກ ງ ຍ ດ ນ ບ ມ ວ) cần đặt sau các 24 nguyên âm xếp sau các nguyên âm đặc biệt Có một số nguyên âm sau ghép lại với phụ âm cuối vần thay đổi dạng Sau là bảng nguyên âm ghép với phụ âm cuối vần: Bảng 2.2 Nguyên âm ghép lại với phụ âm cuối vần Nguyên âm Phụ âm cuối vần ກ ງ ຍ ດ ນ ບ ມ ວ xະ xັກ xັງ xັຍ (ໄx) xັດ xັນ xັບ xັມ (xໍາ) xັວ (ເxົາ) xາ xາກ xາງ xາຍ xາດ xານ xາບ xາມ xາວ xິ xິກ xິງ - xິດ xິນ xິບ xິມ xິວ xີ xີກ xີງ - xີດ xີນ xີບ xີມ xີວ xຶ xຶກ xຶງ xຶຍ xຶດ xຶນ xຶບ xຶມ xຶວ xື xືກ xືງ xືຍ xືດ xືນ xືບ xືມ xືວ xຸ xຸກ xຸງ xຸຍ xຸດ xຸນ xຸບ xຸມ - xູ xູກ xູງ xູຍ xູດ xູນ xູບ xູມ - ເxະ ເxັກ ເxັງ - ເxັດ ເxັນ ເxັບ ເxັມ ເxັວ ເx ເxກ ເxງ - ເxດ ເxນ ເxບ ເxມ ເxວ ແxະ ແxັກ ແxັງ - ແxັດ ແxັນ ແxັບ ແxັມ ແxັວ ແx ແxກ ແxງ - ແxດ ແxນ ແxບ ແxມ ແxວ ໂxະ xົກ xົງ xົຍ xົດ xົນ xົບ xົມ - ໂx ໂxກ ໂxງ ໂxຍ ໂxດ ໂxນ ໂxບ ໂxມ ໂxວ ເxາະ xັອກ xັອງ xັອຍ xັອດ xັອນ xັອບ xັອມ - xໍ xອກ xອງ xອຍ xອດ xອນ xອບ xອມ - ເxິ ເxິກ ເxິງ ເxິຍ ເxິດ ເxິນ ເxິບ ເxິມ ເxິວ ເxີ ເxີກ ເxີງ ເxີຍ ເxີດ ເxີນ ເxີບ ເxີມ ເxີວ 18 ເxັຍ xັຽກ xັຽງ - xັຽດ xັຽນ xັຽບ xັຽມ xັຽວ ເxຍ xຽກ xຽງ xຽຍ xຽດ xຽນ xຽບ xຽມ xຽວ xົວະ xັວກ xັວງ xັວຍ xັວດ xັວນ xັວບ xັວມ - xົວ xົວກ xົວງ xົວຍ xົວດ xົວນ xົວບ xົວມ - ເxຶອ ເxຶອກ ເxຶອງ ເxຶອຍ ເxຶອດ ເxຶອນ ເxຶອບ ເxຶອມ - ເxືອ ເxືອກ ເxືອງ ເxືອຍ ເxືອດ ເxືອນ ເxືອບ ເxືອມ - 2.3.1.4 Dấu Dấu tiếng Lào sử dụng để biến phát âm của nguyên âm cho nó thành cao, thấp, ngắn, dài Từ tiếng Lào nếu thay đổi dấu của một từ thì nghĩa của từ đó thay đổi Tiếng Lào có dấu thanh: x່, x້, x໋, x໊ Ví dụ: ປາ / pa, ປ່າ / pà, ປ້າ / pá, ປ໋າ / pạ, ປ໊າ / pã 2.3.1.5 Chữ số Có 10 chữ số tương ứng với các số từ đến Cách viết số Lào tuân theo hệ thống số chuẩn thông thường như: ໐ ໑ ໒ ໓ ໔ ໕ ໖ ໗ ໘ ໙ Ví dụ: 2017 = ໒໐໑໗, 1991 = ໑໙໙໑, -20.17 = -໒໐,໑໗ 2.3.1.6 Ký tự đặc biệt Có ký tự: ໆ, ຯ và x໌ - Ký tự ໆ sử dụng để lặp lại từ ở phía trước Ví dụ: ຫຼາຍໆ = ຫຼາຍຫຼາຍ (nhiều nhiều) - Ký tự ຯ đặt vào phía trước và sau phụ âm ລ trở thành ຯລຯ màng nghĩa tiếng Việt là “vân vân” - Ký tự x໌ đặt vào phía của một phụ âm mà phụ âm đó nằm ở cuối của một từ viết từ của từ tiếng nước ngoài để làm cho từ đó phát âm theo dòng nói theo tiếng đó Ví dụ viết tiếng Anh sang tiếng Lào: Star = ສະຕາຣ໌ 19 2.3.1.7 Hệ thống từ vựng tiếng lào Tiếng Lào là ngôn ngữ đơn âm một từ có một âm tiết Cách tạo từ tương tự với tiếng Thái và tiếng Việt, từ được tổ hợp từ các chữ cái phụ âm, nguyên âm và dấu Ví dụ: - Từ có phụ âm ປ và nguyên âm xາ: ປາ / pa / cá - Từ có phụ âm ອ, nguyên âm xາຍ và dấu x້: ອ້າຍ / ái / anh trai Từ vững tiếng Lào có hai loại là từ đơn (giản) và từ phức (hợp) Từ phức hợp gồm từ ghép và từ láy) Từ đơn Một từ đơn có một âm tiết ít nhất phải có ký tự gồm có một phụ âm và một nguyên âm Ví dụ phụ âm ດ ghép với nguyên âm xີ: ດີ / / tốt Âm tiết dài nhất của từ đơn có thể tạo được là ký tự gồm phụ âm (ghép), nguyên âm và dấu Ví dụ phụ âm ghép ຫງ ghép với nguyên âm ເxືອ ghép với phụ âm cuối vần ນ và dấu x່: ເຫງື່ອນ / ngườn / dỡ Từ ghép Từ ghép được tạo từ từ đơn trở lên, mang một nghĩa đó xác định Gồm có dạng ghép: ghép hai từ đơn có nghĩa khác nhau, ghép nhiều từ đơn có nghĩa tương đương, ghép hai từ đơn có nghĩa giống nhau, ghép nhiều từ đơn (cụm/nhóm), ghép các từ của tiếng Pali và Sanskrit - Ví dụ: Từ ghép hai từ đơn có nghĩa khác (2 âm tiết): ໄຟຟ້າ (điện) / fai fá / ໄຟ (lửa) + ຟ້າ (trời) - Từ ghép (3 âm tiết): ຄອມພິວເຕີ (máy vi tính) / ຄອມ + ພິວ + ເຕີ - Từ ghép (4 âm tiết): ວິທະຍາໄລ (trường cao đẳng) / ວິ + ທະ + ຍາ + ໄລ - Từ ghép hai cụm từ (6 âm tiết): ມະຫາວິທະຍາໄລ (trường đại học) / ມະຫາ (đại) + ວິທະຍາໄລ (trường cao đẳng) 20 Từ theo phát âm tiếng nước Để viết từ cho phát âm của tiếng nước ngoài đặc biệt là Tiếng Anh thường có âm cuối mà tiếng Lào không có âm cuối, âm cuối này gồm hai ký tự (phụ âm theo âm cuối của từ ký tự đặc biết ີ) Ví dụ như: Stars (ສະຕາສ໌), Paster (ປາສ໌ເຕີຣ໌)… Những từ này viết theo phát âm của từ tiếng đó, cách viết này chưa có chuẩn thống nhất mà thực tế bài báo hay tạp chí người ta thường viết theo cách 2.3.1.8 Cấu trúc câu tiếng Lào Tiếng Lào có hai loại câu: câu đơn và câu ghép Câu đơn Tương tự quan điểm ngữ pháp tiếng Việt, ngữ pháp tiếng Lào, câu đơn gồm ba phần: chủ ngữ (danh từ hay đại từ), vị ngữ (động từ) và bổ ngữ Ví dụ câu đơn: ຂ້ອຍກໍາລັງສຶກສາຢູ່ ມະຫາວິທະຍາໄລຊັບພະວິຊາ ທີ່ ນະຄອນ ດານັງ Tôi học ở Trường Đại Học Bách Khoa thành phố Đà Nẵng Câu ghép Câu ghép được tạo với nhiều câu ghép lại với để mở rộng ý nghĩa của câu Về câu câu ghép thường có cấu tạo giống câu đơn (là cụm chủ ngữ - vị ngữ) Giữa các câu câu ghép có những quan hệ nhất định để nối với Tương tự với tiếng Việt, có ba cách nối: - Nối bằng từ ngữ có tác dụng nối ແລະ, ví dụ: ມື້ວານນີ້ໄປຕະຫຼາດ, ຂ້ອຍໄດ້ຊື້ເສື້ອໃໝ່ ແລະ ນ້ອງຂ້ອຍຊື້ໝາກບານໜຶ່ງໜ່ວຍ Hôm qua chợ, mua áo mới và em trai mua một quả bóng đá - Nối trực tiếp, không dùng từ ngữ có tác dụng nối, giữa các vế câu phải dùng dấu phẩy, dấu chấm phẩy dấu hai chấm, ví dụ: ມີສາມຄົນຢູ່ໃນຫ້ອງ, ຄົນໜຶ່ງເບິ່ງໂທລະພາບ, ຄົນໜຶ່ງຫຼິ້ນໂທລະສັບ ແລະ ຄົນໜຶ່ງນັ່ງໄຫ້ Có ba người phịng, mợt người xem ti vi, mợt người chơi điện thoại, một người ngồi khóc lóc - Nối bằng quan hệ từ (Vì … nên …; Do … nên ), ví dụ: 21 ເນື່ອງຈາກ ທ້ອງຟ້າແຈ່ມໃສ ດັ່ງນັ້ນ ພວກເຮົາຈຶ່ງໄປຫຼິ້ນທະເລ Vì trời đẹp nên chơi biển 2.3.2 Phương pháp tách từ tiếng Lào sử dụng Regular Expression Với những đặc trưng và nguyên tắc trên, cho phép tác giả xây dựng được tập khuôn mẫu biểu thức chính quy (Regular Expression) biểu diễn cho cấu trúc câu, cấu trúc từ đơn dựa đặc trưng hệ viết tiếng Lào phục vụ cho quá trình tách từ văn bản tiếng Lào Áp dụng so khớp của Regular Expression kết hợp với khuôn mẫu xây dựng tách câu và tách từ đơn câu theo hướng trái qua phải Sau lấy được tất cả từ đơn một văn bản tiếng Lào dưới dạng mảng vector từ đơn, ghép từng phân tử duyệt trái qua phải của mảng tìm và so sánh với từ điển từ phức tiếng Lào cho lấy được từ từ điển có âm tiết dài nhất, có mô hình sau: Văn bản tiếng Lào Khuôn mẫu câu Tách câu S = [s1, s2, , sn] Tách cụm từ Khuôn mẫu cụm từ C = [c1, c2, , cn] Tập khuôn mẫu từ đơn Tách từ đơn T = [t1, t2, , tn] Xử lý từ chứa phụ âm ghép Ghép từ đơn Từ điển từ phức V = [w1, w2, , wn] Hình 2.2 Mơ hình tách từ tiếng Lào Quá trình cho phép tách nhiều từ tiếng Lào có thể nhất mà không cần quan tâm đến ngữ nghĩa của từ Và xếp lại vị trí của từ văn bản theo thứ tự ban đầu dưới dạng một vector Ví dụ: Đầu vào cụm từ c: c = ‘ຂ້ອຍກໍາລັງໄປໂຮງຮຽນ’ 22 Tách được từ đơn: Vtừ đơn = [‘ຂ້ອຍ’, ‘ກໍາ’, ‘ລັງ’, ‘ໄປ’, ‘ໂຮງ’, ‘ຮຽນ’] Ghép lại từ đơn dựa từ điển từ ghép: Vtừ = ['ຂ້ອຍ', 'ກໍາລັງ', 'ໄປ', 'ໂຮງຮຽນ'] Một vấn đề thường gặp quá trình phân loại văn bản, tách từ lấy được nhiều từ thừa đó là những từ mà chứa phụ âm ghép (ຫນ, ຫມ ຫລ tương đương với ໜ, ໝ ຫຼ lần lượt), đặc điểm của nó là có hai dạng viết mà một nghĩa, đối với máy tính nó hiểu là cặp từ đó là hai từ khác thì nên xử lý những từ đó để giảm chiều dài của vector từ đặc trưng phân loại văn bản Ví dụ: ຫລານ = ຫຼານ, ຫມາ = ໝາ, ຫນຶ່ງ = ໜຶ່ງ… Theo mơ hình (hình 2.2), tác giả cung cấp module tách từ tiếng Lào dựa biểu thức chính quy (Regular Expression) ngôn ngữ Python phục vụ cho phương pháp phân loại văn bản Naive Bayes Riêng module biểu thức chính quy áp dụng trực tiếp được và không đủ chức để tách từ văn bản tiếng Lào cho chính xác và hiệu quả, nên phải xây dựng khuôn mẫu từ đơn đơn tiếng Lào, cải tiến chức là kiểm tra từ mới tách được có nằm ở giửa từ tiếp theo hay không, sau đó ghép lại những từ đơn tách được thành từ phức dựa phương pháp ghép và so sánh tìm kiếm từ điển từ phức Ưu điểm của module tách từ đề xuất là: - Tốc độ tách từ nhanh vì không quan tâm đến ngữ nghĩa của từ; - Có thể tách được tất cả từ đơn theo tập khuôn mẫu từ đơn xây dựng và tách được số, ký tự đặc biệt dấu chấm, dấu thăng, dấu ngoặc, …; - Xử lý được những từ có hai cách viết nghĩa giống nhau, là những từ chứa phụ âm ghép ຫລ, ຫມ, ຫນ sửa thành ຫຼ, ໝ, ໜ lần lượt, để giảm độ phức tạp và số lượng từ đặc trưng; - Tách được từ văn bản thỏa mãn cho phương pháp phân loại văn bản Naive Bayes Nhược điểm: - Ghép từ đơn thành từ phức có hạn chế dựa số lượng của từ vững từ điển từ phức; - Nếu gặp từ viết sai chính tả đặc biệt là không viết theo thứ tự thì tách thành ký tự 2.3.2.1 Regular Expression Trước việc xử lý chuỗi mọi ngôn ngữ lập trình rất là khó khăn bởi vì hàm xử lý chuỗi không cung cấp nhiều và những hàm đó không có một chuẩn chung để kiểm tra định dạng của chuỗi Sau nó đời việc xử lý chuỗi trở thành dể dàng 23 Regular Expression được sử dụng phổ biến thế giới UNIX và hiện nó được hỗ trợ bởi hầu hết các ngôn ngữ lập trình Perl, Java, Javascript, C#, C/C++, PHP, Python, … Regular Expression (hay gọi là biểu thức chính quy, RegEx, RegExp, ) là một chuỗi miêu tả một bộ các chuỗi khác theo những quy tắc cứ pháp nhất định, nó được dùng để tìm kiếm, so sánh, cắt ghép, là xử lý chuỗi nâng cao thông qua biểu thức riêng của nó, những biểu thức này có những nguyên tắc riêng và phải tuân theo nguyên tắc đó thì biểu thức mới hoạt động được Ngun tắc hoạt đợng của biểu thức quy (Regular Expression) là so khớp dựa vào khuôn mẫu (pattern), khuôn mẫu được xây dựng từ các quy tắc bản của biểu thức quy Cứ pháp của Regular Expression - - Về bản, biểu thức chính quy (Regular Expression) chia phần gồm: Literal character (ký tự thường) là một biểu thức chứa một nhiều ký tự từ a đến z dùng để làm mẫu và so sánh với một chuỗi nào đó Ví dụ nếu có RegEx pattern là ‘eph’ và một chuỗi là ‘elephant’, nó tìm kiếm và so sánh trùng khớp chữ eph chuỗi elephant.; Meta character (siêu ký tự) là những ký tự đặc biệt có ý nghĩa một mệnh lệnh nhất định Dưới là một số Meta character thường dùng: Bảng 2.3 Một số cú pháp thường dùng của Regular Expression Pattern Miêu tả ^ kết nới vần phần đầu của dịng $ kết nới vần phần ći của dịng kết nới bất kỳ ký tự nào ngoại trừ newline [ ] kết nối với một ký tự [] (dấu … thay thế cho những ký tự nào đó ví dụ [êc] trùng khớp một ký tự ê c) [^ ] Kết nối với bất kỳ ký tự đơn nào không ở [] re{n,m} Kết nối với ít nhất n và nhiều nhất m sự xuất hiện của biểu thức đặt trước (re) Nhóm các Regular Expression và ghi nhớ text kết nối 24 re* Kết nối với nhiều sự xuất hiện của biểu thức đặt trước re+ Kết nối với nhiều sự xuất hiện của biểu thức đặt trước re? Kết nối với sự xuất hiện của biểu thức đặt trước \w Kết nối các ký tự từ \s Kết nối với whitespace Tương đương với [\t\n\r\f] \d Kết nối với các chữ số Tương đương với [0-9] Các hàm thường dùng gồm có hàm so khớp re.match(), hàm tìm kiếm re.search(), hàm tìm và thay thế re.sub(), hàm tìm tách re.split()… Được mô tả sau: Bảng 2.4 Một số chức của Regular Expression Module Miêu tả re.match(pattern, text) chỉ so khớp pattern với text ở vị trí ký tự thứ nhất của text nếu thành công trả về đối tượng match và None nếu thất bại re.search(pattern, text) cố so khớp pattern với text bắt đầu từ đầu đến cuối re.sub(pattern, repl, string) thay thế tất cả sự xuất hiện pattern string với repl re.split(pattern, string) tách string thành một mảng với tất cả sự xuất hiện pattern string Ví dụ cho một chuỗi khuôn mẫu (pattern) “ສະ.(າ|ະ)” cụm từ (string) “ສະບາຍດີ” vào hàm re.match(pattern, string) hàm này so khớp pattern với string bắt đầu từ ký tự thứ nhất của string và đưa kết quả thành công là ສະບາ 2.3.2.2 Mô hình hóa câu tiếng Lào Theo những đặc trưng của câu tiếng Lào trình bày cho phép tác giả mô hình hóa được cấu trúc câu tiếng Lào Sau là một ví dụ câu tiếng Lào gồm cụm từ (clause), từng cụm từ được tách bằng khoảng trống và dấu phẩy, và câu kết thúc với dấu chấm và ký tự newline (\n) hay khoảng trớng 25 Hình 2.3 Mợt sớ cấu trúc câu tiếng Lào - Trong đó: Clause1-3 là cụm từ; - Space là khoảng chống; \n | space là x́ng dịng khoảng chớng Trong văn bản tiếng Lào (text) các câu được tách với một chuỗi khuôn mẫu biểu thức chính quy (pattern) và lưu trữ kết quả một vector Chuỗi khuôn mẫu sử dụng để tách câu văn bản có sau: pattern=‘(?