3.5.1Ý tƣởng
Ý tƣởng: cơ bản của cách tiếp cận Naïve Bayes là sử dụng xác suất có điều kiện giữa từ và chủ đề để dự đoán xác suất chủ đề của một văn bản cần phân loại. Điểm quan trọng của phƣơng pháp này chính là ở chỗ giả định rằng sự xuất hiện của tất cả các từ trong văn bản đều độc lập với nhau. Giả định đó làm cho việc tính toán NB hiệu quả và nhanh chóng hơn các phƣơng pháp khác vì không sử dụng việc kết hợp các từ để đƣa ra phán đoán chủ đề. Kết quả dự đoán bị ảnh hƣởng bởi kích thƣớc tập dữ liệu, chất lƣợng của không gian đặc trƣng…
Mô hình tổng quát việc phân loại:
Hình 3.3 Mô tả bƣớc xây dựng bộ phân lớp 3.5.1Hƣớng dẫn cài đặt
Thuật toán gồm 2 giai đoạn huấn luyện và phân lớp:
Huấn luyện: tính và
Đầu vào:
Các vector đặc trƣng của văn bản trong tập huấn luyện (Ma trận MxN, với M là số vector đặc trƣng trong tập huấn luyện, N là số đặc trƣng của vector).
Tập nhãn/lớp cho từng vector đặc trƣng của tập huấn luyện. Đầu ra:
Các giá trị xác suất và . Công thức tính đã làm trơn Laplace
|docsi|: số văn bản của tập huấn luyện thuộc phân lớp i.
|total docs|: số văn bản trong tập huấn luyện.
m số phân lớp Cài đặt:
Khởi tạo mảng A, B có kích thƣớc m.
Duyệt qua các văn bản trong tập dữ liệu, đếm số văn bản trong mỗi phân lớp lƣu vào A.
Tính xác suất cho từng phân lớp theo công thức trên và lƣu vào mảng B. Công thức tính đã làm trơn Laplace:
| |
Trong đó:
| |: Số văn bản trong trong phân lớp i có đặc trƣng thứ k mang giá trị xk. (hay số văn bản trong lớp i, có xuất hiện hoặc không xuất hiện đặc trƣng k)
: Số văn bản của tập huấn luyện thuộc phân lớp i.
Số giá trị có thể có của đặc trƣng thứ k Cài đặt:
Với vector đặc trƣng nhƣ mô tả bên trên, dk ở đây mang giá trị là 2, tƣơng ứng với xuất hiện và không xuất hiện. Do chỉ có 2 giá trị, ta có thể tính nhanh xác suất không xuất hiện theo công thức ̅
Khởi tạo mảng 3 chiều C, chiều 1 có kích thƣớc là m (số phân lớp), chiều 2 có kích thƣớc là N (số đặc trƣng), chiều 3 có kích là 2 (dk) để lƣu các giá trị .
Duyệt qua các văn bản trong tập dữ liệu, tiến hành thống kê các chỉ số cần thiết để tính xác suất theo công thức trên và lƣu vào mảng C.
Phân lớp:
Vector đặc trƣng của văn bản cần phân lớp.
Các giá trị xác suất và . Đầu ra:
Nhãn/lớp của văn bản cần phân loại.
Công thức tính xác suất thuộc phân lớp i khi biết trƣớc mẫu X
∏
Dựa vào vector đặc trƣng của văn bản cần phân lớp, áp dụng công thức trên tính xác suất thuộc từng phân lớp cho văn bản, và chọn ra lớp có xác suất cao nhất.
Bảng 3.1 Bảng phân lớp
Docs Var Bit Class
Doc1 1 0 Math Doc2 0 1 Comp Doc3 1 1 Comp Doc4 1 0 Math Doc5 0 1 Math Doc6 0 1 Comp ̅̅̅̅̅ ( ̅̅̅̅| ) ̅̅̅̅̅ ( ̅̅̅̅| ) Docnew = (1,0) Vậy văn bản mới thuộc lớp Math.
CHƢƠNG 4: XÂY DỰNG CHƢƠNG TRÌNH
Thông qua kiến thức có đƣợc tìm hiểu thuật toán phân loại văn bản chúng em đã xây dựng chƣơng trình phân loại tài liệu tiếng Việt thuộc lĩnh vực công nghệ thông tin.
Chƣơng trình đƣợc viết bằng ngôn ngữ Visual Basic dot NET. Chƣơng trình đƣợc xây dựng nhằm mục đích phân loại các bài báo khoa học thuộc 9 chuyên ngành trong lĩnh vực công nghệ thông tin, ngoài ra còn cho phép huấn luyện những đề tài theo ý muốn của ngƣời sử dụng khi có tập dữ liệu chuẩn. Kết nối cơ sở dữ liệu cho phép ngƣời dùng có thể thao tác thêm sửa xóa dữ liệu nhƣ: từ điển, từ phổ thông, chuyên ngành…vv.
4.1 Xây dựng cơ sở dữ liệu
Trong quá trình xây dựng chƣơng trình xây dựng phân loại văn bản cần trải qua các bƣớc nhƣ: huấn luyện văn bản, phân loại văn bản và chƣa kể đền các bƣớc nhỏ trong quá trình thực hiện nhƣ: tách từ, loại bỏ ký tự đặc biệt, xóa topsword, giữ lại các từ có nghĩa nên đòi hỏi phải có một cơ sở dữ liệu để lƣu trữ thông tin cần thiết
4.1.1Từ điển tiếng việt
Bảng 4.1 Thuộc tính thực thể
STT TÊN FIELD DỄN GIẢI KIỂU KÍCH CỠ
1 ChuyenNganhID Mã chuyên ngành Số nguyên
2 ChuyenNganh Tên chuyên ngành Chuỗi 100
3 UserID Mã tài khoản Số nguyên
4 Pass Mật khẩu tài khoản Chuỗi 50
5 UserName Tên tài khoản Chuỗi 50
6 Fullname Tên đầy đủ của tài khoản Chuỗi 50
7 Sex Giới tính Số nguyên
9 WordDic_ID Mã từ điển Số thực
10 WordDic Từ điển Chuỗi 256
11 TPT_ID Mã Từ phổ thông Số thực
12 TPT Từ phổ thông Chuỗi 256
13 Tu_ID Mã từ đƣợc tách Số nguyên
14 IDF Số văn bản có chứa từ Số thực
15 Tu Từ đƣợc tách Chuỗi MAX
16 WordWeight Trọng số của từ Số thực 17 TuCN_ID Mã từ chuyên ngành Số nguyên
18 TuCN Mã từ Số thực MAX
19 BaiBao_ID Mã bài báo Số nguyên
20 BaiBao Bài báo Chuỗi 256
21 DuongDanBB Đƣờng dẫn bài báo Chuỗi MAX
22 BaiBaoPL_ID Mã bài báo đã phân loại Số nguyên
23 BaiBaoPL bài báo phân loại Chuỗi
24 TenChuyenNganh Tên chuyên ngành Chuỗi 25 WordID Mã từ của file tạm Số nguyên
26 Word Từ của file tạm Chuỗi
4.1.2Mô tả thực thể
Bảng 4.2 Bảng Chuyên ngành
ChuyenNganh STT TÊN FIELD DỄN GIẢI KIỂU
ChuyenNganh_ID 1 ChuyenNganhID Mã chuyên ngành Số nguyên ChuyenNganh 2 ChuyenNganh Tên chuyên ngành Chuỗi
Tên thực thể: Chuyên ngành
Ý nghĩa: Dùng để lƣu trữ tên chuyên ngành
Bảng 4.3 Bảng tài khoản
tblUser STT TÊN FIELD DỄN GIẢI KIỂU
UserID int 1 UserID Mã tài khoản Số nguyên
Pass 2 Pass Mật khẩu tài khoản Chuỗi
UserName 3 UserName Tên tài khoản Chuỗi
Fullname 4 Fullname Tên đầy đủ của tài khoản Chuỗi
Sex 5 Sex Giới tính Số nguyên
SystemRight 6 SystemRight Quyền truy cập Số nguyên
Thực thể:tblUser
Tên thực thể: Tài khoản đăng nhập chƣơng trình Ý nghĩa: Dùng để lƣu trữ thông tin ngƣời dùng
Bảng 4.4 Bảng từ điển
TuDien STT TÊN FIELD DỄN GIẢI KIỂU
WordDic_ID 1 WordDic_ID Mã từ điển Số thực
WordDic 2 WordDic Từ điển Chuỗi
Thực thể:TuDien
Tên thực thể: Từ điển tiếng Việt
Bảng 4.5 Bảng từ phổ thông
TuPhoThong STT TÊN FIELD DỄN GIẢI KIỂU
TPT_ID 1 TPT_ID Mã Từ phổ thông Số thực
TPT 2 TPT Từ phổ thông Chuỗi
Thực thể:TuPhoThong Tên thực thể: Từ phổ thông
Ý nghĩa: Dùng để lƣu trữ từ thông dụng thƣờng xuất hiện trong các bài báo
Bảng 4.6 Bảng từ đƣợc tách
TuDuocTach STT TÊN FIELD DỄN GIẢI KIỂU
Tu_ID 1 Tu_ID Mã từ đƣợc tách Số nguyên
Tu 2 IDF Số văn bản có chứa từ Số thực
IDF real 3 Tu Từ đƣợc tách Chuỗi
WordWeight 4 WordWeight Trọng số của từ Số thực ChuyenNganh_ID 5 ChuyenNganhID Mã chuyên ngành Số nguyên
Thực thể:TuDuocTach Tên thực thể: Từ đƣợc tách
Bảng 4.7 Bảng từ chuyên ngành
TuChuyenNganh STT TÊN FIELD DỄN GIẢI KIỂU
TuCN_ID 1 TuCN Mã từ đƣợc tách Số nguyên
TuCN 2 IDF Số văn bản có chứa từ Số thực
IDF 3 TuCN Từ đƣợc tách Chuỗi
WordWeight 4 WordWeight Trọng số của từ Số thực ChuyenNganh_ID 5 ChuyenNganhID Mã chuyên ngành Số nguyên
Thực thể:TuChuyenNganh Tên thực thể: Từ chuyên ngành
Ý nghĩa: Dùng để lƣu trữ từ đặc trƣng chuyên ngành dựa vào trọng số của từ đƣợc tách
Bảng 4.8 Bảng bài báo
BaiBao STT TÊN FIELD DỄN GIẢI KIỂU
BaiBao_ID 1 BaiBao_ID Mã bài báo Số nguyên
BaiBao 2 BaiBao Bài báo Chuỗi
DuongDanBB 3 DuongDanBB Đƣờng dẫn bài báo Chuỗi ChuyenNganh_ID 4 ChuyenNganhID Mã chuyên ngành Số nguyên
Thực thể: BaiBao Tên thực thể: Bài báo
Bảng 4.9 Bảng bài báo sau khi phân loại
BaiBaoPL STT TÊN FIELD DỄN GIẢI KIỂU
BaiBaoPL_ID 1 BaiBaoPL_ID Mã bài báo đã phân loại Số nguyên
BaiBaoPL 2 BaiBaoPL bài báo phân loại Chuỗi
DuongDanBB 3 TenChuyenNganh Tên chuyên ngành Chuỗi TenChuyenNganh 4 DuongDanBB Đƣờng dẫn bài báo Chuỗi
ChuyenNganh_ID 5 ChuyenNganhID Mã chuyên ngành Số nguyên
Thực thể:BaiBaoPL
Tên thực thể: Bài báo sau khi phân loại
Ý nghĩa: Dùng để lƣu trữ các bài báo sau quá trình phân loại
Bảng 4.10 Bảng biến tạm
Temp STT TÊN FIELD DỄN GIẢI KIỂU
WordID 1 WordID Mã từ của file tạm Số nguyên
Word 2 Word Từ của file tạm Chuỗi
WordWeight 3 WordWeight Trọng số của từ Số thực ChuyenNganh_ID 4 ChuyenNganhID Mã chuyên ngành Số nguyên
Thực thể:Temp
Tên thực thể: Bảng tạm
Ý nghĩa: Dùng để lƣu trữ các từ đƣợc tách của bài báo trong quá trình phân loại để từ đó dựa trên công thức tính toán xác định ra chuyên ngành của bài báo
Mô hình cơ sở dữ liệu
Bƣớc 1: Chuyển thực thể thành mối quan hệ tƣơng ứng và tạo khóa chính cho quan hệ.
Bảng 4.11 Bảng mối quan hệ thực thể Tên quan hệ Quan hệ
ChuyenNganh ChuyenNganh(ChuyenNganh_ID, ChuyenNganh)
tblUser tblUser(UserID, Pass, UserName, Fullname, Sex, SystemRight ) TuDien TuDien(WordDic_ID,WordDic)
TuPhoThong TuPhoThong(TPT_ID,TPT)
TuDuocTach TuDuocTach(Tu_ID,Tu,IDF,WordWeight)
TuChuyenNganh TuChuyenNganh(TuCN_ID,TuCN,IDF,WordWeight) BaiBao BaiBao(BaiBao_ID,BaiBao,DuongDanBB)
BaiBaoPL BaiBaoPL(BaiBaoPL_ID,BaiBaoPL,DuongDanBB) Temp Temp(WordID,Word,WordWeight)
Bƣớc 2: Chuyển mối kết hợp thành quan hệ có khóa chính và khóa ngoại. Bảng 4.12 Bảng mối kết hợp của thực thể
Tên quan hệ Quan hệ
ChuyenNganh ChuyenNganh(ChuyenNganh_ID, ChuyenNganh)
tblUser tblUser(UserID, Pass, UserName, Fullname, Sex, SystemRight ) TuDien TuDien(WordDic_ID,WordDic)
TuPhoThong TuPhoThong(TPT_ID,TPT)
TuDuocTach TuDuocTach(Tu_ID,Tu,IDF,WordWeight,#ChuyenNganh_ID) TuChuyenNgan
h
TuChuyenNganh(TuCN_ID,TuCN,IDF,WordWeight,#ChuyenNganh _ID)
BaiBao BaiBao(BaiBao_ID,BaiBao,DuongDanBB,#ChuyenNganh_ID) BaiBaoPL BaiBaoPL(BaiBaoPL_ID,BaiBaoPL,DuongDanBB,#ChuyenNganh_
ID)
4.1 Xây dựng giao diện phân loại văn bản 4.1.1Lƣu đồ phân loại văn bản 4.1.1Lƣu đồ phân loại văn bản
4.1.2Thiết kế giao diện
Giao diện chƣơng trình đƣợc thiết kế với mục đích đem lại sự dễ dàng trong việc huấn luyện cũng nhƣ phân loại văn bản
Hình 4.3 Giao diện chính chƣơng trình
Giao diện chính của chƣơng trình gồm:
- Textbox: Dùng để nhập văn bản hoặc lấy nội dung từ văn bản có sẵn - Button Tách Từ: Dùng để thực hiện thao tác tách từ từ textbox
- Button Thống kê: Dùng để thực hiện thao tác thống kê từ sau khi phân tách
- Button Phân Loại: Dùng để thực hiện thao tác xác định chuyên đề của văn bản
- DataGridView Tách Từ: Hiển thị danh sách từ đƣợc tách - DataGridView Thống Kê: Hiển thị danh sách từ đƣợc thống kê - Lable Hiển Thị: Hiện thị chuyên ngành của văn bàn đƣợc phân loại
4.1.3Xây dựng các chức năng
Huấn luyện văn bản
Hình 4.4 Huấn luyện văn bản
- Combobox Chuyên Ngành: Hiện thị các chuyên ngành
- Textbox Đƣờng dẫn thƣ mục: Chỉ đến thƣ mục cần huấn luyện - Textbox Thê chủ đề: Chủ đế muốn thêm vào
- Button Duyệt thƣ mục: Tìm chủ đề cần huấn luyện - Button Thêm chủ đề: Thao tác thêm chủ đề cần thêm vào - Button Hủy: Hủy bỏ thao tác huấn luyện
Phân loại văn bản
Hình 4.5 Phân loại văn bản
- Textbox File nguồn: Hiển thị đƣờng dẫn bài báo(.Doc)
- Textbox Đƣờng Dẫn: Hiển thị đƣờng dẫn thƣ mục chứa các bài báo - Button Duyệt File: Thực hiện thao tác đến file
- Button Duyệt Thƣ Mục: Thực hiện tao tác đến thƣ mục
- Datagrid View Bài báo: Danh sách các bài báo muốn phân loại
- Datagrid View Bài báo đã phân loại: Danh sách các bài báo cùng chuyên ngành của bài báo.
Quản lý cơ sở dữ liệu
Ngoài chức năng chính là huấn luyện và phân loại văn bản chƣơng trình còn cho phép quản lý các thông tin nhƣ: từ điển, từ phổ thông, chuyên ngành…vv
Quản lý chuyên ngành: Cho phép thao tác thêm, sửa, xóa chuyên ngành
Hình 4.6 Thông tin chủ đề
- Textbox Chuyên Ngành: Cho phép nhập liệu tên chuyên ngành - Button Thêm:Thực hiện thao tác thêm một chuyên ngành
- Button Sửa: Thực hiện thao tác sửa một chuyên ngành đã có sẵn trong cơ sở dữ liệu
- Button Xóa: Thực hiện thao tác xoá một chuyên ngành đã có sẵn trong cơ sở dữ liệu
Quản lý bài báo: Quản lý các bài báo đã sử dụng trong quá trình huấn luyện
Hình 4.7 Thông tin bài báo
- Textbox Bài Báo: Cho phép nhập liệu tên bài báo - Textbox Đƣờng Dẫn: Hiển thị đƣờng dẫn bài báo - Combobox Chuyên ngành: Hiển thị các chuyên ngành
- Button Duyệt: Thao tác lấy đƣờng dẫn bài báo và tên bài báo hiể thị trong Textbox Đƣờng Dẫn và Textbox Bài Báo
- Button Thêm:Thực hiện thao tác thêm một bài báo
- Button Sửa: Thực hiện thao tác sửa một bài báo đã có sẵn trong cơ sở dữ liệu
- Button Xóa: Thực hiện thao tác xoá một bài báo đã có sẵn trong cơ sở dữ liệu
- Datagrid View Bài báo: Hiển thị danh sách các bài báo
- Ngoài các chức năng kể trên chƣơng trình còn cho phép hiển thị bảng thống kê danh sách các bài báo theo chuyên ngành, demo phần tách từ để ngƣời dùng có thể hiểu rõ quá trình phân tách bài báo để tìm ra những từ đặc trƣng của bài báo đó.
CHƢƠNG 5: THỬ NGHIỆM VÀ ĐÁNH GIÁ KẾT QUẢ
5.1 Ví dụ về chƣơng trình phân loại văn bản
Để minh họa cho thuật toán Naïve Bayes, ta có một folder chứa 27 bài báo chứ đƣợc phân loại thực quá trình phân loại theo các bƣớc.
Cho tập dữ liệu vào form phân loại:
Hình 5.1 Giao diện phân loại văn bản
Chƣơng trình sẽ tự động phân loại văn bản theo chuyên ngành đã học từ trƣớc dựa vào thuật toán Naïve Bayes.
Có thể xem quá trình thực hiện của chƣơng trình bằng cách vào thƣ mục Đầu tiên chƣơng trình sẽ convert văn bản .doc sang file .txt, thực hiện quá trình chứa những bài văn bản kiểm tra tách từ (xóa từ phổ thông, ký tự đặc biệt, so khớp từ điển) trong file .txt và lƣu lại với đuôi .temp.
Sau khi phân tách từ chƣơng trình sẽ tính các thông số cần thiết nhƣ: IDF, wordweight…vảo file Word_Count.temp, Word_Weight.temp để từ đó xác định ra chuyên ngành của bài báo
Kiểm tra kết quả phân loại các bài báo ta thu đƣợc
5.2 Đánh giá kết quả 5.2.1Dữ liệu đầu vào 5.2.1Dữ liệu đầu vào
Gồm tập dữ liệu đã phân loại và đƣợc thu thập đƣợc của trƣờng Đại học Khoa Học Tự Nhiên, hội thảo Fair, @ Cần Thơ gồm 9 chuyên đề sau:
Bảng 5.1 Bảng số liệu xử lý theo con ngƣời Thống kê bài báo
Stt Tập dữ liệu Số lƣợng
1 Các hệ thống tính toán đi động 23
2 Công nghệ đa phƣơng tiện 34
3 Công nghệ phần mềm 32
4 Cơ sở toán học của công nghệ thông tin 25
5 Hệ thống thông tin 40
6 Khoa học máy tính 26
7 Mạng máy tính và truyền thông 31
8 Trí tuệ nhân tạo 28
5.2.2Kết quả thực nghiệm
Đây là bảng kết quả thu đƣợc từ chƣơng trình khi đã phân loại
Bảng 5.2 Bảng kết quả chƣơng trình phân loại văn bản tiếng Việt Kết quả chƣơng trình Stt Tập dữ liệu Phân loại bởi con ngƣời Văn bản phân loại chính xác bằng máy 1 Các hệ thống tính toán đi động 23 20
2 Công nghệ đa phƣơng tiện 34 30
3 Công nghệ phần mềm 32 28
4 Cơ sở toán học của công nghệ thông tin 25 22
5 Hệ thống thông tin 40 35
6 Khoa học máy tính 26 23
7 Mạng máy tính và truyền thông 31 27
8 Trí tuệ nhân tạo 28 23
5.2.3Đánh giá kết quả
Sau khi phân loại và so sánh với kết quả có sẵn ta thu đƣợc kết quả phần trăm