CHƯƠNG 3. THIẾT KẾ VÀ XÂY DỰNG CHƯƠNG TRÌNH
3.3 Xây dựng các chức năng
3.3.1 Xây dựng chức năng tiền xử lý văn bản
3.3.1.2 Tách từ khoá, loại bỏ từ dừng trong văn bản
Chương 2 của báo cáo đã trình bày một số phương pháp tách từ cơ bản nhất và có hiệu quả phân tách tốt. Đối với bài toán phân loại văn bản theo phương pháp SVMs, giải thuật tách theo độ dài nhất của từ (chiều phải qua trái) đã được lựa chọn trong bước này (nghĩa là cố gắng tìm ra những từ có nghĩa mà có số âm tiết lớn nhất). Ví dụ, khi gặp cụm từ “công nghệ thông tin”, ta sẽ giữ nguyên là một từ, chứ không tách ra thành 2 từ là “công nghệ” và “thông tin”.
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 37/67
Phương pháp tách theo từ dài nhất tuy còn có một số trường hợp nhập nhằng, và không phân biệt được tên riêng, chữ viết tắt, chữ số, … nhưng tốc độ xử lý là rất nhanh. Ngoài ra, ta có thể áp dụng một số phương pháp để làm tăng độ chính xác cho chương trình tách từ này, như: chuẩn hoá từ điển thuật ngữ và từ điển từ dừng, xây dựng từ điển các từ viết tắt, … .
Việc tách từ đồng thời cũng sẽ kiểm tra và loại bỏ ngay các từ dừng (có trong từ điển từ dừng StopWords) để tránh việc phải lưu trữ từ dừng làm tốn bộ nhớ chương trình. Dưới đây là các bước thực hiện trong giải thuật tách từ theo từ dài nhất theo phương pháp duyệt theo chiều từ phải qua trái:
1. Tìm kiếm xâu s trong từ điển, nếu tìm thấy thì ghi nhận s là một từ và chuyển sang bước 5.
2. s‟ := s.
3. Lặp đến khi s‟ không còn âm tiết nào.
Loại bỏ âm tiết đầu tiên của s‟.
Tìm kiếm s‟ trong từ điển.
Nếu s‟ có trong từ điển, kiểm tra xem nó có trong Danh sách từ dừng không:
- Nếu có thì bỏ qua từ đó.
- Ngược lại, ghi nhận s‟ là một từ.
- Sau đó loại bỏ xâu s‟ ra khỏi s (gán s bằng phần xâu còn lại) và quay lại bước 1.
4. Loại bỏ âm tiết cuối cùng trong xâu s. Nếu xâu s có ít nhất 1 âm tiết thì quay lại bước 2.
5. Kết thúc.
Thuật toán 3-2: Giải thuật tách từ theo độ dài từ dài nhất (chiều phải qua trái).
Thông thường các từ trong tiếng Việt chỉ có một số lượng âm tiết giới hạn nhất định. Do đó nếu một câu có số lượng âm tiết quá lớn thì quá trình tìm kiếm xâu sẽ bị tốn thêm nhiều thời gian vô ích. Ví dụ nếu số lượng âm tiết giới hạn của một từ là MaxSyllables = 6, thì khi một từ có 12 âm tiết, sẽ có ít nhất 6 lần kiểm tra từ chắc chắn là vô nghĩa (khi số lượng âm tiết trong xâu kiểm tra > 6 và ≤ 12).
Để khắc phục vấn đề này, ta có thể xây dựng giải thuật tách từ theo hướng như sau:
1. Đếm số tiếng của xâu = numSylls.
2. Nếu số tiếng numSylls ≤ MaxSyllables thì thực hiện tách theo hàm LessThan_Equal(string s).
3. Ngược lại, thì thực hiện hàm MoreThan(string s).
Thuật toán 3-3: Giải thuật tách từ theo độ dài từ dài nhất có tính đến số lượng âm tiết tối đa của từ
Trong đó:
LessThan_Equal(string s) thực hiện như Thuật toán 3-2.
MoreThan(string s) thực hiện phân tách đối với các xâu có số tiếng lớn hơn MaxSyllables.
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 38/67 1. Tính số tiếng của xâu chuẩn s: Dùng hàm split(„ ‟) để tách xâu thành
mảng các tiếng: numSylls = Length.
2. Nếu (numSylls ≤ MaxSyllables) thì chuyển sang thực hiện hàm:
LessThan_Equal(string s)
3. Ngược lại, nếu numSylls > MaxSyllables thì:
Lấy ra MaxSyllables tiếng đầu tiên trong s (s‟ = MaxSyllables tiếng đầu tiên).
Tách từ khoá trong xâu s‟
- Nếu tìm thấy thì thực hiện tách từ khoá.
- Nếu không tìm thấy một từ nào thì bỏ từ đầu tiên.
Đặt s là phần còn lại của xâu.
Gọi đệ quy hàm đối với s: MoreThan(string s) 4. Kết thúc.
Thuật toán 3-4: Giải thuật tách từ xử lý số tiếng trong xâu lớn hơn ngưỡng MaxSyllables.
Ngoài ra, còn có một số phương pháp nhằm cải thiện hiệu quả giải pháp phân tách từ khoá:
Xử lý vấn đề từ viết tắt trong văn bản tiếng Việt:
Trong các bài báo tiếng Việt thường xuất hiện rất nhiều cụm từ viết tắt, như:
ĐHBK (Đại học Bách Khoa), HĐND (Hội đồng Nhân dân), CNTT (Công nghệ thông tin), GD (Giáo dục), … ; đồng thời cũng có những từ chuyên ngành mượn từ nước ngoài hoặc viết tắt theo tiếng nước ngoài như: con chip điện tử, trang web, spam (thư rác), IT (công nghệ thông tin), PC (máy tính), … .
Với những từ mượn hoàn toàn như (chip, web, …) thì ta có thể bổ sung vào trong từ điển thuật ngữ. Còn đối với những từ viết tắt, hoặc từ vay mượn mà có nghĩa tương ứng dịch ra tiếng Việt thì việc sử dụng những từ này thường không thống nhất trong các văn bản. Ví dụ, có những văn bản thì viết spam nhưng trong văn bản khác lại dùng là thư rác. Nếu chương trình xử lý từ viết tắt và từ đầy đủ của nó như hai từ khác nhau sẽ làm giảm chất lượng của việc chọn ra tập từ đặc trưng, từ đó làm giảm chất lượng của chương trình phân loại văn bản. Giải pháp đề xuất nhằm khắc phục vấn đề này là chuyển tất cả những từ viết tắt và từ mượn của tiếng nước ngoài về từ tương ứng của nó trong tiếng Việt (nếu có).
Như vậy, để có thể phát hiện các cụm danh từ hoặc xử lý các từ viết tắt và từ mượn của tiếng nước ngoài, ta có thể sử dụng một từ điển các từ viết tắt và từ mượn.
Trong module tách từ ta bổ sung bằng cách: trong quá trình duyệt văn bản để tách từ, nếu gặp từ chỉ có một âm tiết mà không có trong từ điển, ta sẽ duyệt trong từ điển từ viết tắt và từ mượn xem từ này có xuất hiện không. Nếu có, ta sẽ thay từ bằng từ tương ứng và cập nhật vào danh sách thuật ngữ phân tách được.
Loại bỏ các từ loại động từ:
Trong bài toán phân loại văn bản, chỉ có những thuật ngữ là kiểu danh từ mới đóng vai trò quan trọng, còn các động từ thì không có nhiều ý nghĩa. Do đó việc loại bỏ các từ loại động từ sẽ không ảnh hưởng tới kết quả phân loại, trái lại nó giúp giảm
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 39/67
số chiều của văn bản, từ đó giúp giảm không gian lưu trữ dữ liệu và thời gian xử lý chương trình.
Tiếng Việt là ngôn ngữ có cấu trúc câu và từ phức tạp, cùng một từ nhưng trong ngữ cảnh này là danh từ, nhưng trong ngữ cảnh khác lại là động từ, và cũng có thể là loại từ khác nữa. Do đó, muốn nhận biết được từ loại động từ, ta cần dựa vào phân tích ngữ nghĩa trong câu. Nhưng giải thuật phân tích ngữ nghĩa của câu là rất phức tạp và tốn nhiều thời gian xử lý, do đó việc xây dựng nó không có ý nghĩa nhiều trong chương trình này.
Để ý rằng trong tiếng Việt, rất nhiều trường hợp các động từ thường được đặt sau các từ như: “đã”, “đang”, “sẽ” (những từ giúp chỉ thời của động từ). Dựa vào đó, ta có thể loại bỏ những từ mà có từ đứng trước là những từ này.
Như vậy, ta có thể cải tiến module tách từ: trong quá trình duyệt văn bản để tách từ, nếu gặp từ chỉ có một âm tiết và là một trong các từ như “đã”, “đang”, “sẽ”, ta sẽ đánh dấu từ đó lại và loại bỏ đi từ đứng sau nó.
Mặc dù đây không phải là một biện pháp triệt để, nhưng cũng phần nào đóng góp cho mục đích tăng hiệu năng của chương trình.