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.
3.3.1.3 Trích chọn tập từ đặc trƣng
Sau quá trình phân tách từ trên toàn bộ các văn bản huấn luyện, ta thu được một tập hợp các thuật ngữ có ý nghĩa xuất hiện trong các văn bản. Gọi T = {t1, …, tm} là tập hợp các từ khoá xuất hiện trong toàn bộ không gian huấn luyện. Mặc dù T không phải là tập tất cả các từ khoá có trong từ điển tiếng Việt (khoảng hơn 70.000 từ), nhưng nó cũng chứa một số lượng rất lớn. Trong số đó có những từ mà sự xuất hiện của nó thì không quan trọng, như những từ xuất hiện quá ít, hoặc quá nhiều (lúc đó chúng có ý nghĩa như từ dừng). Vì vậy, cần có biện pháp lựa chọn tập từ khoá đặc trưng có ý nghĩa nhất dùng biểu diễn cho văn bản.
Như đã trình bày trong chương 2 về một số phương pháp trích chọn thông tin, đây là những phương pháp giúp giảm số chiều biểu diễn văn bản, nhưng không làm ảnh hưởng đến kết quả của chương trình phân loại, mà ngược lại nó làm giảm không gian bộ nhớ, tăng tốc độ thực hiện chương trình. Để thực hiện được việc này, ta sẽ tiến hành như sau:
Bước 1: với số lượng văn bản lớn, thì những từ có tần xuất văn bản thấp không được coi là đặc trưng để biểu diễn văn bản (xét trường hợp bài toán phân loại). Do đó, với mỗi thuật ngữ, ta kiểm tra số lượng văn bản mà nó xuất hiện trong đó, nếu số lượng lớn hơn ngưỡng limitOccur cho trước thì mới tiếp tục kiểm tra giá trị thông tin của nó.
Bước 2: Sử dụng hàm ước lượng để tính giá trị thông tin cho từ hiện tại. Nếu giá trị thông tin của từ lớn hơn ngưỡng limitInfoValue cho trước, thì từ đó sẽ được chọn làm từ đặc trưng.
Trong chương trình có sử dụng hai hàm ước lượng thông tin:
Information Gain: IG(tk,ci) =
{ , }{ , } ( ). ( ) ) , ( log ). , ( i ic k k c c t t t P t P c c t P c t P
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 40/67 Chi-square: χ2(tk,ci) = ) ( ). ( ). ( ). ( )] , ( ). , ( ) , ( ). , ( .[ | | i i k k i k i k i k i k c P c P t P t P c t P c t P c t P c t P Tr trong đó:
Tr: là tổng số văn bản huấn luyện.
tk, tk: tương ứng với ký hiệu trong văn bản có chứa hay không chứa từ khoá tk.
ci, ci: thể hiện văn bản đang xét có thuộc chủ đề ci hay không.
Như vậy, tập đặc trưng sẽ là tập hợp tất cả các từ thoả mãn đồng thời cả hai điều kiện giới hạn trên, …
Nhận xét:
Sau khi thực hiện quá trình chọn tập từ đặc trưng, các thuật ngữ thu được trong tập T’ giảm đáng kể so với T (kích thước giảm từ 20-100 lần). Vì số chiều trong T
được giảm nhiều, nên việc biểu diễn các văn bản ở dạng vector thưa sẽ được thực hiện đơn giản, tiết kiệm được nhiều thời gian, góp phần tối thiểu thời gian thực hiện phân loại văn bản và tăng độ chính xác của chương trình phân loại.
3.3.1.4 Lựa chọn mô hình biểu diễn văn bản
Mô hình không gian vector là một mô hình đơn giản, nhưng đồng thời lại rất phù hợp với bài toán phân loại văn bản bằng phương pháp Support Vector Machines. Trong chương trình em đã lựa chọn mô hình biểu diễn vector thưa dựa trên mô hình tần suất TFxIDF để biểu diễn văn bản. Công thức tính trọng số của thuật ngữ trong một văn bản theo mô hình này như sau:
𝑤𝑖𝑗 = (1 − log 𝑓𝑖𝑗 )𝑙𝑜𝑔 𝑚
𝑖 nếu 𝑡𝑖 ∈ 𝑑𝑗 0 nếu 𝑡𝑖 ∉ 𝑑𝑗
trong đó:
fij – là số lần xuất hiện của thuật ngữ ti trong văn bản dj.
m – là số lượng văn bản huấn luyện.
hi – là số văn bản mà thuật ngữ ti xuất hiện.
Ở đây, ti là các thuật ngữ thuộc tập từ đặc trưng đã chọn ra được từ bước trên.
Nhận xét:
Nếu với mỗi loại văn bản, ta lại sử dụng một tập từ đặc trưng riêng, khi đó có bao nhiêu loại văn bản thì mỗi văn bản huấn luyện hoặc kiểm tra sẽ phải biểu diễn ở dạng vector thưa bấy nhiêu lần, như vậy sẽ tốn thời gian và bộ nhớ. Thay vào đó, ta sử dụng một tập từ đặc trưng chung cho tất cả các loại văn bản, thì mỗi văn bản sẽ chỉ phải biểu diễn vector thưa một lần theo tập từ khoá này, và không còn phụ thuộc vào số loại văn bản nữa.
3.3.1.5 Cài đặt module tiền xử lý văn bản
Module tiền xử lý văn bản bao gồm tiền xử lý cho dữ liệu huấn luyện và tiền xử lý cho dữ liệu kiểm tra phân loại. Đây là hai quá trình khác nhau, vì việc tiền xử lý cho tập huấn luyện là quá trình lựa chọn ra tập từ khoá đặc trưng chung. Sau đó, tập từ khoá đặc trưng này được dùng biểu diễn cho tập dữ liệu kiểm tra.
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 41/67
Sau đây là lược đồ tiền xử lý cho tập văn bản huấn luyện và tập văn bản kiểm tra:
Hình 3-5: Lược đồ tiền xử lý tập dữ liệu và trích chọn tập đặc trưng.
Trên lược đồ tiền xử lý của hai tập dữ liệu huấn luyện và kiểm tra đã cho thấy các quá trình: Nạp từ điển, Tiền xử lý ký tự và Tách từ và loại từ dừng. Trong đó, các quy trình thực hiện các bước Tiền xử lý ký tự và Tách từ và loại từ dừng đã được chỉ ra trong những phần trên.
Ta hãy xem xét quy trình Nạp từ điển dưới dạng bảng băm sau đây. Việc lưu từ điển ở dạng bảng băm có ý nghĩa quan trọng, vì đây là cách thức lưu trữ cho phép truy cập trực tiếp tới một phần tử nếu biết từ khoá hoặc chỉ số của phần tử đó. Cách truy cập này sẽ làm giảm thời gian đáng kể so với việc phải duyệt toàn bộ mảng từ để tìm kiếm xem một từ có xuất hiện trong mảng từ đó hay không.
1. Đọc vào từng dòng của file từ điển, mỗi dòng tương ứng với một từ khoá trong từ điển.
2. Với mỗi xâu, tinh chỉnh về dạng xâu chuẩn.
3. Bổ sung vào một ArrayList (chứa toàn bộ danh sách các từ trong từ điển khi kết thúc quá trình đọc file).
4. Từ mảng ArrayList thu được, tính bảng băm của từ điển đó (dựa vào lớp HashTable trong C#).
Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 42/67
Sự khác biệt trong hai quá trình tiền xử lý văn bản huấn luyện và tiền xử lý văn bản kiểm tra là sau quá trình tiền xử lý tập văn bản huấn luyện, ta thu được tập thuật ngữ đặc trưng chung (RepresentTermUnion), tập thuật ngữ này sau đó được dùng để biểu diễn vector thưa cho toàn bộ văn bản trong tập dữ liệu kiểm tra. Các vector trọng số trong tập văn bản kiểm tra có thể được tính theo mô hình TFxIDF hoặc TF (nếu số lượng văn bản trong tập kiểm tra nhỏ).
3.3.2 Xây dựng chức năng phân loại SVMs
Phương pháp phân loại văn bản theo SVMs là một phương pháp học có giám sát (giám sát bởi tập dữ liệu huấn luyện). Do đó, trước khi có thể đưa ra quyết định phân loại một văn bản nào đó, chương trình cần được huấn luyện trên bộ dữ liệu huấn luyện đã được phân loại trước.
Như vậy, để thực thi quá trình phân loại, trước hết chương trình cần được phân tách thành hai module riêng biệt:
Module huấn luyện: đầu vào là tập dữ liệu huấn luyện đã qua tiền xử lý và các tham số cần thiết khác (tham số trích chọn tập đặc trưng, tham số v, tham số hàm nhân Kernel). Với mỗi chủ đề văn bản nhất định, thực hiện giải bài toán tối ưu để tìm ra một siêu phẳng phân loại văn bản chủ đề đó. Đầu ra sẽ là những tham số của siêu phẳng: b và α* = (α1, α2, …, αm).
Module kiểm tra: đầu vào là tập văn bản kiểm tra đã qua tiền xử lý, và các tham số của siêu phẳng tìm được qua quá trình huấn luyện, vector trọng số của văn bản huấn luyện. Tiến hành xét dấu của văn bản kiểm tra với từng chủ đề, sau đó đưa ra danh sách nhãn (chủ đề) phù hợp với văn bản. Đánh giá kết quả của quá trình kiểm tra thông qua các công thức đánh giá hiệu năng chương trình.
3.3.2.1 Module huấn luyện SVMs