Tải bản đầy đủ (.doc) (16 trang)

báo cáo sử 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 naïve bayes

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (366.49 KB, 16 trang )

ĐẠ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 Naï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
Đinh Đức Tân 20082311
Nguyễn Tuấn Anh 20080075
Hà Nội 04/2012
Contents
1
Contents 1
I.Mô tả bài toán 3
II.Phương pháp giải quyết bài toán 4
1. Vector biểu diễn văn bản 4
2.Phân loại Naïve Bayes 4
3.Kịch bản ứng dụng 6
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 kiểm thử 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
2
I. 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.
3
II. Phương pháp giải quyết bài toán.
Naï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 toá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
3 DNA
4 In-Vitro

5 Molecular-Sequence-Data
6 Pregnancy
7 Prognosis
8 Receptors
9 Risk-Factors
10 Tomography
2. Phân loại Naïve Bayes.

Biểu diễn bài toá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}.
 Với một ví dụ mới z, thì z sẽ được phân vào lớp nào?
4

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 Naïve Bayes: xác suất từ khóa t
j
xuất hiện đối với lớp
c
i
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 c

i
, tính giá trị likehood của văn bản d đối với c
i
:

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 c
i
có giá trị thuộc tính x
j
P(x
j
, c
i
) = 0, và vì vậy:
5
 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(x
j
, c
i
) < 1, đối với mọi thuộc tính x

j
và phân lớp c
i
.

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) c
i
∈ C:
 Tính giá trị xác suất trước: P(c
i
).
 Đối với mỗi giá trị thuộc tính x
j
, 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 c
i
: P(x
j
|c
i
)
 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 c
i

∈ C, tính giá trị của biểu thức:
6
 Xác định phân lớp của z là có thể nhất c*:
7
III. 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: />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(c
i
) cho mỗi phân lớp c
i
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.
8
Sau 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.
9
Kết quả sẽ được lưu vào CSDL để kiểm tra, xem xét kết quả.
10

3. 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.
11
Khi 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.
12
IV. Đá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:
70%-30% 60%-40% 50%-50% 40%-60%
Lần 1 73.126 79.657 78.782 78.473
Lần 2 78.813 78.781 79.125 77.796
Lần 3 79.110 78.854 78.619 78.568
Lần 4 78.917 78.729 78.763 78.632
Lần 5 78.733 78.920 77.987 78.827
Trung bình 77.740 78.988 78.655 78.459

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.
13
- Độ 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.
14
V. Kết luận.
- Naïve Bayes là phương pháp cài đặt tương đối đơn giản, hiệu quả trong bài
toán phân loại văn bản.
- Naï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 “Naï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
15
- 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. />4. Etc…
16

×