Giới thiệu bài toán thực nghiệm

Một phần của tài liệu Phân lớp thư điện tử sử dụng máy Vector hỗ trợ (Trang 51)

Phân lớp thư điện tử có thể được áp dụng trong nhiều lĩnh vực khác nhau. Một số nghiên cứu với thư điện tử chủ yếu tập trung vào hai mục đích chính: Lọc thư rác và phân lớp thư điện tử vào các lớp chủ đề khác nhau. Lọc thư rác có thể xem như bài toán phân lớp nhị phân, tức là chỉ có hai lớp Spam/NonSpam. Phân lớp lớp thư điện tử vào các lớp chủ đề khác nhau là bài toán tự động phân lớp thư điện tử của người dùng vào các thư mục khác nhau do người dùng tạo ra. Có thể coi đây là bài toán phân lớp đa lớp, với số lớp bằng số thư mục mà người dùng tạo ra. Trong luận văn này chúng tôi tiến hành ứng dụng thuật toán máy vector hỗ trợ đối với bài toán phân lớp thư điện tử.

4.2. Dữ liệu và chƣơng trình

Hệ thống phân lớp thư điện tử của luận văn được xây dựng dựa trên tập dữ liệu Enron (http://www.cs.cmu.edu/~enron/), là tập hợp thư điện tử lớn được thu thập và chuẩn bị theo dự án CALO (A Cognitive Assistant that Learns and Organizes). Tập dữ liệu thô bao gồm 619.446 thư điện tử của 158 người dùng hầu hết là của ban quản lý công ty Enron và được tổ chức thành các thư mục. Enron không bao gồm tài liệu đính kèm, một số thư bị xoá một phần nội dung theo yêu cầu của người dùng. Đây là nguồn tài nguyên cho các nhà nghiên cứu quan tâm đến việc phát triển các công cụ thư điện tử hiện tại hoặc để hiểu thư điện tử đang được sử dụng như thế nào. Tập dữ liệu này rất

có giá trị, vì đó là tập hợp các thư điện tử có thật (real email) được đưa ra công khai. Để thuận tiện cho thực nghiệm, chúng tôi sử dụng tập dữ liệu đã qua một vài bước xử lý từ tập Enron thô ban đầu được tải từ địa chỉ

http://www.cs.umass.edu/~ronb/enron_dataset.html. Tập dữ liệu này bao gồm thư điện tử của 7 người có số lượng thư lớn nhất là:

 Sally Beck (Chief Operating Officer): Lãnh đạo điều hành  Darren Farmer (Logistics Manager): Quản lý hậu cần

 Vincent Kaminski (Head of Quantitative Modeling Group): Nhóm trưởng nhóm mô hình số lượng

 Louise Kitchen (President of EnronOnline): Giám đốc Enron trực tuyến  Michelle Lokay (Administrative Assistant): Trợ lý giám đốc

 Richard Sanders (Assistant General Counsel) : Trợ lý luật sư chính  William Williams III (Senior Analyst): Người phân tích cao cấp Tập dữ liệu này đã qua một số bước tiền xử lý:

 Loại bỏ các thư mục liên quan không chứa thư điện tử: all_documents, calendar, contacts, deleted_items, discussion_threads, inbox, notes_inbox, sent, sent_items and _sent_mail. Đây là những thư mục có mặt trong tất cả các người dùng, chúng không được sử dụng trực tiếp bởi người dùng mà được sinh ra từ máy tính. Nhiều thư mục, như “all_documents” cũng chứa lượng lớn các thư giống nhau đã có trong các thư mục của người dùng khác.

 Loại bỏ các thư mục chứa ít hơn 3 thư điện tử.

 Loại bỏ trường X-folder ở đầu trang vì trường này chứa nhãn lớp của thư điện tử đó.

 Một số thư mục có cấu trúc phân cấp được chuyển về theo cấu trúc phẳng.

Bảng 1: Thống kê tập dữ liệu sử dụng Ngƣời dùng Số thƣ mục điện tử Số thƣ Số email của thƣ mục nhỏ nhất Số email của thƣ mục lớn nhất Beck-s 101 1971 3 166 Farmer-d 25 3672 5 1192 Kaminski-v 41 4477 3 547 Kitchen-l 47 4015 5 715 Lokay-m 11 2489 6 1159 Sanders-r 30 1188 4 420 William-w3 18 2769 3 1398

Từ bảng thống kê trên có thể thấy rằng tập dữ liệu này được phân phối không đều nhau. Số lượng email của các thư mục có sự chênh lệch rất lớn. Tất cả 7 người dùng đều có những thư mục rất nhỏ, chỉ bao gồm 3, 4 hoặc 5 email. Có những thư mục lớn, chiếm đến một nửa số email, như người dùng William-w3, Lokay-m. Hầu hết các thư mục còn lại có vài chục email.

Từ tập dữ liệu này, chúng tôi lựa chọn 5 người dùng để tiến hành thực nghiệm là: Beck-s, Farmer-d, Lokay-m, Sanders-r, William-w3. Từ bảng thống kê trên ta thấy rằng nhiều thư mục có số email quá ít để huấn luyện. Mỗi người dùng đều có những thư mục chỉ có 3, 4 hoặc 5 email. Do đó, chúng tôi cũng loại bỏ các thư mục có chứa ít hơn 10 thư điện tử. Thống kê về tập dữ liệu thử nghiệm như sau:

Bảng 2: Thống kê tập dữ liệu thử nghiệm

Ngƣời dùng Số thƣ mục Số email Số email của thƣ mục nhỏ nhất Số email của thƣ mục lớn nhất Beck-s 58 1736 10 166 Farmer-d 22 3651 10 1192 Lokay-m 10 2483 21 1159 Sanders-r 11 1133 10 420

Trong nhiều bài toán phân lớp, sự phân chia tập dữ liệu học và dữ liệu kiểm tra đều được thực hiện ngẫu nhiên. Trong thực nghiệm này, chúng tôi phân chia tập dữ liệu thử nghiệm theo tỉ lệ 2:1 tức là tập dữ liệu ban đầu được chia làm 3 phần, dữ liệu huấn luyện chiếm 2 phần, còn lại là dữ liệu kiểm tra (theo Bảng 2).

Việc lựa chọn các văn bản để kiểm thử thuật toán dựa vào những giả thiết sau:

 Các tài liệu được phân lớp thành những nhóm tách biệt. Trên thực tế, các tài liệu được phân loại một cách tương đối. Các lớp có sự giao thoa và do đó một tài liệu thuộc một phân lớp này có thể có những đặc trưng thuộc một phân lớp khác. Ta coi bài toán này là bài toán phân lớp đơn nhãn, tức là mỗi thư điện tử chỉ thuộc một lớp.

 Sự phân bố tài liệu trong một lớp không ảnh hưởng tới sự phân bố tài liệu trong lớp khác. Giả thiết này được đặt ra để có thể chuyển bài toán phân lớp nhiều lớp thành các bài toán phân lớp hai lớp.

Bộ phân lớp SVM sẽ được huấn luyện trên tập học và độ chính xác được đánh giá trên tập tài liệu kiểm tra. Tập dữ liệu kiểm tra tách biệt với tập dữ liệu học và không tham gia vào quá trình học. Vì vậy độ chính xác thu được đảm bảo tính khách quan.

Xây dựng tập đặc trƣng: Trong bài toán phân lớp văn bản, cách biểu diễn văn bản đóng vai trò rất lớn. Một tài liệu được biểu diễn dưới dạng một tập hợp các từ, mỗi từ được xem là một thuộc tính (feature) và văn bản tương ứng với một vector thuộc tính. Đôi khi, thay vì những từ đơn, các thuộc tính có thể được biểu diễn bằng các cụm từ hoặc chuỗi n từ với n >= 2. Nhận thấy rằng nhiều thuộc tính phức tạp có thể giàu thông tin hơn. Ví dụ, cụm từ “world wide web” mang nhiều thông tin hơn từng từ riêng biệt. Tuy nhiên, trong thực hành, sử dụng n-grams dẫn tới việc có quá nhiều số lượng thuộc

tính và có thể làm việc giải quyết bài toán khó khăn hơn. Theo các nghiên cứu về các phương pháp biểu diễn văn bản khác nhau, đặc biệt là khi so sánh ảnh hưởng và hiệu quả của nó thì không có cách biểu diễn văn bản nào tốt hơn cách biểu diễn bằng tập các từ riêng biệt được lấy ra từ văn bản gốc. Do đó, chúng tôi chỉ tách các thư điện tử thành tập các từ đơn.

Trước khi đánh trọng số cho các từ khoá, cần tiến hành loại bỏ các từ dừng. Từ dừng là những từ xuất hiện thường xuyên nhưng lại không có ích trong đánh chỉ mục cũng như sử dụng trong các máy tìm kiếm hoặc các chỉ mục tìm kiếm khác [23]. Thông thường, các trạng từ, giới từ, liên từ là các từ dừng. Trong tiếng Anh, người ta đã liệt kê ra danh sách các từ dừng này. Bởi vì SVMs có thể giải quyết tốt với các bài toán có số chiều lớn nên thực nghiệm không làm trích chọn thuộc tính và lựa chọn tất cả các từ mục. Mỗi văn bản được biểu diễn trên một dòng và dưới dạng vector như sau:

<lớp> <thuộc tính>:<giá trị thuộc tính> <thuộc tính>:<giá trị thuộc tính>...<thuộc tính>:<giá trị thuộc tính>

Trong đó:

 <lớp>: là các số nguyên biểu diễn chủ đề của văn bản. Trong thực nghiệm này, giả sử với người dùng Beck-s, <lớp> có giá trị từ 1 đến 58 (vì người dùng này có 58 thư mục); Người dùng Farmer, <lớp> có giá trị từ 1 đến 22.

 <thuộc tính>: là số nguyên dương, tham chiếu đến tập thuộc tính được lựa chọn trong quá trình tiền xử lý dữ liệu.

 <giá trị thuộc tính>: biểu diễn độ quan trọng của thuộc tính trong tập dữ liệu học. (adsbygoogle = window.adsbygoogle || []).push({});

Mỗi cặp thuộc tính/giá trị được phân cách nhau bởi một khoảng trắng. Cặp thuộc tính/giá trị phải được sắp xếp theo thứ tự tăng dần của thuộc tính. Các thuộc tính có giá trị bằng 0 có thể được bỏ qua.

Xét ví dụ đơn giản, tập dữ liệu dưới đây gồm 4 ví dụ và 5 thuộc tính: 0 3 0 0 1

4 1 0 0 0 0 5 9 2 0 6 0 0 5 3

Trong đó, hai ví dụ đầu thuộc lớp 1, hai ví dụ sau thuộc lớp 2 và 3. Chúng được biểu diễn dưới dạng vector như sau:

1 2:3 5:1 1 1:4 2:1 2 2:5 3:9 4:2 3 1:6 4:5 5:3

Giá trị thuộc tính có thể được tính toán bằng nhiều cách khác nhau. Cách đơn giản nhất là gán trọng số bằng một giá trị nhị phân chỉ ra từ mục có mặt hay không có mặt trong văn bản. Phương pháp khác là tính số lần xuất hiện của từ mục trong một tài liệu gọi là tần suất từ mục. Trong thực nghiệm này, chúng tôi sử dụng độ đo TFIDF (xem 3.1.3)để tính giá trị thuộc tính.

Phân lớp văn bản được coi là không mang tính khách quan theo nghĩa dù con người hay bộ phân lớp tự động thực hiện việc phân lớp thì đều có thể xảy ra sai sót. Tính đa nghĩa của ngôn ngữ tự nhiên, sự phức tạp của bài toán phân lớp được coi là những nguyên nhân điển hình nhất của sai sót phân lớp. Hiệu quả của bộ phân lớp thường được đánh giá qua so sánh quyết định của bộ phân lớp đó với quyết định của con người khi tiến hành trên một tập kiểm thử các văn bản đã được gán nhãn lớp trước. Trong thực nghiệm này, chúng tôi sử dụng độ chính xác để đánh giá năng lực của bộ phân lớp SVM. Độ chính xác được tính đơn giản bằng số ví dụ được bộ phân lớp dự đoán đúng trên tổng số ví dụ kiểm tra.

Quá trình tiền xử lý, đưa mỗi email ban đầu thành vector thuộc tính, tôi khai thác và bổ sung mã nguồn của học viên Nguyễn Thị Hương Thảo [2].

Để thực hiện phân lớp thư điện tử bằng phương pháp SVM, tôi khai thác mã nguồn thư viện LIBSVM phiên bản 2.84, được đưa ra vào tháng 4- 2007 tại địa chỉ http://www.csie.ntu.edu.tw/~cjlin/libsvm/ . LIBSVM là một thư viện xây dựng cho bộ phân lớp máy vector hỗ trợ của hai tác giả Đài Loan là Chih-Chung Chang và Chih-Jen Lin[6]. LIBSVM thực hiện phân lớp đa lớp theo kiểu “một-đấu-một” (one-agains-one), tức là cứ với hai lớp thì sẽ huấn luyện một bộ phân lớp. Và như vậy, sẽ có tổng cộng k(k-1)/2 bộ phân lớp, với k là số lớp. Để phân lớp một tài liệu X chưa biết, thuật toán thực hiện như sau: Đối với hai lớp thứ i và thứ j, X được phân lớp bằng bộ phân lớp Cij được huấn trên hai lớp này. Nếu X thuộc lớp i thì điểm số cho lớp i được tăng lên 1, ngược lại nếu X thuộc lớp j thì điểm số cho lớp j được tăng lên 1. X sẽ nằm trong lớp có điểm số cao nhất. Trong trường hợp có hai lớp có điểm số bằng nhau, ta chỉ đơn giản chọn lớp có số thứ tự nhỏ hơn.

Vì LIBSVM xử lý giá trị thuộc tính trong khoảng [-1,1] nên sau khi đưa tài liệu về dạng vector với giá trị thuộc tính là tần số TFIDF, chúng tôi sử dụng chương trình svm-scale do LIBSVM hỗ trợ để đưa giá trị TFIDF về theo tỉ lệ [-1,1].

4.3. Môi trƣờng thực nghiệm

Thực nghiệm được tiến hành trên cấu hình máy liệt kê ở Bảng 3. Bảng 3: Cấu hình máy tính

Thành phần Chỉ số

CPU PIV, 2.00GHz

RAM 256 MB

4.4. Kết quả thực nghiệm và đánh giá

4.4.1. Độ chính xác của bộ phân lớp khi thử nghiệm với tập kiểm tra

Lựa chọn tham số cho mô hình.

LIBSVM cho phép lựa chọn hàm nhân trong quá trình học bộ phân lớp. Có 4 hàm nhân được tích hợp trong LIBSVM: Hàm tuyến tính, hàm đa thức, hàm xuyên tâm cơ sở (radial basis function) và hàm xích ma. Để lựa chọn hàm nhân phù hợp, chúng tôi sử dụng kỹ thuật kiểm tra chéo trên tập dữ liệu học; nghĩa là chia tập dữ liệu huấn luyện thành n phần bằng nhau, mỗi phần lần lượt được kiểm tra bằng bộ phân lớp được huấn luyện trên n-1 phần còn lại. Trong thực nghiệm này chúng tôi chọn n = 10. Dưới đây là một số hình ảnh về quá trình thực nghiệm:

Hình 12. Thực nghiệm với kiểu hàm nhân tuyến tính đối với người dùng Becks

Kết quả thu được ứng với từng hàm nhân đối với 5 người dùng được thống kê trong Bảng 4.

Bảng 4: Độ chính xác của bộ phân lớp ứng với từng hàm nhân

Hàm tuyến tính Hàm đa thức Hàm xuyên tâm cơ sở Hàm xích ma Beck-s 47.75% 9.43% 9.43% 9.43% Farmer-d 75.04% 32.58% 32.58% 32.58% Lokay-m 74.67% 46.62% 46.62% 46.62% Sanders-r 64.74% 36.70% 36.70% 36.70% William-w3 95.25% 50.93% 50.93% 50.93%

Từ bảng kết quả này, chúng tôi nhận được đồ thị biểu diễn độ chính xác của bộ phân lớp SVM khi áp dụng các hàm nhân khác nhau như sau:

0.00% 20.00% 40.00% 60.00% 80.00% 100.00% 120.00% Hàm tuyến tính Hàm đa thức Hàm xuyên tâm cơ sở Hàm xích ma Kiểu hàm nhân Đ ộ ch ín h xá c Beck-s Farmer-d Lokay-m Sanders-r William-w3

Từ biểu đồ trên ta thấy với cả 5 người dùng, sử dụng hàm nhân tuyến tính cho độ chính xác cao hơn so với 3 hàm nhân còn lại. Do đó, chúng tôi lựa chọn hàm nhân tuyến tính cho các thực nghiệm tiếp theo.

Với tỉ lệ phân chia tập dữ liệu học/dữ liệu kiểm tra là 2:1, chúng tôi thực nghiệm trên tập dữ liệu kiểm tra, áp dụng hàm nhân tuyến tính.

Đầu tiên, sử dụng svm-train để huấn luyện dữ liệu trên tập dữ liệu huấn luyện train_scale.tr, tham số của mô hình được ghi vào model. Quá trình này được biểu diễn ở hình dưới:

Hình 13 - Đồ thị biểu diễn độ chính xác của bộ phân lớp SVM khi áp dụng các hàm nhân khác nhau

Hình 14. Sử dụng svm-train để huấn luyện trên tập dữ liệu huấn luyện train_scale.tr (adsbygoogle = window.adsbygoogle || []).push({});

Sau khi huấn luyện, sử dụng svm-predict để kiểm tra trên tập test_scale.t, kết quả dự đoán được ghi vào file output:

Hình 15. Độ chính xác khi thử nghiệm trên tập kiểm tra của người dùng Becks

Kết quả thu được sau khi thử nghiệm trên tập kiểm tra đối với cả 5 người dùng được biểu diễn ở Bảng 5.

Bảng 5. Độ chính xác của bộ phân lớp khi thử nghiệm trên tập kiểm tra

Beck-s Farmer-d Sander-r Lokay-m William-w3

51.70% 75.56% 70.81% 78.67% 95.82%

Từ kết quả này, ta có đồ thị biểu diễn độ chính xác của bộ phân lớp đối với 5 người dùng là: 51.70% 75.56% 70.81% 78.67% 95.82% 0.00% 20.00% 40.00% 60.00% 80.00% 100.00% 120.00%

Beck-s Farmer-d Sander-r Lokay-m William-w3

Ngư?i dùng Đ ? c h ín h x ác

Từ biểu đồ trên ta thấy rằng độ chính xác thu được của 5 người dùng không cao lắm. Người dùng William-w3 đạt độ chính xác rất cao 95.82%, trong khi đó Beck-s chỉ đạt 51.70%. Kết quả thu được như vậy theo tôi vì tập dữ liệu học chưa đủ lớn để huấn luyện mô hình, trong khi số lớp lại rất nhiều. Beck-s có 58 thư mục, tức là ta phải gán các email vào 58 lớp. Trong khi đó, tổng số email huấn luyện của 58 lớp này 1.177 email, số email của mỗi lớp lại không đồng đều nhau nên kết quả thu được tương đối thấp.

Một phần của tài liệu Phân lớp thư điện tử sử dụng máy Vector hỗ trợ (Trang 51)