Phân tích và thiết kế chức năng

Một phần của tài liệu phân loại văn bản tiếng việt sử dụng phương pháp máy hỗ trợ vector (support vector machine – svms) (Trang 44 - 79)

3.2.1 Xác định yêu cầu

Nhiệm vụ chính của đề tài là tìm hiểu phương pháp phân loại SVMs ứng dụng trong bài toán phân loại văn bản tiếng Việt, từ đó xây dựng một ứng dụng thử nghiệm nhằm thực hiện chức năng phân loại dựa trên các nghiên cứu lý thuyết về phương pháp SVMs. Việc tiền xử lý văn bản tiếng Việt đòi hỏi dựa vào một từ điển thuật ngữ tiếng Việt cho trước, chính vì vậy đòi hỏi hệ thống phải quản lý tốt danh sách thuật ngữ, thuận tiện cho việc cập nhật bổ sung các thuật ngữ mới liên quan

Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 33/67

Từ tập các văn bản mẫu đã được gán nhãn chủ nhóm, hệ thống sẽ phân tích và tìm ra các đặc điểm riêng biệt của từng nhóm. Sau đó, với mỗi một văn bản mới đưa vào, hệ thống sẽ chỉ ra tên nhóm phù hợp nhất cho văn bản này. Các văn bản sẽ được nhập vào dưới dạng tệp tin TXT hoặc thông qua chức năng tạo mới văn bản của hệ thống. Nhãn của văn bản mẫu sẽ được người dùng xác định trong quá trình nhập văn bản. Kết quả sẽ được trả ra dưới dạng thông báo tên nhóm phù hợp nhất với văn bản cần phân loại.

3.2.2 Thiết kế chức năng

Hệ thống xử lý bao gồm các chức năng sau:

Chức năng chính:

- Huấn luyện SVMs

- Kiểm tra hiệu năng SVMs

- Phân loại văn bản

Chức năng trợ giúp:

- Tóm tắt văn bản

- Quản lý từ điển

Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 34/67

3.2.2.1 Chức năng phân loại văn bản

`

Module tiền xử lý văn bản

Bộ xử lý phân loại SVMs Giao diện Người-Máy

Văn bản phân loại bằng tay (tập mẫu)

Văn bản cần phân loại

Vector biểu diễn văn bản

Kho dữ liệu

Tên nhóm của văn bản (gán nhãn nhóm)

PHÍA NGƯỜI DÙNG PHÍA HỆ THỐNG

Hình 3-2: Sơ đồ minh hoạ chức năng Phân loại văn bản. Chức năng phân loại văn bản được thực hiện bởi các bộ:

Bộ tiền xử lý văn bản: các văn bản đưa vào, gồm tập văn bản mẫu đã được

gán nhãn và văn bản cần phân loại, sẽ được biểu diễn thành các vector văn bản trước khi đi vào kho dữ liệubộ xử lý phân loại.

Kho dữ liệu: là nơi chứa các thông tin về văn bản mẫu được biểu diễn dưới

dạng vector.

Bộ xử lý phân loại SVMs: là nơi thực hiện phép xử lý phân loại dựa trên

các tham số siêu phẳng phân tách đã qua huấn luyện. Các bước thực hiện: (adsbygoogle = window.adsbygoogle || []).push({});

Nhập tập dữ liệu huấn luyện: thao tác này được thực hiện bởi người dùng, các văn bản được nhập dưới dạng tệp tin TXT.

Nhập văn bản cần phân loại: thao tác này cũng được người dùng nhập vào dưới dạng tệp tin TXT.

Vector hoá văn bản: đây là bước tiền xử lý văn bản, văn bản thô sẽ được đi qua bộ phận vector hoá văn bản, bộ phận này có nhiệm vụ chuyển từ văn bản thô sang dạng có cấu trúc (dạng vector).

Thực hiện huấn luyện SVMs: người dùng cần lựa chọn các thông số huấn luyện SVMs, sau đó chương trình sẽ thực hiện quá trình học để tìm ra các

Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 35/67

tham số siêu phẳng phân tách tối ưu. Các kết quả tham số sẽ được lưu lại dùng để thực hiện trong bước phân loại.

Phân loại văn bản: từ văn bản mới cần phân loại sau khi được vector hoá, hệ thống sẽ sử dụng các tham số của các siêu phẳng phân tách tối ưu (sau quá trình huấn luyện) để thực hiện gán nhãn cho văn bản.

Đƣa ra thông tin phản hồi: sau khi có được quyết định phân loại, hệ thống trả lại kết quả gán nhãn về phía người dùng.

3.2.2.2 Chứcnăng tiền xử lý văn bản

Đầu vào của chức năng này là văn bản thô, đầu ra là một vector biểu diễn cho văn bản dưới dạng vector tần suất.

Loại nhiễu ký tự Mã hoá ký tự Tách tiếng Tách từ khoá Loại từ dừng Thống kê từ khoá

Văn bản thô Vector biểu diễn văn bản theo tần suất xuất hiện

chỉ số các từ khoá (keyword index) chỉ số các từ khoá (keyword index) chỉ số các từ tiếng (syllable index) BỘ TIỀN XỬ LÝ VĂN BẢN

Hình 3-4: Mô hình bộ tiền xử lý văn bản. Các bước chính trong quá trình vector hoá văn bản:

Loại nhiễu ký tự: mục đích của bước này là loại bỏ các ký tự vô nghĩa không có trong từ điển thuật ngữ.

Mã hoá ký tự: trong tiếng Việt có rất nhiều loại font chữ khác nhau, chính

vì thế mà chúng ta cần thống nhất tất cả các loại font chữ về một mối để dễ dàng hơn trong quá trình xử lý. Ngoài ra, chúng ta chú ý rằng trong chữ viết còn có ký tự viết hoa, ký tự viết thường, vì thế, cần phải có biện pháp đồng nhất các ký tự này để tránh sai trong các xử lý tiếp theo.

Tách tiếng: chúng ta cần có một từ điển để mã hoá văn bản, sau khi mã hoá

ký tự thành một văn bản tiếng, ở đó văn bản được biểu diễn dưới dạng một chuỗi các tiếng (đã được mã hoá theo chỉ số có trong từ điển tiếng) được xếp kế tiếp nhau.

Sinh viên thực hiện: Hoàng Thị Nhung – Lớp HTTTA-K11 Trang 36/67

Tách từ khoá: từ văn bản được biểu diễn dưới dạng danh sách các mã tiếng,

bộ tách từ sẽ tiến hành ghép các tiếng lại thành các từ khoá có trong từ điển từ theo ưu tiên từ có số tiếng dài nhất.

Loại từ dừng (Stop Words): mục đích của bước này là loại bỏ các từ ít mang ý nghĩa trong quá trình xử lý nội dung. Quá trình xử lý này cần có một từ điển StopWords riêng do người dùng tự xây dựng.

Thống kê từ khoá: sau các bước xử lý ở trên, văn bản bây giờ được biểu

diễn dưới dạng danh sách các từ khoá được tách ra từ từ điển. Bước cuối cùng bộ vector hoá cần làm là thống kê xem các từ khoá xuất hiện bao nhiêu lần và biểu diễn cả văn bản vừa phân tích dưới dạng một vector tần suất xuất hiện (TF).

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

Như đã trình bày ở phần trên, bước tiền xử lý văn bản có ý nghĩa hết sức quan trọng, quyết định rất nhiều đến hiệu năng của chương trình xử lý. Nếu quá trình tiền xử lý văn bản có tốc độ nhanh và cho độ chính xác cao thì nhờ đó tốc độ xử lý và hiệu năng của các chức năng xử lý văn bản cũng sẽ cao.

3.3.1.1 Tiền xử lý ký tự

Để đơn giản hoá việc tách từ, với mỗi văn bản đầu vào, ta sẽ thực hiện qua bước tiền xử lý ký tự để đưa văn bản về dạng xâu chuẩn. Ở đây xâu chuẩn là xâu không có 2 dấu cách liền nhau, có dấu câu khi kết thúc câu, trước dấu câu không có dấu cách. Để có được xâu chuẩn làm tiền đề cho việc tách từ, cần thực hiện qua các bước sau: (adsbygoogle = window.adsbygoogle || []).push({});

1. Chuyển hết các ký tự chữ hoa về dạng chữ thường.

2. Dùng các dấu câu (“.” “,” “;”…) để tách văn bản thành một tập các câu. Ta có thể tách như vậy vì hai âm tiết cách nhau bởi một dấu câu sẽ không bao giờ thuộc về cùng một từ.

3. Tiến hành chuẩn hoá mỗi câu:

 Duyệt tất cả các tiếng trong câu, khi có lớn hơn 1 dấu cách đứng kề nhau thì loại bỏ, cho đến khi chỉ còn lại 1 dấu cách giữa hai tiếng.

 Loại bỏ những dấu cách ở đầu và cuối câu.

Thuật toán 3-1: Giải thuật tiền xử lý ký tự

Sau đó, ta sẽ thực hiện việc tách từ khoá trên từng câu đã được chuẩn hoá trong bước này.

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 numSyllsMaxSyllables 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). (adsbygoogle = window.adsbygoogle || []).push({});

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 (numSyllsMaxSyllables) 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 đó (adsbygoogle = window.adsbygoogle || []).push({});

Một phần của tài liệu phân loại văn bản tiếng việt sử dụng phương pháp máy hỗ trợ vector (support vector machine – svms) (Trang 44 - 79)