Tải bản đầy đủ (.docx) (38 trang)

TÍCH HỢP GÓI MÃ NGUỒN MỞ TÁCH TỪ TỰ ĐỘNG VÀ ÁP DỤNG VÀO BÀI TOÁN PHÂN LOẠI VĂN BẢN THEO NAVIE BAYS

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 (1.09 MB, 38 trang )

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN HỌC
MÔN HỆ CHUYÊN GIA
ĐỀ TÀI: TÍCH HỢP GÓI MÃ NGUỒN MỞ TÁCH TỪ
TỰ ĐỘNG VÀ ÁP DỤNG VÀO BÀI TOÁN PHÂN LOẠI
VĂN BẢN THEO NAVIE BAYS
Giảng viên hướng dẫn: NGUYỄN THỊ THU HÀ
Sinh viên thực hiện:
TRẦN VĂN ĐẠI
NGUYỄN VĂN LINH
VŨ VĂN TUẤN
Hà Nội, 06-2013
MỤC LỤC
2
DANH MỤC BẢNG
3
DANH MỤC TỪ VIẾT TẮT
Ký hiệu Diễn giải
WWW World Wide Web
VLSP Nghiên cứu phát triển một số sản phẩm thiết yếu về xử lí tiếng nói và
văn bản tiếng Việt - Đề tài thuộc Chương trình Khoa học Công nghệ cấp
Nhà nước KC01/06-10
CRFs
Conditional Random Fields
VTB Viet Tree Bank
JRE Java Runtime Environment
XML eXtensible Markup Language - Ngôn ngữ Đánh dấu Mở rộng
RSS Rich Site Summary (RSS 0.91), RDF Site Summary (RSS 0.9 and 1.0),
Really Simple Syndication (RSS 2.0.0)
UTF-8 8-bit Unicode Transformation Format - Định dạng chuyển đổi Unicode


8-bit
4
LỜI MỞ ĐẦU
Phân loại văn bản là một vấn đề quan trọng trong lĩnh vực xử lý ngôn ngữ.
Nhiệm vụ của bài toán này là gán các tài liệu văn bản vào nhóm các chủ đề cho trước.
Đây là một bài toán rất thường gặp trong thực tế điển hình như: một nhà chuyên phân
tích thị thường chứng khoán, anh ta cần phải tổng hợp rất nhiều tài liệu, bài viết về thị
trường chứng khoán để đọc và đưa ra phán đoán của mình. Tuy nhiên, anh ta không
thể đọc tất cả các bài viết, bài báo hay các tài liệu để rồi phân loại chúng đâu là tài liệu
chứng khoán sau đó anh ta mới đọc kỹ chúng cho mục đích của anh ta. Lý do của vấn
đề này là bởi ví số lượng bào viết, bài báo hiện nay rất nhiều, đặc biệt là trên internet,
nếu để đọc hết được tất cả tài liệu đó thì sẽ mất rất nhiều thời gian. Một ví dụ khác
trong thực tế là việc phân loại spam mail. Khi một mail được gửi đến hộp thư, nếu để
người dùng phải đọc tất cả các mail thì sẽ tốn rất nhiều thời gian vì spam mail rất
nhiều. Vì vậy, cần có một hệ thống phân loại đâu là spam mail và đâu là mail tốt.
Để giải bài toán này đã có rất nhiều phương pháp được đưa ra như: thuật toán
Naïve Bayes, K-NN (K-Nearest-Neighbor), Cây quyết định (Decision Tree), Mạng
Neuron nhân tạo (Artificial Neural Network) và SVM (Support Vector Machine). Mỗi
phương pháp đều cho kết quả khá tốt cho bài toán này, tuy nhiên phương pháp phân
loại văn bản bằng thuật toán Bayes được sử dụng phổ biến hơn cả và dễ dàng cài đặt.
Việc cài đặt dựa vào thuật toán nào thì một trong những công đoạn khó khắn nhất
là phân tách được các từ trong văn bản để đưa vào huấn luyện. Do lượng từ vựng là rất
lớn, phong phú về mặt ngữ pháp nên việc tách từ này là rất khó khăn trong việc xây
dựng nên một CSDL từ cần thiết. Việc này cần phải được thực hiện một cách tự động
với độ chính xác cao giúp cho công việc phân tách được dễ dàng. Để thực hiện được
điều này thì ý tưởng chính là tích hợp một hệ thống tách từ vào mã nguồn của mình.
Chính vì vậy chúng em lựa chọn đề tài: “Tích hợp gói mã nguồn mở tách từ tự động
và áp dụng vào bài toán phân loại văn bản theo Navie Bays “ làm đề tài kết thúc
môn học của mình.
Chúng em xin chân thành cảm ơn các thầy, cô bộ môn đã tận tình giảng dạy em

trong suốt thời gian học tập vừa qua. Nhờ có sự chỉ dạy tận tình của cô Nguyễn Thị
Thu Hà trực tiếp hướng dẫn giảng dạy, cùng sự đào tạo của các thầy cô bộ môn khác
trong thời gian qua giúp chúng em hoàn thành bài báo cáo này. Do đây là lần đầu tiên
triển khai một hệ thống có tính thực tiễn cao, nên quá trình triển khai có thể còn nhiều
sai sót. Mong các thầy cô đóng góp ý kiến giúp chúng em hiểu rõ hơn về bài toán.
Một lần nữa chúng em xin chân thành cảm ơn các thầy cô!
5
CHƯƠNG 1. BÀI TOÁN PHÂN LOẠI VĂN BẢN
1.1. Giới thiệu
Ngày nay, sự bùng nổ thông tin do bị tác động bởi sự xuất hiện của các siêu
phương tiện và World Wide Web (WWW) đã làm cho không gian dữ liệu gia tăng
thường xuyên, điều này tạo ra một thách thức cho các hệ thống truy vấn thông tin sao
cho có hiệu quả. Một trong những khó khăn mà các hệ thống thông tin thường phải
gặp đó là tần suất cập nhật của các thông tin quá lớn. Phương thức sử dụng giấy trong
giao dịch đang dần được số hóa, do nhiều tính năng vượt trội mà phương thức này
mang lại, như là có thể lưu trữ lâu dài, cập nhật, sửa đổi, tìm kiếm một cách nhanh
chóng. Do đó số lượng văn bản số hóa ngày nay đang tăng dần theo cấp số nhân, cùng
với sự gia tăng của số lượng văn bản, nhu cầu tìm kiếm văn bản cũng tăng theo, khi đó
phân loại văn bản tự động là một yêu cầu cấp thiết được đặt ra. Phân loại văn bản giúp
sẽ giúp chúng ta tìm kiếm thông tin một cách nhanh chóng hơn thay vì phải tìm lần
lượt trong từng văn bản, hơn nữa khi mà số lượng văn bản đang gia tăng một cách
nhanh chóng thì thao tác tìm lần lượt trong từng văn bản sẽ mất rất nhiều thời gian,
công sức và là một công việc nhàm chán và không khả thi. Chính vì thế nhu cầu phân
loại văn bản tự động là thực sự cần thiết.
Có rất nhiều công trình nghiên cứu về phân loại văn bản và đã có được những
kết quả đáng khích lệ, như là: Support Vector Machine, K–Nearest Neighbor, Linear
Least Squares Fit, Neural Network, Naïve Bayes, Centroid Base… Điểm chung của
các phương pháp này đều dựa vào xác suất thống kê hoặc dựa vào trọng số của các từ,
cụm từ trong văn bản. Trong mỗi phương pháp đều có cách tính toán khác nhau, tuy
nhiên các phương pháp này đều phải thực hiện một số bước chung như: đầu tiên mỗi

phương pháp sẽ dựa vào thông tin về sự xuất hiện của các từ trong văn bản (tần số
xuất hiện trong tập văn bản,…) để biểu diễn thành dạng vector, sau đó tùy từng bài
toán cụ thể mà chúng ta sẽ quyết định chọn áp dụng phương pháp nào, công thức tính
toán nào cho phù hợp để phân loại tập văn bản dựa trên tập các vector đã xây dựng
được ở bước trên, nhằm mục đích đạt được kết qủa phân loại tốt nhất.
Do nhiều vấn đề, điều kiện khách quan, bài báo cáo này không cung cấp hướng
dẫn chi tiết để xây dựng ứng dụng một cách hoàn chỉnh. Bài báo cáo chỉ trình bày các
khái niệm thuật toán và các công cụ hỗ trợ trợ giúp để xây dựng chương trình này.
6
1.2. Phát biểu bài toán
Bài toán phân loại văn bản có thể được phát biểu như sau: Cho trước một tập văn
bản D={d1,d2,…,dn} và tập chủ đề được định nghĩa C={c1,c2,…,cn}. Nhiệm vụ của
bài toán là gán lớp di thuộc về cj đã được định nghĩa. Hay nói cách khác, mục tiêu của
bài toán là đi tìm hàm f:
(1.1)
1.3. Mô hình tổng quát
Có rất nhiều hướng tiếp cận bài toán phân loại văn bản đã được nghiên cứu như:
tiếp cận bài toán phân loại dựa trên lý thuyết đồ thị, cách tiếp cận sử dụng lý thuyết tập
thô, cách tiếp cận thống kê… Tuy nhiên, tất cả các phương pháp trên đều dựa vào các
phương pháp chung là máy học đó là: học có giám sát, học không giám sát và học tăng
cường.
Vấn đề phân loại văn bản theo phương pháp thống kê dựa trên kiểu học có giám
sát được đặc tả bao gồm 2 giai đoạn: giai đoạn huấn luyện và giai đoạn phân lớp.
- Giai đoạn huấn luyện
Chúng ta có một tập huấn luyện, mỗi phần tử trong tập huấn luyện được gán vào
một hoặc nhiều lớp mà chúng ta sẽ thể hiện chúng bằng một mô hình mã hoá. Thông
thường, mỗi phần tử trong tập huấn luyện được thể hiện theo dạng ,c).Trong đó, là
vector biểu diễn cho văn bản trong tập huấn luyện.
Sau đó, chúng ta định nghĩa một lớp mô hình và một thủ tục huấn luyện. Lớp mô
hình là họ các tham số của bộ phân loại, thủ tục huấn luyện là một giải thuật (hay thuật

toán) để chọn ra một họ các tham số tối ưu cho bộ phân loại.
Hình 1.1: Mô hình giai đoạn huấn luyện
Đầu vào: ngữ liệu huấn luyện và thuật toán huấn luyện
Đầu ra: mô hình phân lớp (bộ phân lớp – classifier)
Các bước trong giai đoạn huấn luyện:
7
Hình 1.2: Các bước trong giai đoạn huấn luyện
Trong đó :
Ngữ liệu huấn luyện: kho ngữ liệu thu thập từ nhiều nguồn khác nhau.
Tiền xử lý: chuyển đổi tài liệu trong kho ngữ liệu thành một hình thức phù hợp
để phân loại.
Vector hoá: mã hoá văn bản bởi một mô hình trọng số
Trích chọn đặc trưng: loại bỏ những từ (đặc trưng) không mang thông tin khỏi tài
liệu nhằm nâng cao hiệu suất phân loại và giảm độ phức tạp của thuật toán huấn luyện.
Thuật toán huấn luyện: Thủ tục huấn luyện bộ phân lớp để tìm ra họ các tham số
tối ưu.
Đánh giá: bước đánh giá hiệu suất (chất lượng) của bộ phân lớp
- Giai đoạn phân lớp
Sau khi đã hoàn thành giai đoạn huấn luyện, mô hình phân lớp sẽ được áp dụng
cho các văn bản mới cần phân loại.
Hình 1.3: Mô hình giai đoạn phân lớp
Các bước trong giai đoạn phân lớp:
8
Hình 1.4: Các bước trong giai đoạn phân lớp
1.4. Mục đích và phạm vi nghiên cứu
Mục đích:
+ Tìm hiểu thuật toán Navie Bayes và phạm vi ứng dụng của nó trong phân
loại văn bản.
+ Nắm rõ hơn về cơ chế học tập và huấn luyện máy học.
+ Xây dựng một chương trình có khả năng phân loại văn bản sau khi tìm

hiểu thuật toán.
Phạm vi nghiên cứu: chương trình thực hiện trong một quy mô nghiên cứu lớn
với một số lượng văn bản nhiều vào khoảng 700 văn bản và số lượng từ khoảng trên
3000 từ.
9
CHƯƠNG 2. CƠ SỞ XÂY DỰNG CHƯƠNG TRÌNH
2.1. Chương trình sử dụng
2.1.1. Microsoft SQL 2012
Microsoft SQL 2012 là một hệ quản trị cơ sở dữ liệu tương tác với người sử dụng
chạy trên môi trường Windows, nó tăng thêm sức mạnh trong công tác tổ chức và tìm
kiếm thông tin, các qui tắc kiểm tra dữ liệu, giá trị mặc định, khuôn nhập dữ liệu của
Microsoft SQL 2012 hoàn toàn đáp ứng yêu cầu. Quản lý được khối lượng dữ liệu lớn
với tần suất truy cập dữ liệu cao, đáp ứng các dịch vụ trực tuyến và đảm bảo các yêu
cầu về an toàn dữ liệu. Với việc hỗ trợ các chuẩn cơ sở dữ liệu(CSDL) sẽ giúp hệ
thống dữ liệu mạnh hơn với khả năng kết nối, nâng cấp và bảo trì.
2.1.2. Microsoft Visual Studio 2012
Microsoft Visual Studio 2012 là ngôn ngữ hoàn thiện và hoạt động theo hướng
đối tượng.
Microsoft Visual Studio 2012 là ngôn ngữ lập trình thông dụng trên Windows,
hỗ trợ quản lý Cơ sở dữ liệu, lập trình Internet
Microsoft Visual Studio 2012 có nhiều tính năng mới, các điều khiển mới cho
phép ta viết các chương trình ứng dụng kết hợp các giao diện, cách xử lý và tính năng
của Office và trình duyệt Web, ngoài ra khi dùng Microsoft Visual Studio 2012 sẽ tiết
kiệm thời gian và công sức so với các ngôn ngữ lập trình khác khi xây dựng cùng một
ứng dụng.
Microsoft Visual Studio 2012 gắn liền với khái niệm lập trình trực quan (Visual),
nghĩa là khi thiết kế chương trình ta nhìn thấy ngay kết quả qua từng thao tác và giao
diện khi chương trình thực hiện. Đây là thuận lợi lớn so với các ngôn ngữ lập trình
khác.
Bên cạnh đó, Microsoft Visual Studio 2012 còn hỗ trợ tính năng kết nối môi

trường dữ liệu Access, SQL, việc liên kết dữ liệu có thể thực hiện bằng nhiều cách.
2.1.3. Bộ code mã nguồn mở xử lý văn bản
Để có thể có được kết quả huấn luyện và phân loại tốt các văn bản (phân loại
chính xác), chúng ta cần có một hệ từ vựng chuẩn. Việc tách các từ và gán nhãn từ loại
cho các cụm từ này trên thực tế là rất khó khăn và đòi hỏi sử dụng đến nhiều thuật toán
10
khác nhau do vậy việc xây dựng một modul như vậy là không khả thi. Thay vào đó
chúng ta có thể tích hợp các hệ thông nghiên cứu khác vào hệ thống giúp cho việc xây
dựng chương trình nhanh chóng và thuận tiện hơn.
Năm 2010, nhánh đề tài "Xử lí văn bản tiếng Việt" là một phần của đề tài
KC01.01/06-10 "Nghiên cứu phát triển một số sản phẩm thiết yếu về xử lí tiếng nói và
văn bản tiếng Việt". Đây là đề tài liên kết giữa các nhóm nghiên cứu xử lí tiếng Việt
đến từ các trường đại học, viện nghiên cứu trong nước và quốc tế. Các sản phẩm được
trình diễn bao gồm:
- SP7.2: Từ điển tiếng Việt dùng cho xử lí ngôn ngữ tự nhiên
Thực hiện: Vũ Xuân Lương, Hồ Tú Bảo, Nguyễn Thị Minh Huyền
- SP7.3: Kho ngữ liệu câu tiếng Việt có chú giải
Thực hiện: Nguyễn Phương Thái, Vũ Xuân Lương, Nguyễn Thị Minh Huyền
- SP7.4: Hai kho ngữ liệu câu Anh-Việt phổ quát-chuyên ngành
Thực hiện: Hồ Bảo Quốc, Cao Hoàng Trụ
- SP8.2: Hệ phân đoạn từ tiếng Việt
Thực hiện: Nguyễn Thị Minh Huyền, Hồ Bảo Quốc
- SP8.3: Hệ phân loại từ tiếng Việt
Thực hiện: Phan Xuân Hiếu, Lê Minh Hoàng
- SP8.4: Hệ phân cụm từ tiếng Việt
Thực hiện: Nguyễn Lê Minh, Cao Hoàng Trụ
- SP8.5: Hệ phân tích câu tiếng Việt
Thực hiện: Lê Thanh Hương, Nguyễn Phương Thái
Trong chương trình của chúng ta cần tách được các danh từ để đưa vào CSDL
nên chúng ta sử dụng hệ tách từ tiếng Việt và hệ gán nhãn từ loại tiếng Việt nằn trong

nhánh SP8.3 để tích hợp vào hệ thống.
• Hệ tách từ tiếng Việt:
- Gói cài đặt: vnTokenizer 4.1.1c
- Ngày phát hành: 28/12/2009
- Sử dụng kết hợp từ điển và ngram, trong đó mô hình ngram được huấn luyện sử dụng
treebank tiếng Việt (70,000 câu đã được tách từ)
- Độ chính xác trên 97%.
• Hệ gán nhãn từ loại tiếng Việt
- Gói cài đặt: VietTagger
- Ngày phát hành: 16/08/2010
11
- Dựa trên các mô hình học máy Maximum Entropy và CRFs;
- Được huấn luyện sử dụng dữ liệu treebank tiếng Việt (20,000 câu đã được gán nhãn từ
loại)
- Độ chính xác trên 93%.
2.2. Cơ sở lý thuyết
2.2.1. Tiền xử lý văn bản
Văn bản trước khi được vector hoá, tức là trước khi sử dụng, cần phải được tiền
xử lý. Quá trình tiền xử lý sẽ giúp nâng cao hiệu suất phân loại và giảm độ phức tạp
của thuật toán huấn luyện.
Tuỳ vào mục đích bộ phân loại mà chúng ta sẽ có những phương pháp tiền xử lý
văn bản khác nhau, như:
- Chuyển vẳn bản về chữ thường.
- Loại bỏ dấu câu (nếu không thực hiện tách câu).
- Loại bỏ các kí tự đặc biệt biệt([ ],[.], [,], [:], [“], [”], [;], [/], [[]], [~], [`], [!],
[@], [#], [$],[%],[^],[&],[*],[(],[)]), các chữ số, phép tính toán số học.
- Loại bỏ các stopword (những từ xuất hiện hầu hết trong các văn bản) không có
ý nghĩa khi tham gia vào phân loại văn bản.
- …
2.2.2. Phương pháp biểu diễn văn bản

Một trong những nhiệm vụ đầu tiền trong việc xử lý phân loại văn bản là chọn
được một mô hình biểu diễn văn bản thích hợp. Một văn bản ở dạng thô (dạng chuỗi)
cần được chuyển sang một mô hình khác để tạo thuận lợi cho việc biểu diễn và tính
toán. Tuỳ thuộc vào từng thuật toán phân loại khác nhau mà chúng ta có mô hình biểu
diễn riêng. Một trong những mô hình đơn giản và thường được sử dụng trong nhiệm
vụ này là mô hình không gian vector. Một văn bản trong nhiệm vụ này được biểu diễn
theo dạng , với là một vector n chiều để đo lường giá trị của phần tử văn bản.
2.2.3. Mô hình không gian vector
Mô hình không gian vector là một trong những mô hình được sử dụng rộng rãi
nhất cho việc tìm kiếm (truy hồi) thông tin. Nguyên nhân chính là bởi vì sự đơn giản
của nó.
Trong mô hình này, các văn bản được thể hiện trong một không gian có số chiều
lớn, trong đó mỗi chiều của không gian tương ứng với một từ trong văn bản. Phương
pháp này có thể biểu diễn một cách hình tượng như sau: mỗi văn bản D được biểu diễn
dưới dạng (vector đặc trưng cho văn bản D). Trong đó, =( x
1
, x
2
, … , x
n
), và n là số
12
lượng đặc trưng hay số chiều của vector văn bản, x
i
là trọng số của đặc trưng thứ i (với
1≤ i ≤n).
Như vậy, nếu trong kho ngữ liệu của quá trình huấn luyện nhiều văn bản, ta kí
hiệu D
j
, là văn bản thứ j trong tập ngữ liệu, và vector

j
=( x
1j
, x
2j ,
… , x
nj
) là vector đặc
trưng cho văn bản D
j
, và x
ij
là trọng số thứ i của vector văn bản
j
.
2.2.4. Khái niệm trọng số
Một vấn đề quan trọng nữa trong việc biểu diễn một văn bản đó là tính trọng số
cho vector đặc trưng của văn bản. Có nhiều cách khác nhau để tính trọng số này như:
- Word frequency weighting
- Boolean weighting
- tf*idf weighting
- Entropy weighting
Tuy nhiên, để đơn giản cho vấn đề này, chúng ta sẽ chỉ xem xét cách tính Word
frequency weighting (trọng số tần suất từ) và tf*idf, một cách đơn giản đó là đếm số
từ đó trong văn bản. Tuy nhiên vẫn có nhiều cách khác nhau để tính trọng số dạng này.
Có ba thông tin được sử dụng trong cách tính trọng số bằng tần suất từ là: term
frequency ( tf
ij
số lần suất hiện của từ w
i

trong văn bản d
j
), document frequency (df
i
số
văn bản có chứa từ w
i
), collection frequency ( cf
i
số lần suất hiện của từ w
i
trong cả tập
ngữ liệu). Trong đó, df
i
≤ cf
i
và ∑
j
tf
ij
=cf
i
.
Thông tin được nắm bắt bởi term frequency là sự nổi bật của thông tin (hay từ)
trong một văn bản. Term frequency càng cao (số lần xuất hiện càng nhiều trong văn
bản) thì đó là từ miêu tả tốt cho nội dung văn bản. Giá trị thứ hai, document frequency,
có thể giải thích như là một bộ chỉ định nội dung thông tin. Một từ được tập trung ngữ
nghĩa thường xảy ra nhiều lần trong một văn bản nếu nó cũng xuất hiện trong tất cả
các văn bản khác. Nhưng từ không được tập trung ngữ nghĩa trải đều đồng nhất trong
tất cả các văn bản.

Để thể hiện trọng số phản ánh hết thông tin của từ, thường ta sẽ kết hợp cả hai
loại trọng số là tf và df trong một đơn vị chung. Dạng biểu diễn trọng số này được gọi
là tf * idf. Công thức kết hợp hai giá trị trọng số :
(2.1)
Trong đó, N là tổng số văn bản. Biểu thức thứ nhất áp dụng cho các từ có xuất
hiện trong văn bản, còn biểu thức thứ hai cho các từ không xuất hiện trong văn bản.
13
CHƯƠNG 3. PHÂN TÍCH VÀ THIẾT KẾ
3.1. Phân tích
3.1.1. Yêu cầu đặt ra
Chương trình được xây dựng có khả năng phân loại được các văn bản với độ
chính xác cao, dựa trên thuật toán Navie Bayes.
Chương trình có khả năng quản lý được các văn bản để phục vụ cho mục đích
huấn luyện và đưa vào phân loại.
Có khả năng quản lý các từ vựng được đưa vào nhằm làm tăng độ chính xác khi
phân loại.
Việc lấy từ vựng và các văn bản phải được thực hiện tự động và tối ưu cho
người sử dụng. Lưu lại các thông tin, dữ liệu phân loại để có thể so sánh và đánh giá
các thông tin sau mỗi lần huấn luyện.
Chương trình có một giao diện thân thiện dễ sử dụng với người dùng.
3.1.2. Mục tiêu
Sau khi xây dựng chương trình có thể đáp ứng tốt các mục tiêu sau:
• Về mặt quản lý:
- Về quản lý các văn bản:
Xây dựng chương trình quản lý với giao diện được thiết kế làm sao quản lý được
các văn bản vừa được phân loại sẵn phục vụ cho việc huấn luyện vừa có thể quản lý
đươc các văn bản đưa vào để phân loại (các văn bản chưa phân lĩnh vực).
Việc thêm văn bản có thể thêm nhiều văn bản cùng một lúc để việc quản lý tiết
kiệm thời gian hơn.
Có thể thêm văn bản tự động bằng cách lọc tự động từ những trang tin tức hay

các link RSS(Really Simple Syndication).
Có thể sử lý với các loại văn bản .txt hoặc .doc
- Về quản lý từ vựng:
Việc lấy từ vựng phải được lấy tự động do ngữ liệu từ vựng là rất lớn, từ cựng
lấy về phải là các danh từ và hạn chế thấp nhất các từ gây nhiễu hoặc không chính xác
14
Sử dụng tách từ tự động từ các văn bản được bóc tách về thông qua hệ mã nguồn
mở tách từ tiếng Việt và gán nhãn từ vựng tiếng Việt.
- Về quản lý các lĩnh vực:
Xây dựng giao diện quản lý được các thông tin trong từng lĩnh vực đặc biệt là
chọn thư mục chứa để có thể lấy văn bản về phục vụ cho việc huấn luyện sau này.
• Về mặt chức năng:
Chương trình phải xây dựng và hoàn thiện được hai chức năng quan trọng nhất là
huấn luyện và phân lọai văn bản. Việc phân loại văn bản với độ chính xác cao và đưa
ra thông báo cho người dùng.
3.2. Thiết kế
3.2.1. Kiến trúc chung
Chương trình được xây dựng theo mô hình 3 lớp.
- Về tổng quan chương trình được xây dựng có các trang chức năng sau:
+ Về mặt quản lý:
Trang quản lý văn bản nhằm quản lý các văn bản và thông tin liên quan.
Trang quản lý từ vựng nhằm quản lý các từ vựng phục vụ cho việc phân loại
Trang quản lý lĩnh vực nhằm quản lý các lĩnh vực được phân loại
Trang lấy tin tự động và tách từ tự động đưa vào CSDL.
Các trang quản lý mã hóa, quản lý huấn luyện, quản lý chi tiết huấn luyện, quản
lý link RSS… nhằm lưu và quản lý các thông tin trong mỗi lần huấn luyện.
+ Về chức năng:
Trang Huấn luyện nhằm huấn luyện và quản lý các văn bản huấn luyện
Trang phân loại nhằm phân loại văn bản.
3.2.2. Thuật toán sử dụng

• Định lý Bayes
Đây là thuật toán được xem là đơn giản nhất trong các phương pháp. Bộ phân lớp
Bayes có thể dự báo các xác suất là thành viên của lớp, chẳng hạn xác suất mẫu cho
trước thuộc về một lớp xác định. Chúng giả định các thuộc tính là độc lập nhau (độc
lập điều kiện lớp).
Thuật toán Naïve Bayes dựa trên định lý Bayes được phát biểu như sau:
15
(3.1)
Trong đó:
- Y đại diện một giả thuyết, giả thuyết này được suy luận khi có được chứng cứ
mới X.
- P(X): xác xuất X xảy ra (Xác suất biên duyên của X).
- P(Y): xác xuất Y xảy ra (Điều kiện tiên nghiệm của Y).
- P(X|Y): xác xuất X xảy ra khi Y xảy ra (xác suất có điều kiện, khả năng X khi
Y đúng).
- P(Y|X): xác suất hậu nghiệm của Y nếu biết X.
Áp dụng trong bài toán phân loại, các dữ kiện cần có:
- D: tập dữ liệu huấn luyện đã được vector hoá dưới dạng =( x
1
, x
2
, … , x
n
)
- C
i
: tập các tài liệu của D thuộc lớp C
i
với i={1,2,3,…}
- Các thuộc tính x

1
,x
2
,…x
n
độc lập xác suất đôi một với nhau.
Theo định lý Bayes :
(3.2)
Theo tính chất độc lập điều kiện :
(3.3)
Khi đó, luật phân lớp cho các tài liệu mới X
new
={x
1
, x
2
, … , x
n
} là:
(3.4)
Trong đó :
- P(C
i
): được tính dựa trên tần suất xuất hiện tài liệu trong tập huấn luyện.
- P(x
k
|C): được tính từ những tập thuộc tính đã được tính trong quá trình
huấn luyện.
• Thuật toán
Các bước thực hiện thuật toán Naïve Bayes:

Bước 1:
- Huấn luyện Naïve Nayes(dựa vào tập dữ liệu
+ Tính xác suất P(C
i
)
+ Tính xác suất P(x
k
|C
i
)
Bước 2:
- X
new
được gán vào lớp có giá trị lớn nhất theo công thức
(3.4)
16
Xét một ví dụ kinh điển là ví dụ dự đoán xem quyết định của người chơi có đi
chơi Tennis hay không với các điều kiện về thời tiết đã được biết trước. Trong ví dụ
này, ta có một bảng dữ liệu huấn luyện như sau :
Day Outlook
Tem
p.
Humi
dity
Wind Play
Tennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High
Stron
g

No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool
Norm
al
Weak Yes
D6 Rain Cool
Norm
al
Stron
g
No
D7 Overcast Cool
Norm
al
Weak Yes
D8 Sunny Mild High Weak No
D9 Sunny Cold
Norm
al
Weak Yes
D10 Rain Mild
Norm
al
Stron
g
Yes
D11 Sunny Mild
Norm

al
Stron
g
Yes
D12 Overcast Mild High
Stron
g
Yes
D13 Overcast Hot
Norm
al
Weak Yes
D14 Rain Mild High
Stron
g
No
Bảng 3.1: Ví dụ về bảng dữ liệu huấn luyện
Bước 1:
Tính các xác suất P(C
i
)
- Với C
i
= “yes”
P(C
1
) = P(“yes”) = 9/14
- Với C
2
= “no”

P(C
2
) = P(“no”) = 5/14
Tính xác suất P(x
k
|C
i
)
- Với thuộc tính Outlook: có các giá trị sunny, overcast, rain
P(sunny|yes) = 2/9
P(sunny|no) = 3/5
P(overcast|yes) = 4/9
P(overcast|no) = 0/5
P(rain|yes) = 3/9
P(rain|no) = 2/5
17
- Với thuộc tính Temp: có các giá trị Hot, Cold, Mild
P(hot|yes) = 2/9
P(hot|no) = 2/5
P(cold|yes) = 3/9
P(cold|no) = 1/5
P(mild|yes) = 4/9
P(mild|no) = 2/5
- Với thuộc tính Humidity: có các giá trị Normal,High
P(normal|yes) = 6/9
P(normal|no) = 1/5
P(high|yes) = 3/9
P(high|no) = 4/5
- Với thuộc tính Wind: có các giá trị Weak, Strong
P(weak|yes) = 6/9

P(weak|no) = 2/5
P(strong|yes) = 3/9
P(strong|no) = 3/5
Bước 2: Phân lớp X
new
={sunny, cool, high, strong}
Tính các xác suất
P(yes)*P(X
new
|yes) = 0.005
P(no)* P(X
new
|no) = 0.021
→ X
new
thuộc vào lớp No
• Áp dụng trong phân loại văn bản
Để áp dụng thuật toán Naïve Bayes vào phân loại văn bản, ta cần thực hiện các
bước tiền xử lý và vector hoá các văn bản trong tập huấn luyện. Các phương pháp tiền
xử lý và vector hoá đã được trình bày ở những phần trước. Tuy nhiên,do thuật toán
Naïve Bayes dựa trên xác suất văn bản và xác suất đặc trưng, do đó ở phương pháp
này, chúng ta sẽ sử dụng phương pháp vector hoá bằng cách đếm tần suất từ (Word
frequency weighting).
18
Sau khi đã vector hoá các văn bản, ta cần thực hiện rút chọn các đặc trưng cho
các văn bản huấn luyện. Ta cũng có rất nhiều cách để thực hiện rút chọn đặc trưng như
sử dụng các độ đo, sử dụng Heuristic, sử dụng từ điển…
Sau khi đã rút chọn đặc trưng, ta sẽ thực hiện thuật toán huấn luyện. Ta có thể
tóm tắt các bước như sau:
Bước 1: Huấn luyện

- Từ tập huấn luyện, ta rút trích tập từ vựng (các đặc trưng)
- Tính xác suất P(C
i
) và P(x
k
|C
i
)
(3.5)
docs
i
: số tài liệu của tập huấn luyện thuộc lớp c
i
.
total#documents: số tài liệu có trong tập huấn luyện.
(3.6)
Hoặc
(3.7)
(làm mịn với luật Laplace)
- n: tổng số từ đôi một khác nhau của lớp c
i
.
- n
k
: tổng số từ x
k
trong tập từ vựng trong lớp C
i
.
- |Text

i
|: tổng số từ vựng (không phân biệt đôi một) trong lớp C
i
.
Bước 2: Phân lớp
(3.8)
- positions: tập từ vựng trong bộ huấn luyện.
Xét ví dụ: ta có tập tài liệu để huấn luyện sau khi đã vector hoá (sử dụng phương
pháp đơn giản đếm sô lần xuất hiện) và rút trích đặc trưng như sau:
- Bộ từ vựng (đặc trưng): var, bit, chip, log
Docs Var Bit Chip Log Class
Doc1 42 25 7 56 Math
Doc2 10 28 45 2 Comp
Doc3 11 25 22 4 Comp
Doc4 33 40 8 48 Math
Doc5 28 32 9 60 Math
Doc6 8 22 30 1 Comp
Bảng 3.2: Ví dụ 2 về bảng dữ liệu huấn luyện
19
- Bước huấn luyện :
• Tính xác xuất các lớp Ci trong tập huấn luyện
P(C
1
=”Comp”) = 3/6 = 0.5
P(C
2
=”Math”) = 3/6 = 0.5
• Tính xác xuất P(x
k
|C

i
)
- Lớp C
1
= “Comp”: Tổng = 208
P(var|Comp) = (10+11+8)/208 = 29/208
P(bit|Comp) = (28+25+22)/208 = 75/208
P(chip |Comp) = (45+22+30)/208 = 97/208
P(log|Comp) = (2+4+1)/208 = 7/208
- Lớp C2 = “Math”: Tổng = 388
P(var|Math) = (42+33+28)/208 = 103/388
P(bit| Math) = (22+40+32)/208 = 97/388
P(chip| Math) = (7+8+9)/208 = 24/388
P(log| Math) = (56+48+60)/208 = 164/388
• Bước phân lớp: cho văn bản có vector đặc trưng sau
Doc
new
= (23,40,15,50)
Xác định lớp cho văn bản mới ?
Tính các xác xuất :
Xác suất Doc
new
thuộc Math:
P(Math)*[P(var|Math)*23*P(bit|Math)*40*P(chip|Math)*15*P(log|Math)*50]=598.62
Xác suất Doc
new
thuộc Comp:
P(Comp)*[P(var|Comp)*23*P(bit|Comp)*40*P(chip|Comp)*15*P(log|
Comp)*50]=272.22
• Kết quả:

Văn bản Doc
new
thuộc về lớp Math do max(P
new
)= 598,62
3.2.3. Cơ sở dữ liệu
• Bảng Từ Vựng
20
Chứa các từ vựng của văn bản, các từ vựng sẽ được thêm vào là do chúng ta thực
hiện hoặc có thể thêm vào tự động bằng cách lọc từ từ các trang web. Các từ này phải
có mức độ quan trọng và có khả năng để dựa vào đó mà xác định được lĩnh vực
thường xuất hiện từ này.
Cột Kiểu DL Size NULL Diễn giải
id int N Mã từ
tuvung nvarchar 50 N Từ vựng
Bảng 3.3: Bảng Từ Vựng
• Bảng Văn Bản
Chứa các văn bản để huấn luyện và cần phân loại. Thông tin cần lưu gồm có:
Cột Kiểu DL Size NULL Diễn giải
id int N Mã văn bản
tenvb nvarchar 100 N Tên văn bản
link ntext N Nơi chứa
idlv int Y Mã lĩnh vực
loai nvarchar 100 Y Loại
Bảng 3.4: Bảng Văn Bản
21
• Bảng Lĩnh Vực
Chứa các lĩnh vực mà ta cần phân loại.Các thông tin gồm có:
Cột Kiểu DL Size NULL Diễn giải
id int N Mã lĩnh vực

linhvuc nvarchar 100 N Lĩnh vực
link ntext N Nơi chứa
Bảng 3.5: Bảng Lĩnh Vực
• Bảng Huấn Luyện
Lưu trữ các thông tin về các lần huấn luyện để có thể đánh giá và so sánh được
tính hiệu quả của thuật toán. Các thông tin gồm có:
Cột Kiểu DL Size NULL Diễn giải
id int N Lần huấn luyện
ngayhl datetime N Thời gian huấn luyện
tongvb int N Tổng số văn bản đưa vào hl
Bảng 3.6: Bảng Huấn Luyện
• Bảng Chi Tiết Huấn Luyện
Lưu trữ các thông tin chi tiết về lần huấn luyện, các lĩnh vực được huấn luyện
trong lần huấn luyện. Các thông tin lưu trữ bao gồm:
Cột Kiểu DL Size NULL Diễn giải
id int N Mã chi tiết luân luyện
idhl int N Lần huấn luyện
idlv int N Lĩnh vực
sovb int N Số văn bản
tilevb float N Tỉ lệ văn bản
tongtu int N Tổng số từ
Bảng 3.7: Bảng Chi Tiết Huấn Luyện
• Bảng Thống Kê
Thống kê tổng số từ của các lĩnh vực trong các lần huấn luyện. Thông tin bao
gồm:
Cột Kiểu DL Size NULL Diễn giải
id int N Mã thống kê
idhl int N Lần huấn luyện
idtu int N Mã từ
sotu int N Số từ

tiletu float N Tỉ lệ từ
22
Bảng 3.8: Bảng Thống Kê
• Bảng Mã Hóa
Lưu thông tin mã hóa của một văn bản dưới dạng các từ. Thông tin gồm có:
Cột Kiểu DL Size NULL Diễn giải
idvb int N Mã văn bản
idtu int N Mã từ
sotu int N Số từ
Bảng 3.9: Bảng Mã Hóa
• Bảng RSS
Lưu thông tin các link RSS để phục vụ cho việc bóc tách văn bản tự động. Thông
tin gồm có:
Cột Kiểu DL Size NULL Diễn giải
id int N Mã RSS
tenrss nvarchar
100
0
N Tên RSS
linkrss ntext N Link RSS
idlv int Lĩnh vực
level varchar 50 Cấp
ord int Số thứ tự
Bảng 3.10: Bảng RSS
3.2.4. Giao diện người dùng
Các trang quản lý:
- Trang quản lý văn bản
- Trang quản lý từ vựng
- Trang quản lý lĩnh vực
- Trang quản lý thống kê

- Trang quản lý mã hóa
- Trang quản lý huấn luyện
- Trang quản lý chi tiết huấn luyện
- Trang quản lý RSS
- Trang bóc tách văn bản và lấy từ tự động
Các form chức năng:
23
- Trang phân loại văn bản
- Trang huấn luyện
3.3. Tích hợp hệ phân tích từ vựng và gán nhãn từ loại tiếng Việt
3.3.1. Hệ phân tích từ vựng tiếng Việt
Chương trình tách từ vnTokenizer, version 4.1.1.
• Tổng quan
Chương trình vnTokenizer được sử dụng để tách từ các văn bản tiếng Việt (mã
hóa bằng bảng mã Unicode UTF-8).
Chương trình chạy dưới dạng dòng lệnh:
- vnTokenizer.sh nếu chạy trên các hệ điều hành Linux/Unix/Mac OS
- vnTokenizer.bat nếu chạy trên các hệ điều hành MS Windows
Yêu cầu: Máy cần cài JRE (Java Runtime Environment) phiên bản 1.6. JRE có
thể tải về từ địa chỉ website Java của Sun Microsystems: />• Dữ liệu
Trong một lần chạy vnTokenizer có thể tách từ một tệp hoặc đồng thời nhiều tệp
nằm trong cùng một thư mục.
• Tách từ một tệp:
Dữ liệu cần cung cấp cho chương trình gồm 1 tệp văn bản tiếng Việt, dạng thô.
Kết quả: Một tệp văn bản kết quả tách từ được ghi dưới định dạng đơn giản hoặc
định dạng XML, tùy theo lựa chọn của người sử dụng.
• Tách từ nhiều tệp nằm trong một thư mục:
Dữ liệu cần cung cấp gồm một thư mục chứa các tệp văn bản thô cần tách từ (thư
mục input) và một thư mục trống (thư mục output) để chứa kết quả tách từ.
Mặc định, chương trình sẽ tự động quét toàn bộ thư mục input và lọc ra tất cả các

tệp có đuôi là ".txt".
Người sử dụng có thể thay đổi đuôi mặc định này thành đuôi bất kì, ví dụ ".seg"
bằng tùy chọn -e của dòng lệnh
• Chạy chương trình
• Tách từ một tệp:
vnTokenizer.sh -i <tệp-input> -o <tệp-output> [<các-tùy-chọn>]
24
Hai tùy chọn -i và -o là bắt buộc. Ngoài ra, người dùng có thể cung cấp các tùy
chọn không bắt buộc sau đây:
+) -xo: dùng định dạng XML để biểu diễn kết quả thay vì định dạng mặc định là
văn bản thô.
+) -nu: không sử dụng dấu gạch dưới (no underscore) khi ghi kết quả. Nếu tùy
chọn này được sử dụng thì trong kết quả, các âm tiết không được nối với nhau bằng ký
tự gạch dưới, mà bằng ký tự trắng.
+) -sd: sử dụng mô-đun tách câu trước khi thực hiện tách từ. Nếu tùy chọn này
được sử dụng thì trước tiên vnTokenizer thực hiện tách văn bản input thành một tập
các câu, sau đó thực hiện tách từ từng câu một.Mặc định thì mô-đun tách câu không
được sử dụng, vnTokenizer thực hiện tách từ trên toàn bộ văn bản. Các tùy chọn này
có thể được phối hợp đồng thời với nhau để cho ra kết quả mong muốn.
Ví dụ:
VD1: vnTokenizer.sh -i samples/test0.txt -o samples/test0.tok.txt
Tách từ tệp samples/test0.txt và ghi kết quả vào tệp samples/test0.tok.txt
VD2: vnTokenizer.sh -i samples/test0.txt -o samples/test0.tok.xml -xo
Tương tự như VD1, tuy nhiên tệp kết quả samples/test0.tok.xml sẽ có định dạng
XML.
VD3: vnTokenizer.sh -i samples/test0.txt -o samples/test0.tok.txt -sd
Tương tự như VD1 và sử dụng mô-đun tách câu trước khi tách từ.
• Tách từ một thư mục:
Ngoài các tùy chọn như ở trên, khi tách từ thư mục, chương trình cung cấp thêm
tùy chọn không bắt buộc

+) -e: chỉ định phần mở rộng của các tệp cần tách.
Ví dụ:
a) vnTokenizer.sh -i samples/input -o samples/output
Thực hiện tách từ tất cả các tệp samples/input/*.txt, ghi kết quả ra thư mục
samples/output.
b) vnTokenizer.sh -i samples/input -o samples/output -e .xyz
25

×