Với một ví dụ mới z, thì z sẽ được phân vào lớp nào? Mục tiêu: xác định phân lớp phù hợp nhất với z b Để tìm được phân lớp cĩ thể nhất đối với z Giả sử trong phân loại Nạve Bayes:
Trang 1ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CƠNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG
- -BÀI TẬP LỚN Mơn: Xử Lý Ngơn Ngữ Tự Nhiên
Đề tài: Phân nhĩm văn bản sử dụng phương pháp học Nạve Bayes
GV hướng dẫn: PGS.TS Lê Thanh Hương
Sinh viên thực hiện:
Phạm Chiến Thắng 20082485 Nguyễn Mạnh Hoằng 20081088
Nguyễn Tuấn Anh 20080075
Hà Nội 04/2012
Contents
Trang 2I Mơ tả bài tốn 3
II Phương pháp giải quyết bài tốn 4
1 Vector biểu diễn văn bản 4
2 Phân loại Nạve Bayes 4
3 Kịch bản ứng dụng 7
III Giao diện, chức năng chương trình 8
1 Chức năng phân tách và trainning dataset 8
2 Chức năng tiền xử lý 9
3 Chức năng phân loại văn bản 11
IV Đánh giá độ chính xác phân loại 13
V Kết luận 15
VI Phụ lục 15
Trang 3I Mô tả bài toán.
Ngày nay cùng với sự phát triển ngày càng nhanh của internet là nhu cầu tìm kiếm, trong đó tìm kiếm văn bản là một trong những phần tìm kiếm chủ đạo nhất Việc phân loại văn bản theo các nhãn sẽ hỗ trợ rất nhiều cho việc truy vẫn
cơ sở dữ liệu, từ đó giúp nâng cao hiệu năng của các bộ tìm kiếm, nâng cao tổ chức dữ liệu, Bài toán phân loại văn bản được đặt ra để giải quyết vấn đề đó
a Đầu vào:
Một tập các văn bản biểu diễn dưới dạng vector với thuộc tính là các từ khóa
và số lần xuất hiện từ khóa của văn bản đó
b Xử lý:
Dựa vào vector biểu diễn mỗi văn bản, gán nhãn phù hợp cho văn bản đó
c Đầu ra:
Mỗi văn bản trong tập các văn bản đầu vào được gán nhãn phù hợp
Trang 4II Phương pháp giải quyết bài tốn.
Nạve Bayes là một phương pháp học đơn giản và cho hiệu năng khá cao, rất phù hợp trong bài tốn phân loại văn bản, cụ thể việc áp dụng như sau:
1 Vector biểu diễn văn bản.
Mỗi văn bản trong dataset được biểu diễn dưới dạng vector n+1 chiều:
keyword[1] numberRepeated[1]
keyword[2] numberRepeated[2]
keyword[n] numberRepeated[n]
label labelName
Với n là số từ khĩa trong văn bản
Tập các label cĩ thể phân loại:
1 Antibodies
2 Carcinoma
4 In-Vitro
5 Molecular-Sequence-Data
6 Pregnancy
7 Prognosis
8 Receptors
9 Risk-Factors
10 Tomography
2 Phân loại Nạve Bayes.
Biểu diễn bài tốn phân loại:
Một tập học D_train, trong đĩ mỗi ví dụ học x được biểu diễn là một
vector n+1 chiều (keyword[1], keyword[2], …, keyword[n], label)
Tập các nhãn lớp (label) C = { Antibodies , Carcinoma , DNA, In-Vitro, Molecular-Sequence-Data, Pregnancy, Prognosis, Receptors, Risk-Factors, Tomography}
Trang 5 Với một ví dụ mới z, thì z sẽ được phân vào lớp nào?
Mục tiêu: xác định phân lớp phù hợp nhất với z
b
Để tìm được phân lớp cĩ thể nhất đối với z
Giả sử trong phân loại Nạve Bayes: xác suất từ khĩa tj xuất hiện đối với lớp
ci là độc lập đối với vị trí của từ khĩa đĩ trong văn bản
Đối với mỗi phân lớp ci, tính giá trị likehood của văn bản d đối với ci:
Phân lớp văn bản d thuộc vào lớp c*
Vấn đề 1:
Nếu khơng cĩ ví dụ nào gắn với phân lớp ci cĩ giá trị thuộc tính xj P(xj, ci) = 0, và vì vậy:
Trang 6 Giải pháp: sử dụng ước lượng Bayes
Vấn đề 2:
Giới hạn về độ chính xác trong tính toán của máy tính
P(xj, ci) < 1, đối với mọi thuộc tính xj và phân lớp ci
Trong dataset nhóm sử dụng có số thuộc tính rất lớn nên:
Giải pháp: sử dụng hàm logarit cho các giá trị xác suất:
3 Kịch bản ứng dụng.
Giai đoạn học (trainning phase), sử dụng một tập học Đối với mỗi phân lớp
có thể (mỗi nhãn lớp) ci ∈ C:
Tính giá trị xác suất trước: P(ci)
Đối với mỗi giá trị thuộc tính xj, tính giá trị xác suất xảy ra của giá trị thuộc tính đó đối với một phân lớp ci: P(xj|ci)
Giai đoạn phân lớp (classification phase), đối với một ví dụ mới:
Đối với mỗi phân lớp ci ∈ C, tính giá trị của biểu thức:
Trang 7 Xác định phân lớp của z là có thể nhất c*:
Trang 8III Giao diện, chức năng chương trình.
1 Chức năng phân tách và trainning dataset.
Bộ dataset sử dụng trong chương trình là được lấy từ bộ dữ liệu của weka, link download tài liệu: http://www.cs.waikato.ac.nz/ml/weka/index_datasets.html
Khởi động ứng dụng sẽ cho phép người dùng lựa chọn tỉ lệ giữa bộ D_train và
D_test sau đó người dùng có thể sử dụng chức năng “Trainning” Chức năng
này thực hiện hai công việc chính:
Tách bộ dataset làm bộ D_train và D_test.
Tính xác suất trước P(ci) cho mỗi phân lớp ci và xác xuất xuất hiện của mỗi từ khóa trong bộ từ khóa với mỗi phân lớp tương ứng
Trang 9Sau khi thực hiện, các kết quả được lưu vào CSDL để tiện tính toán và phân loại sau này
2 Chức năng kiểm thử.
Khi chọn chức năng này chương trình sẽ thực hiện gán nhãn mới cho các văn bản trong tập dataset sau đó tính toán độ chính xác phân loại của chương
Độ chính xác phân loại đối với mỗi nhãn được đánh giá độ chính xác (Precision) Sau đó độ chính xác của chương trình sẽ được đánh giá bằng Macro-Averaging, là trung bình cộng của độ chính xác phân loại đối với mỗi phân lớp
Trang 10Kết quả sẽ được lưu vào CSDL để kiểm tra, xem xét kết quả.
Trang 113 Chức năng phân loại văn bản.
Chức năng này sẽ thực hiện phân loại văn bản thực đã qua bước tiền xử lý Kết quả được lưu vào CSDL và trình bày cho người dùng xem dưới dạng:
Trong đó bảng “Result on real data” cho biết tên văn bản, nhãn đầu vào và nhãn được ứng dụng gán cho dựa vào giải thuật
Trang 12Khi bấm vào “More detail…” hệ thống sẽ cho biết thông tin chi tiết về văn bản gồm: nội dung văn bản, các từ khóa xuất hiện trong tập từ khóa, xác suất phân loại với các nhãn lớp
Trang 13IV Đánh giá độ chính xác phân loại.
a Phương pháp đánh giá.
Trong chương trình phân loại nhóm em sử dụng phương pháp đánh giá Hold-out (Splitting) Việc lựa chọn phương pháp đánh giá này của nhóm là phù hợp với bộ dataset tương đối lớn (|D| = 11162)
Khi thực hiện kiểm thử, chương trình cho phép người dùng lựa chọn tỉ lệ
trong việc phân tách tập dữ liệu D thành D_train và D_test với các lựa chọn
70%-30%, 60%-40%, 50%-50%, 40%-60%
b Độ chính xác phân loại.
Trong chương trình nhóm em sử dụng hàm đánh giá độ chính xác phân loại
là Macro-Averaging
Kết quả thực hiện gán nhãn văn trong tập D_test, thực hiện với mỗi lựa chọn 5 lần,
lấy kết quả trung bình như sau:
Nhận xét:
- Độ chính xác phân loại của chương trình thay đổi không đáng kể khi thay
đổi tỉ lệ giữa D_train:D_test, điều này cho thấy bộ dữ liệu này lớn và phân
bố đều trên các nhãn
Trang 14- Độ chính xác phân loại chưa cao (~80%), sở dĩ có kết quả như vậy vì các nhãn của các văn bản có nội dung khá gần nhau (đều về những vấn đề trong
y học), vì vậy với độ chính xác phân loại như vậy là hoàn toàn chấp nhận được
Trang 15V Kết luận.
- Nạve Bayes là phương pháp cài đặt tương đối đơn giản, hiệu quả trong bài tốn phân loại văn bản
- Nạve Bayes thực hiện phân loại cho kết quả tốt
- Thời gian trả kết quả tương đối nhanh
- Cĩ thể dễ diễn giải với người dùng
VI Phụ lục.
- Chương trình demo được viết bằng java (jdk 1.6)
- Sử dụng IDE Netbean 6.9.1
- Sử dụng MySQL 1.2.17
- Sử dụng thư viện iText-2.1.7 để xử lý lấy nội dung file pdf
Cài đặt chương trình
- Tạo thư mục “Nạve Bayes” tại “C:/”
- Copy file config.cfg vào thư mục trên, sửa username và password vào MySQL cho chính xác
- Chạy file backup naiveBayesDocumentClassificationDatabase.sql để copy data cho chương trình
- Chạy chương trình bằng file Classifier.jar
Trang 16- DANH MỤC TÀI LIỆU THAM KHẢO
1 Bài giảng Xử lý ngôn ngữ tự nhiên – PGS.TS Lê Thanh Hương
2 Bài giảng Học máy, Trí tuệ nhân tạo – TS Nguyễn Nhật Quang
3 http://www.cs.waikato.ac.nz/ml/weka/index_datasets.html
4 Etc…