lOMoARcPSD| 59031616
1
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1
BÁO CÁO
PHÁT TRI
ÔNG MINH
GIẢNG VIÊN:
NGUY
ỄN MẠNH H
ÙNG
Đề t
ài 24:
H
th
ống tự ộng ph
ân lo
ại email theo chủ ề”
Nhóm l
ớp
:
06
Nhóm Bài t
ập
l
ớn
:
01
Danh sách thành viên
H
ọ v
à tên
:
Mã sinh viên
Nguy
ễn Văn Hiếu
:
B20DCCN257
Nguy
ễn Phương Anh
:
B20DCCN061
Tr
ần ThT
h
ắm
:
B20DCCN657
Nguy
ễn Văn Mạnh
:
B20DCCN429
Hà Nội –
09/2023
lOMoARcPSD| 59031616
2
Chương 1: Bài toán ề tài và xây dựng bộ dữ liệu cho bài toán
I. Bài toán ề tài
Phân loại email theo chủ ề là một ề tài quan trọng trong lĩnh vực xử lý ngôn
ngữ tự nhiên và ứng dụng trí tuệ nhân tạo vào quản lý hộp thư ến của người
dùng. Đề tài này ề cập ến việc phát triển các hệ thống tự ộng phân loại email
thành các chủ ề hoặc danh mục cụ thể dựa trên nội dung của email. Dưới ây là
một trình bày về ề tài phân loại email theo chủ ề.
1.1. Giới thiệu ề tài
Email một phương tiện quan trọng giao tiếp trong kinh doanh cuộc sống
nhân. Tuy nhiên, hộp thư ến của chúng ta thường ầy ắp với hàng trăm hoặc
thậm chí hàng nghìn email mỗi ngày. Để quản email hiệu quả, việc tự ộng phân
loại chúng vào các chủ ề như công việc, nhân, quảng cáo, hoặc dự án cụ thể tr
nên cần thiết.
Mục tiêu chính của tài này phát triển các hệ thống thông minh khả năng
phân loại email dựa trên nội dung và ặc iểm của email. Mỗi email sẽ ược gán vào
một chủ cụ thể. Điều này giúp người dùng dễ dàng tìm kiếm quản email
trong hộp thư ến của họ.
Để thực hiện phân loại email theo chủ ề, phương pháp công nghệ ược áp dụng:
Học máy: Sử dụng các thuật toán học máy như Logistic Regression, Naive Bayes,
hoặc SVM (Support Vector Machine) ể xây dựng mô hình phân loại email.
Phân loại email theo chủ ối diện với nhiều thách thức, bao gồm a dạng trong
nội dung email, ngôn ngữ văn phong giao tiếp. Tuy nhiên, thể ược ứng
dụng rộng rãi trong việc tự ộng quản lý hộp thư ến, tạo ra hệ thống lọc email rác,
hoặc tạo trải nghiệm người dùng tốt hơn trong ứng dụng email.
Phân loại email theo chủ ề là một ề tài quan trọng trong lĩnh vực xử lý ngôn ngữ
tự nhiên và học máy, và có tiềm năng cải thiện sự hiệu quả của việc quản lý email
trong cuộc sống hàng ngày.
lOMoARcPSD| 59031616
3
Đối tượng sử dụng là người có nhu cầu quản lý email với số lượng email lớn.
1.2. Bài toán con
Bài toán này ặt ra yêu cầu xác ịnh chủ của các email ến. Đây một bài toán a
nhãn, có nghĩa có nhiu chủ email, mỗi nhãn ại diện cho một chủ ề cụ thể
mỗi email chỉ thuộc vào một nhãn duy nhất.
Dữ liệu ầu vào: Text (Mỗi email ược biểu diễn dưới dạng văn bản)
Dữ liệu ầu ra: chủ ề của email.
Phương pháp:
+ Sử dụng các mô hình phân loại a lớp và a nhãn
+ Tiến hành tiền xử lý dữ liệu, chẳng hạn như loại bỏ từ dừng, chuyển ổi
văn bản thành biểu diễn số, và trích xuất ặc trưng có ý nghĩa. + Sử dụng
các phương pháp ánh ghiệu suất như Accuracy, Precision, Recall F1-
score ể ánh giá mô hình trên tập dữ liệu kiểm tra.
II. Xây dựng bộ dữ liệu 1.
Quá trình xây dựng dữ liệu
a. Tải email cá nhân và gán nhãn:
Các thành viên tải email từ gmail cá nhân, lưu dưới ịnh dạng UTF-8 vào các file
văn bản.
Mỗi email trên một file, tên file theo quy ước “*.txt” với * là số thứ tự file từ
1 ến 1730.
Kết quả thu ược: 1730 email với tên file lần lượt 1.txt ến 1730.txt
Các thành viên ọc qua các email trong phần cá nhân tải, gán nhãn cho email
phù hợp và file “label.txt” của cá nhân.
Các mẫu ược gán nhãn ược lưu trong file ” label.txt” với ịnh dạng:
Mỗi mẫu gồm một cặp số x.y với x là số thứ tự mẫu tương ứng file
lOMoARcPSD| 59031616
4
x.txt, y là nhãn tương ứng với file ấy gồm các số từ 1 ến 6, phân cách nhau
bởi khoảng trắng.
Kết quả thu ược: File “label.txt”
b. Tiền xử lý dữ liệu:
- Dùng các thư viện regex, underthesea ể xử lý các từ tiếng việt trong email
- Các bước cần xử lý bao gồm:
+ Xóa HTML code trong dữ liệu
+ Chuẩn hóa Unicode tiếng Việt
+ Chuẩn hóa kiểu gõ dấu
+ Tách từ tiếng Việt
+ Đưa về viết thường (lowercase)
+ Xóa các ký tự không cần thiết
+ Loại bỏ các stopword tiếng Việt
- Đọc lần lượt các file “1.txt” ến “1730.txt”, dùng hàm read() ọc toàn bộ nội dung
các file, sau ó ưa qua hàm text_preprocess() ể tiền xử lý, sau ó lưu nội dung ã xử
lý vào các file “*_clean.txt” với x tương ứng với số thứ tự file gốc.
- Đọc thông tin các mẫu từ các file “label.txt”, tách các số thứ tự file vào các file
“label01.txt”, “label02.txt”, “label03.txt”, “label04.txt”, “label05.txt”,
“label06.txt”
- Kết quả thu ược:
Thư mục DATASET_CLEAN bao gồm:
+ 1730 file từ “1_clean.txt” ến “1730_clean.txt”
+ 6 file “label01.txt”, “label02.txt”, “label03.txt”, “label04.txt”,
“label05.txt”, “label06.txt”. File “label01.txt” chứa thông tin số thứ tự các mẫu
mang nhãn ó.
lOMoARcPSD| 59031616
5
2. Thống kê dữ liệu
Bộ dữ liệu gồm 6 nhãn, tương ứng số thứ tự từ 1 ến 6.
Số thứ tự
Nhãn
1
_label_học_tập
2
_label_ ơn_hàng
3
_label_quảng_cáo
4
_label_cảnh_báo
5
_label_ngân_hàng
6
_label_thư_rác
Số liệu thống kê
Tổng số mẫu: 1730 mẫu
Thống kê nhãn theo mẫu
Nhãn
Số lượng
Học tập
313
Đơn hàng
190
Quảng cáo
269
Cảnh báo
359
lOMoARcPSD| 59031616
6
Ngân hàng
284
Thư rác
315
Tổng hợp text:
Mẫu dài nhất (kí tự)
13263
Mẫu ngắn nhất (kí tự)
112
Chiều dài trung bình mẫu (kí tự)
1200
Chương 2: Đánh giá và lựa chọn thuật toán
I. Liệt kê thuật toán
Nhóm lựa chọn 4 thuật toán cho ề tài bao gồm:
lOMoARcPSD| 59031616
7
+ Naive Bayes (thư viện sklearn)
+ Logistic Regression (thư viện sklearn)
+ Support Vector Machine (thư viện sklearn)
+ Skip-gram with Negative Sampling (https://fasttext.cc/)
1. Thuật toán Naive Bayes
1.1. Giới thiệu thuật toán Naive Bayes
Thuật toán Naive Bayes là một trong những thuật toán phân loại phổ biến
trong lĩnh vực học máy và xử lý ngôn ngữ tự nhiên. Thuật toán này dựa trên công
thức Bayes và giả ịnh "ngây thơ" (naive) về sự ộc lập giữa các ặc trưng của dữ liệu.
1.2. Ý tưởng thuật toán Naive Bayes
Ý tưởng cơ bản của Naive Bayes bao gồm xác ịnh các biến ầu vào và ầu ra,
xây dựng bộ dữ liệu huấn luyện với các ví dụ ã ược gán nhãn, tính xác suất tiên
nghiệm của các lớp dựa trên tần số xuất hiện trong dữ liệu huấn luyện, tính xác suất
hậu nghiệm của các lớp dựa trên xác suất tiên nghiệm và ặc trưng của mẫu dữ liệu
mới, và cuối cùng phân loại dựa trên lớp có xác suất hậu nghiệm cao nhất. Mặc dù
thuật toán có giả ịnh ngây thơ về ộc lập giữa các ặc trưng, nó vẫn có hiệu suất tốt
trong nhiều bài toán thực tế và thường ược sử dụng làm cơ sở cho các hệ thống
phân loại phức tạp hơn.
1.3. Ứng dụng chính của thuật toán Naive Bayes
Naive Bayes thường ược sử dụng trong các bài toán phân loại, ặc biệt là
trong phân loại văn bản. Các ứng dụng phổ biến bao gồm:
lOMoARcPSD| 59031616
8
Phân loại email: Xác ịnh xem một email là spam hay không; Hay email
ó thuộc chủ ề nào.
Phân loại văn bản: Xác ịnh chủ ề hoặc lớp của một oạn văn bản.
Phân loại sản phẩm: Xác ịnh loại sản phẩm dựa trên mô tả sản phẩm.
Phân loại tài liệu học thuật: Xác ịnh lĩnh vực của một bài báo dựa trên
nội dung.
1.4. Ưu và nhược iểm của thuật toán Naive Bayes
Ưu iểm: Dễ triển khai và hiệu quả tính toán; hoạt ộng tốt với dữ liệu lớn; phù
hợp cho dữ liệu văn bản.
Nhược iểm: Giả ịnh ngây thơ (Naive) có thể làm giảm ộ chính xác của mô
hình trong các tình huống khi có tương quan mạnh giữa các ặc trưng; cần ủ dữ liệu
ào tạo; không thể học các quan hệ phức tạp (do giả ịnh về sự ộc lập, Naive Bayes
không thể học các quan hệ phức tạp hoặc tương tác giữa các ặc trưng)
2. Thuật toán Logistic Regression
2.1. Giới thiệu thuật toán Logistic Regression
Logistic Regression là một thuật toán phân loại có giám sát
Logistic Regression là 1 thuật toán phân tích dữ liệu sử dụng toán học ể tìm
ra mối quan hệ giữa hai yếu tố dữ liệu. Sau ó, kỹ thuật này sử dụng mối quan hệ ã
tìm ược ể dự oán giá trị của những yếu tố ó dựa trên yếu tố còn lại. Dự oán thường
cho ra một số kết quả hữu hạn, như có hoặc không.
2.2. Ý tưởng thuật toán Logistic Regression
Thuật toán Logistic Regression sử dụng mô hình hồi quy logistic
Mô hình này thường ược sử dụng trong bài toán phân loại ể dự oán một biến
kết quả nhị phân dựa trên một hoặc nhiều biến ầu vào.
2.3. Ứng dụng chính của thuật toán Logistic Regression
lOMoARcPSD| 59031616
9
Logistic Regression thường ược sử dụng trong các bài toán như phân loại
email là spam hay không spam, phân loại khách hàng có mua sản phẩm hay không
mua, dự oán xác suất thành công của một sự kiện, và nhiều ứng dụng khác trong
lĩnh vực học máy và khoa học dữ liệu.
2.4. Ưu và nhược iểm của thuật toán Logistic Regression
Ưu iểm:
+ Dễ hiểu và dễ triển khai: Logistic Regression là một thuật toán ơn
giản và dễ hiểu.
+ Tính tổng quát: Logistic Regression có thể áp dụng cho nhiều bài
toán phân loại khác nhau
+ Dự báo xác suất: Mô hình Logistic Regression có khả năng dự báo
xác suất của một sự kiện xảy ra.
+ Không yêu cầu dữ liệu lớn: Logistic Regression hoạt ộng tốt với dữ
liệu có kích thước nhỏ ến trung bình. Nó không òi hỏi dữ liệu lớn
như một số thuật toán máy học phức tạp khác.
Nhược iểm:
+ Giới hạn về phân phối của dữ liệu: Logistic Regression giả ịnh rằng
biến phụ thuộc ( ầu ra) có phân phối dạng logistic. Nếu dữ liệu
không tuân theo giả ịnh này, mô hình có thể không hoạt ộng tốt và
dự oán sai lệch.
+ Không xử lý tốt với dữ liệu thiếu: Logistic Regression không xử lý
tốt với dữ liệu có giá trị bị thiếu.
+ Khó ứng dụng cho dữ liệu với số lượng biến lớn: Logistic
Regression có thể trở nên không hiệu quả khi có quá nhiều biến ộc
lập, ặc biệt nếu không có kiểm soát phù hợp.
3. Thuật toán Support Vector Machine
3.1. Giới thiệu thuật toán Support Vector Machine
lOMoARcPSD| 59031616
10
Thuật toán Support Vector Machine (SVM) là một thuật toán học máy phổ
biến ược sử dụng cho cả bài toán phân loại (classification) và hồi quy (regression).
SVM tập trung vào việc xác ịnh một siêu mặt phẳng (hoặc siêu không gian phẳng)
tối ưu ể phân tách các iểm dữ liệu thuộc các lớp khác nhau.
3.2. Ý tưởng thuật toán Support Vector Machine
Ý tưởng chính của thuật toán Support Vector Machine (SVM) là tạo ra một
ường biên phân chia tối ưu giữa các lớp dữ liệu sao cho khoảng cách từ các iểm gần
nhất ến ường biên này là lớn nhất. Để thực hiện iều này, SVM sử dụng kỹ thuật tối
ưu hóa ể tìm ra siêu phẳng (hyperplane) tối ưu, có thể là một siêu phẳng tuyến tính
hoặc ược biến ổi phi tuyến tính thông qua các hàm kernel. Sau khi có siêu phẳng tối
ưu, SVM sử dụng nó ể phân loại các iểm dữ liệu mới. SVM là một trong những
thuật toán phân loại mạnh mẽ a dụng trong học máy.
3.3. Ứng dụng chính của thuật toán Support Vector Machine
SVM có nhiều ứng dụng trong các lĩnh vực khác nhau, bao gồm:
Phân loại hình ảnh: SVM ược sử dụng ể phân loại ối tượng trong hình
ảnh, như phát hiện khuôn mặt hoặc nhận diện chữ viết tay.
Phân loại văn bản: SVM có thể ược sử dụng ể phân loại văn bản vào
các danh mục khác nhau, ví dụ như phân loại email spam và không
phải spam.
Dự oán chuỗi thời gian: SVM có thể sử dụng ể dự oán các giá trị trong
chuỗi thời gian, chẳng hạn như giá cổ phiếu hoặc nhiệt ộ.
Phát hiện gian lận tín dụng: SVM có thể ược áp dụng ể phát hiện gian
lận trong giao dịch tín dụng bằng cách phân loại các giao dịch là úng
hoặc sai.
3.4. Ưu và nhược iểm của thuật toán Support Vector Machine
Ưu iểm:
+ Hiệu suất cao khi dữ liệu tách biệt rõ ràng và tương ối ít nhiễu.
lOMoARcPSD| 59031616
11
+ Có khả năng xử lý dữ liệu phi tuyến tính thông qua sử dụng các hàm
kernel.
+ Dự oán tốt trong các không gian chiều cao (high-dimensional spaces).
+ Tích hợp tốt với kỹ thuật hạt nhân (kernel trick) ể tăng tính phân loại.
Nhược iểm:
+ Đòi hỏi một lượng lớn dữ liệu huấn luyện ể ảm bảo hiệu suất tốt.
+ Khó khăn khi áp dụng trên dữ liệu lớn vì yêu cầu tính toán phức tạp.
+ Độ phức tạp của việc tìm hàm tối ưu có thể làm cho quá trình huấn
luyện chậm.
+ Khả năng tùy chỉnh các siêu tham số cần sự hiểu biết chuyên sâu về
thuật toán.
4. Thuật toán Skip-gram with Negative Sampling
4.1. Giới thiệu thuật toán
Thuật toán chính ược sử dụng “Skip-gram with Negative Sampling” ược phát triển
bởi Tomas Mikolov và cộng sự của ông tại Google sử dụng thư viện Fasttext.
4.2. Ý tưởng thuật toán
FastText sử dụng mô hình Word2Vec ể học các biểu diễn từ vựng (word
embeddings) và mô hình các từ dưới dạng vector. Điểm ặc biệt của FastText là nó
cũng học biểu diễn cho các subword (từ phụ), tức là các n-grams (chuỗi n ký tự liên
tiếp) của từ.
FastText cũng sử dụng thuật toán "softmax" ể thực hiện phân loại văn bản
cho các nhiệm vụ như phân loại văn bản hoặc dự oán nhãn. Mô hình FastText ược
ào tạo thông qua việc tối ưu hóa hàm mất mát softmax trên dữ liệu ào tạo.
4.3. Ứng dụng chính của thuật toán
Được sử dụng cho nhiều nhiệm vxử lý ngôn ngữ tự nhiên, bao gồm phân
loại văn bản và nhúng từ.
4.4. Ưu và nhược iểm của thuật toán
lOMoARcPSD| 59031616
12
Ưu iểm: xử lý tốt các từ mới và hiếm.
Nhược iểm: Một trong các nhược iểm lớn của thuật toán trên là yêu cầu một
tập dữ liệu ào tạo lớn ể tạo ra các biểu diễn từ vựng hiệu quả. Trong trường hợp dữ
liệu ào tạo bị thiếu hoặc nhỏ, nó có thể dẫn ến các biểu diễn kém chất lượng.
II. Kịch bản và phương pháp ánh giá
1. Kịch bản
Xây dựng mô hình phân loại email
a. Xây dựng tập train/test
Đọc dữ liệu label từ các file “label01.txt”, “label02.txt”, “label03.txt”,
“label04.txt”, “label05.txt”, “label06.txt” vào 6 mảng lst1, lst2, lst3, lst4, lst5, lst6.
- Dùng hàm shuffle ể sắp xếp ngẫu nhiên các mảng trên.
- Lấy 7/10 phần tử của từng mảng trong 6 mảng, thêm tất cả vào mảng train.
- Lấy 3/10 phần tử của từng mảng trong 6 mảng, thêm tất cả vào mảng test.
Đọc lần lượt các file “*_clean.txt” với * là số thuộc mảng train, lấy nhãn
tương ứng từ các mảng nhãn, nối nhãn + “khoảng trắng” + dữ liệu. Ghi tất cả vào
file “train01.txt”, mỗi mẫu trên một dòng.
Đọc lần lượt các file “*_clean.txt” với * là số thuộc mảng test, lấy nhãn
tương ứng từ các mảng nhãn, nối nhãn + “khoảng trắng” + dữ liệu. Ghi tất cả vào
file “test01.txt”, mỗi mẫu trên một dòng.
Lặp lại 5 lần các bước trên, tạo ra 5 cặp file train, test
Kết quả thu ược: 5 cặp file train, test: train01.txt, test01.txt, train02.txt, test02.txt,
train03.txt, test03.txt, train04.txt, test04.txt, train05.txt, test05.txt,
lOMoARcPSD| 59031616
13
Định dạng mỗi file tương ứng: Mỗi mẫu trên một dòng bắt ầu là nhãn với inh dạng
“_label_tên_nhãn”, tiếp theo là ký tự khoảng trắng, sau ó là nội dung mẫu.
b. Huấn luyện mô hình
1. Thuật toán Naive Bayes
Sử dụng thư viện sklearn, tiền xử lý dữ liệu văn bản bằng TF-IDF Vectorizer
Tạo và huấn luyện mô hình Naive Bayes bằng hàm clf.fit().
2. Thuật toán Logistic Regression
Sử dụng thư viện sklearn, tiền xử lý dữ liệu văn bản bằng TF-IDF Vectorizer
Tạo và huấn luyện mô hình Logistic Regression bằng hàm clf.fit().
3. Thuật toán Support Vector Machine
Sử dụng thư viện sklearn, tiền xử lý dữ liệu văn bản bằng TF-IDF Vectorizer
Tạo và huấn luyện mô hình Support Vector Machine bằng hàm clf.fit().
4. Thuật toán Skip-gram with Negative Sampling
Sử dụng thư viện Fasttext, dùng hàm train_supervised ể huấn luyện mô hình,
mô hình sau huấn luyện lưu vào file “fasttext**.bin”. (với ** lần lượt 01 ến 05
tương ứng với tên tập train).
Kết quả thu ược: 5 file “fasttext01.bin”, “fasttext02.bin”, “fasttext03.bin”,
“fasttext04.bin”, “fasttext05.bin” tương ứng với 5 lần train cho 5 cặp bộ train/test.
2. Phương pháp ánh giá
Sử dụng phương pháp Chia tỉ lệ 7/3:
+ Ta lấy 7/10 tổng số mẫu làm tập huấn luyện (tập train): Tức mẫu làm
tập train.
lOMoARcPSD| 59031616
14
+ Ta lấy 3/10 tổng số mẫu làm tập kiểm tra (tập test): Tức mẫu làm tập
test.
Sử dụng tập dữ liệu kiểm tra (có nhãn) ể ánh giá hiệu suất thuật toán qua các
thông số như acc, pre, rec, f1.
Mỗi thuật toán sẽ trải qua 5 lần train/test, sau ó sẽ lấy trung bình cộng kết quả
4 thông số acc, pre, rec, f1 của mỗi thuật toán.
Thuật toán nào có trung bình cộng f1 lớn nhất sau 5 lần train/test là thuật toán tốt
nhất/
III. Quá trình ánh giá và kết quả thu ược 1. Quá trình ánh giá
Sử dụng phương pháp Chia tỉ lệ 7/3:
+ Ta lấy 7/10 tổng số mẫu làm tập huấn luyện (tập train): Tức
7/10*1730=1211 mẫu làm tập train.
+ Ta lấy 3/10 tổng số mẫu làm tập kiểm tra (tập test): Tức 3/ +
10*1730=519 mẫu làm tập test.
Ta lặp lại quá trình trên 5 lần: Lưu các mẫu dữ liệu vào các tập: train01.txt,
test01.txt, train02.txt, test02.txt, train03.txt, test03.txt, train04.txt, test04.txt,
train05.txt, test05.txt.
Với mỗi bộ train-test ta sẽ có: X_train, y_train, X_test, y_test
Sử dụng các thuật toán Naive Bayes, Logistic Regression, SVM, thư viện
fasttext ể huấn luyện mô hình học máy (dựa vào X_train, y_train) , từ ó dự oán kết
quả nhãn của tập dữ liệu (X_test) trong tập test (ta ược tập y_pred). Sử dụng tập
vừa dự oán ược (y_pred) và y_test ể tính các tham số hiệu suất:
Lặp cho từng nhãn (ở ây là 6 nhãn):
+ Xem nhãn ó là P, các nhãn còn lại là N.
+ Tính TP, TN, FP, FN.
lOMoARcPSD| 59031616
15
+ Tính Acc, Pre, Rec, F1 score cho nhãn ó.
Tính trung bình cho toàn bộ nhãn:
+ Acc = 𝑛
1
𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100%
+ Pre = 𝑛
1
𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100%
+ Rec = 𝑛
1
𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100%
+ F1 score = 𝑛
1
𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100%
*Đánh giá các tham số hiệu suất của mô hình với thuật toán Naïve Bayes, Logistic
Regression, SVM:
Dùng hàm clf.predict() doán ra tập nhãn y_pred.
Lấy tập nhãn thật từ mảng y_test.
Sử dụng 2 mảng y_pred và y_test ể so sánh, ánh giá mô hình.
*Đánh giá các tham số hiệu suất của mô hình với thuật toán Skip-gram with
Negative Sampling:
Lần lượt Dùng hàm load model tải các model từ các file “fasttext01.bin”,
“fasttext02.bin”, “fasttext03.bin”, “fasttext04.bin”, “fasttext05.bin”.
Với mỗi lần:
- Chia dữ liệu mẫu với nhãn từ file test.txt tương ứng với file train.txt.
- Thu ược mảng true_labels, với mảng test_data.
- Lần lượt cho các phần tử tệp test_data cho thuật toán dự oán, lưu nhãn dự oán vào
mảng predict_labels.
- Sử dụng 2 mảng true_labels và predict_labels ể tính toán các tham số ACC, PRE,
REC, F1-score.
lOMoARcPSD| 59031616
16
2. Kết quả
Thuật toán Naive Bayes:
Lần train/test
Acc (%)
Pre (%)
Rec (%)
F1 score (%)
Lần 1
80.92
83.13
80.92
80.62
Lần 2
84.39
85.61
84.39
84.18
Lần 3
84.59
85.39
84.59
84.32
Lần 4
82.08
83.43
82.08
81.60
Lần 5
81.31
82.84
81.31
81.12
Trung bình
82.66
84.08
82.66
82.37
Thuật toán Logistic Regression:
Lần train/test
Acc (%)
Pre (%)
Rec (%)
F1 score (%)
Lần 1
86.32
87.66
87.67
87.53
Lần 2
86.32
93.76
93.64
93.58
Lần 3
86.32
96.03
95.91
95.88
Lần 4
86.32
96.60
96.49
96.48
Lần 5
86.32
96.86
96.79
96.78
Trung bình
86.32
94.18
94.10
94.05
Thuật toán SVM:
Lần train/test
Acc (%)
Pre (%)
Rec (%)
F1 score (%)
Lần 1
96,07
89,21
89,02
89,00
Lần 2
96,39
90,18
89,79
89,88
Lần 3
97.00
91,49
91,30
91,32
Lần 4
96,16
89,32
89,02
89,07
Lần 5
96,04
88,91
88,63
88,69
lOMoARcPSD| 59031616
17
Trung bình
96,32
89,82
89,52
89,59
Thuật toán Skip-gram with Negative Sampling:
Lần train/test
Acc (%)
Pre (%)
Rec (%)
F1 score (%)
Lần 1
73.96
35.47
29.29
19.51
Lần 2
73.74
37.91
28.90
20.36
Lần 3
73.23
36.82
27.55
18.66
Lần 4
73.36
34.94
27.94
19.22
Lần 5
72.34
33.29
25.24
15.15
Trung bình
73.33
35.67
27.78
18.58
Kết quả chung: Ở ây, ta chỉ xem xét tham số F1-score ể ánh giá hiệu suất các mô
hình:
Naive
Bayes
Logistic
Regression
SVM
Skip-gram with Negative
Sampling
F1-score
(%)
82.37
94.05
89,59
18.58
Từ kết quả trên, ta có ánh giá:
+ Naive Bayes: 82.37%
Naive Bayes hiệu suất tương ối thấp hơn so với các thuật toán Logistic Regression,
SVM trong bảng kết quả. Lí do có thể là do Naive Bayes giả ịnh rằng các biến ộc lập
và không có tương tác, iều này có thể không phù hợp với dữ liệu của bạn nếu có các
tương tác phức tạp giữa các ặc trưng.
lOMoARcPSD| 59031616
18
+ Logistic Regression: 94.05%
Logistic Regression hiệu suất tốt hơn so với Naive Bayes SVM. Thuật toán
này một trong những lựa chọn phổ biến giải quyết các bài toán phân loại. Logistic
Regression thường hoạt ộng tốt trên nhiều loại dliệu một trong những hình
ơn giản nhất ể triển khai. khả năng tìm hiểu tốt các tương tác giữa các ặc trưng
và thích hợp cho các tình huống có dữ liệu phân tách tốt.
+ SVM (Support Vector Machine): 89.59%
SVM hiệu suất tốt gần bằng Logistic Regression. SVM khả năng tìm ra ranh
giới quyết ịnh phức tạp hơn so với Logistic Regression, nhưng cũng thể phụ thuộc
vào việc chọn kernel và siêu tham số phù hợp.
+ Skip-gram with Negative Sampling: 18.58%
Hiệu suất của Fasttext thấp hơn áng kể so với các thuật toán khác. Lý dovì thuật
toán yêu cầu một tập dữ liệu ào tạo lớn tạo ra các biểu diễn từ vựng hiệu quả. Trong
trường hợp dữ liệu ào tạo bị thiếu hoặc nhỏ, nó có thể dẫn ến các biểu diễn kém chất
lượng.
Như vậy, Logistic Regression hiệu suất tốt nhất trong bảng kết quả của bạn, ược
tiếp theo bởi SVM Naive Bayes. Fasttext hiệu suất thấp nhất không phù hợp
cho bài toán này.
Ở ây, ta sẽ chọn thuật toán Logistic Regression cho bài toán phân loại chủ ề văn
bản.

Preview text:

lOMoAR cPSD| 59031616
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN 1 BÁO CÁO
PHÁT TRI ỂN HỆ THỐNG TH ÔNG MINH
GIẢNG VIÊN: NGUY ỄN MẠNH H ÙNG
Đề t ài 24: H th ống tự ộng ph ân lo ại email theo chủ ề” Nhóm l ớp : 06
Nhóm Bài t ập l ớn : 01
Danh sách thành viên
H ọ v à tên
: Mã sinh viên
Nguy ễn Văn Hiếu : B20DCCN257
Nguy ễn Phương Anh : B20DCCN061
Tr ần Thị T h ắm : B20DCCN657
Nguy ễn Văn Mạnh : B20DCCN429
Hà Nội – 09/2023 1 lOMoAR cPSD| 59031616
Chương 1: Bài toán ề tài và xây dựng bộ dữ liệu cho bài toán I. Bài toán ề tài
Phân loại email theo chủ ề là một ề tài quan trọng trong lĩnh vực xử lý ngôn
ngữ tự nhiên và ứng dụng trí tuệ nhân tạo vào quản lý hộp thư ến của người
dùng. Đề tài này ề cập ến việc phát triển các hệ thống tự ộng phân loại email
thành các chủ ề hoặc danh mục cụ thể dựa trên nội dung của email. Dưới ây là
một trình bày về ề tài phân loại email theo chủ ề. 1.1. Giới thiệu ề tài
Email là một phương tiện quan trọng ể giao tiếp trong kinh doanh và cuộc sống
cá nhân. Tuy nhiên, hộp thư ến của chúng ta thường ầy ắp với hàng trăm hoặc
thậm chí hàng nghìn email mỗi ngày. Để quản lý email hiệu quả, việc tự ộng phân
loại chúng vào các chủ ề như công việc, cá nhân, quảng cáo, hoặc dự án cụ thể trở nên cần thiết.
Mục tiêu chính của ề tài này là phát triển các hệ thống thông minh có khả năng
phân loại email dựa trên nội dung và ặc iểm của email. Mỗi email sẽ ược gán vào
một chủ ề cụ thể. Điều này giúp người dùng dễ dàng tìm kiếm và quản lý email
trong hộp thư ến của họ.
Để thực hiện phân loại email theo chủ ề, phương pháp và công nghệ ược áp dụng:
Học máy: Sử dụng các thuật toán học máy như Logistic Regression, Naive Bayes,
hoặc SVM (Support Vector Machine) ể xây dựng mô hình phân loại email.
Phân loại email theo chủ ề ối diện với nhiều thách thức, bao gồm a dạng trong
nội dung email, ngôn ngữ và văn phong giao tiếp. Tuy nhiên, nó có thể ược ứng
dụng rộng rãi trong việc tự ộng quản lý hộp thư ến, tạo ra hệ thống lọc email rác,
hoặc tạo trải nghiệm người dùng tốt hơn trong ứng dụng email.
Phân loại email theo chủ ề là một ề tài quan trọng trong lĩnh vực xử lý ngôn ngữ
tự nhiên và học máy, và có tiềm năng cải thiện sự hiệu quả của việc quản lý email
trong cuộc sống hàng ngày. 2 lOMoAR cPSD| 59031616
Đối tượng sử dụng là người có nhu cầu quản lý email với số lượng email lớn. 1.2. Bài toán con
Bài toán này ặt ra yêu cầu xác ịnh chủ ề của các email ến. Đây là một bài toán a
nhãn, có nghĩa là có nhiều chủ ề email, mỗi nhãn ại diện cho một chủ ề cụ thể và
mỗi email chỉ thuộc vào một nhãn duy nhất.
− Dữ liệu ầu vào: Text (Mỗi email ược biểu diễn dưới dạng văn bản) −
Dữ liệu ầu ra: chủ ề của email. − Phương pháp:
+ Sử dụng các mô hình phân loại a lớp và a nhãn
+ Tiến hành tiền xử lý dữ liệu, chẳng hạn như loại bỏ từ dừng, chuyển ổi
văn bản thành biểu diễn số, và trích xuất ặc trưng có ý nghĩa. + Sử dụng
các phương pháp ánh giá hiệu suất như Accuracy, Precision, Recall và F1-
score ể ánh giá mô hình trên tập dữ liệu kiểm tra.
II. Xây dựng bộ dữ liệu 1.
Quá trình xây dựng dữ liệu
a. Tải email cá nhân và gán nhãn:
Các thành viên tải email từ gmail cá nhân, lưu dưới ịnh dạng UTF-8 vào các file văn bản.
Mỗi email trên một file, tên file theo quy ước “*.txt” với * là số thứ tự file từ 1 ến 1730.
Kết quả thu ược: 1730 email với tên file lần lượt 1.txt ến 1730.txt
Các thành viên ọc qua các email trong phần cá nhân tải, gán nhãn cho email
phù hợp và file “label.txt” của cá nhân.
Các mẫu ược gán nhãn ược lưu trong file ” label.txt” với ịnh dạng:
Mỗi mẫu gồm một cặp số x.y với x là số thứ tự mẫu tương ứng file 3 lOMoAR cPSD| 59031616
x.txt, y là nhãn tương ứng với file ấy gồm các số từ 1 ến 6, phân cách nhau bởi khoảng trắng.
Kết quả thu ược: File “label.txt”
b. Tiền xử lý dữ liệu:
- Dùng các thư viện regex, underthesea ể xử lý các từ tiếng việt trong email
- Các bước cần xử lý bao gồm:
+ Xóa HTML code trong dữ liệu
+ Chuẩn hóa Unicode tiếng Việt
+ Chuẩn hóa kiểu gõ dấu + Tách từ tiếng Việt
+ Đưa về viết thường (lowercase)
+ Xóa các ký tự không cần thiết
+ Loại bỏ các stopword tiếng Việt
- Đọc lần lượt các file “1.txt” ến “1730.txt”, dùng hàm read() ọc toàn bộ nội dung
các file, sau ó ưa qua hàm text_preprocess() ể tiền xử lý, sau ó lưu nội dung ã xử
lý vào các file “*_clean.txt” với x tương ứng với số thứ tự file gốc.
- Đọc thông tin các mẫu từ các file “label.txt”, tách các số thứ tự file vào các file
“label01.txt”, “label02.txt”, “label03.txt”, “label04.txt”, “label05.txt”, “label06.txt” - Kết quả thu ược:
Thư mục DATASET_CLEAN bao gồm:
+ 1730 file từ “1_clean.txt” ến “1730_clean.txt”
+ 6 file “label01.txt”, “label02.txt”, “label03.txt”, “label04.txt”,
“label05.txt”, “label06.txt”. File “label01.txt” chứa thông tin số thứ tự các mẫu mang nhãn ó. 4 lOMoAR cPSD| 59031616
2. Thống kê dữ liệu
Bộ dữ liệu gồm 6 nhãn, tương ứng số thứ tự từ 1 ến 6. Số thứ tự Nhãn 1 _label_học_tập 2 _label_ ơn_hàng 3 _label_quảng_cáo 4 _label_cảnh_báo 5 _label_ngân_hàng 6 _label_thư_rác • Số liệu thống kê
− Tổng số mẫu: 1730 mẫu
− Thống kê nhãn theo mẫu Nhãn Số lượng Học tập 313 Đơn hàng 190 Quảng cáo 269 Cảnh báo 359 5 lOMoAR cPSD| 59031616 Ngân hàng 284 Thư rác 315 • Tổng hợp text: Mẫu dài nhất (kí tự) 13263
Mẫu ngắn nhất (kí tự) 112
Chiều dài trung bình mẫu (kí tự) 1200
Chương 2: Đánh giá và lựa chọn thuật toán I.
Liệt kê thuật toán
Nhóm lựa chọn 4 thuật toán cho ề tài bao gồm: 6 lOMoAR cPSD| 59031616
+ Naive Bayes (thư viện sklearn)
+ Logistic Regression (thư viện sklearn)
+ Support Vector Machine (thư viện sklearn)
+ Skip-gram with Negative Sampling (https://fasttext.cc/)
1. Thuật toán Naive Bayes
1.1. Giới thiệu thuật toán Naive Bayes
Thuật toán Naive Bayes là một trong những thuật toán phân loại phổ biến
trong lĩnh vực học máy và xử lý ngôn ngữ tự nhiên. Thuật toán này dựa trên công
thức Bayes và giả ịnh "ngây thơ" (naive) về sự ộc lập giữa các ặc trưng của dữ liệu.
1.2. Ý tưởng thuật toán Naive Bayes
Ý tưởng cơ bản của Naive Bayes bao gồm xác ịnh các biến ầu vào và ầu ra,
xây dựng bộ dữ liệu huấn luyện với các ví dụ ã ược gán nhãn, tính xác suất tiên
nghiệm của các lớp dựa trên tần số xuất hiện trong dữ liệu huấn luyện, tính xác suất
hậu nghiệm của các lớp dựa trên xác suất tiên nghiệm và ặc trưng của mẫu dữ liệu
mới, và cuối cùng phân loại dựa trên lớp có xác suất hậu nghiệm cao nhất. Mặc dù
thuật toán có giả ịnh ngây thơ về ộc lập giữa các ặc trưng, nó vẫn có hiệu suất tốt
trong nhiều bài toán thực tế và thường ược sử dụng làm cơ sở cho các hệ thống
phân loại phức tạp hơn.
1.3. Ứng dụng chính của thuật toán Naive Bayes
Naive Bayes thường ược sử dụng trong các bài toán phân loại, ặc biệt là
trong phân loại văn bản. Các ứng dụng phổ biến bao gồm: 7 lOMoAR cPSD| 59031616
− Phân loại email: Xác ịnh xem một email là spam hay không; Hay email ó thuộc chủ ề nào.
− Phân loại văn bản: Xác ịnh chủ ề hoặc lớp của một oạn văn bản.
− Phân loại sản phẩm: Xác ịnh loại sản phẩm dựa trên mô tả sản phẩm.
− Phân loại tài liệu học thuật: Xác ịnh lĩnh vực của một bài báo dựa trên nội dung.
1.4. Ưu và nhược iểm của thuật toán Naive Bayes
Ưu iểm: Dễ triển khai và hiệu quả tính toán; hoạt ộng tốt với dữ liệu lớn; phù
hợp cho dữ liệu văn bản.
Nhược iểm: Giả ịnh ngây thơ (Naive) có thể làm giảm ộ chính xác của mô
hình trong các tình huống khi có tương quan mạnh giữa các ặc trưng; cần ủ dữ liệu
ào tạo; không thể học các quan hệ phức tạp (do giả ịnh về sự ộc lập, Naive Bayes
không thể học các quan hệ phức tạp hoặc tương tác giữa các ặc trưng)
2. Thuật toán Logistic Regression
2.1. Giới thiệu thuật toán Logistic Regression
Logistic Regression là một thuật toán phân loại có giám sát
Logistic Regression là 1 thuật toán phân tích dữ liệu sử dụng toán học ể tìm
ra mối quan hệ giữa hai yếu tố dữ liệu. Sau ó, kỹ thuật này sử dụng mối quan hệ ã
tìm ược ể dự oán giá trị của những yếu tố ó dựa trên yếu tố còn lại. Dự oán thường
cho ra một số kết quả hữu hạn, như có hoặc không.
2.2. Ý tưởng thuật toán Logistic Regression
Thuật toán Logistic Regression sử dụng mô hình hồi quy logistic
Mô hình này thường ược sử dụng trong bài toán phân loại ể dự oán một biến
kết quả nhị phân dựa trên một hoặc nhiều biến ầu vào.
2.3. Ứng dụng chính của thuật toán Logistic Regression 8 lOMoAR cPSD| 59031616
Logistic Regression thường ược sử dụng trong các bài toán như phân loại
email là spam hay không spam, phân loại khách hàng có mua sản phẩm hay không
mua, dự oán xác suất thành công của một sự kiện, và nhiều ứng dụng khác trong
lĩnh vực học máy và khoa học dữ liệu.
2.4. Ưu và nhược iểm của thuật toán Logistic Regression Ưu iểm:
+ Dễ hiểu và dễ triển khai: Logistic Regression là một thuật toán ơn giản và dễ hiểu.
+ Tính tổng quát: Logistic Regression có thể áp dụng cho nhiều bài toán phân loại khác nhau
+ Dự báo xác suất: Mô hình Logistic Regression có khả năng dự báo
xác suất của một sự kiện xảy ra.
+ Không yêu cầu dữ liệu lớn: Logistic Regression hoạt ộng tốt với dữ
liệu có kích thước nhỏ ến trung bình. Nó không òi hỏi dữ liệu lớn
như một số thuật toán máy học phức tạp khác. Nhược iểm:
+ Giới hạn về phân phối của dữ liệu: Logistic Regression giả ịnh rằng
biến phụ thuộc ( ầu ra) có phân phối dạng logistic. Nếu dữ liệu
không tuân theo giả ịnh này, mô hình có thể không hoạt ộng tốt và dự oán sai lệch.
+ Không xử lý tốt với dữ liệu thiếu: Logistic Regression không xử lý
tốt với dữ liệu có giá trị bị thiếu.
+ Khó ứng dụng cho dữ liệu với số lượng biến lớn: Logistic
Regression có thể trở nên không hiệu quả khi có quá nhiều biến ộc
lập, ặc biệt nếu không có kiểm soát phù hợp.
3. Thuật toán Support Vector Machine
3.1. Giới thiệu thuật toán Support Vector Machine 9 lOMoAR cPSD| 59031616
Thuật toán Support Vector Machine (SVM) là một thuật toán học máy phổ
biến ược sử dụng cho cả bài toán phân loại (classification) và hồi quy (regression).
SVM tập trung vào việc xác ịnh một siêu mặt phẳng (hoặc siêu không gian phẳng)
tối ưu ể phân tách các iểm dữ liệu thuộc các lớp khác nhau.
3.2. Ý tưởng thuật toán Support Vector Machine
Ý tưởng chính của thuật toán Support Vector Machine (SVM) là tạo ra một
ường biên phân chia tối ưu giữa các lớp dữ liệu sao cho khoảng cách từ các iểm gần
nhất ến ường biên này là lớn nhất. Để thực hiện iều này, SVM sử dụng kỹ thuật tối
ưu hóa ể tìm ra siêu phẳng (hyperplane) tối ưu, có thể là một siêu phẳng tuyến tính
hoặc ược biến ổi phi tuyến tính thông qua các hàm kernel. Sau khi có siêu phẳng tối
ưu, SVM sử dụng nó ể phân loại các iểm dữ liệu mới. SVM là một trong những
thuật toán phân loại mạnh mẽ và a dụng trong học máy.
3.3. Ứng dụng chính của thuật toán Support Vector Machine
SVM có nhiều ứng dụng trong các lĩnh vực khác nhau, bao gồm:
− Phân loại hình ảnh: SVM ược sử dụng ể phân loại ối tượng trong hình
ảnh, như phát hiện khuôn mặt hoặc nhận diện chữ viết tay.
− Phân loại văn bản: SVM có thể ược sử dụng ể phân loại văn bản vào
các danh mục khác nhau, ví dụ như phân loại email spam và không phải spam.
− Dự oán chuỗi thời gian: SVM có thể sử dụng ể dự oán các giá trị trong
chuỗi thời gian, chẳng hạn như giá cổ phiếu hoặc nhiệt ộ.
− Phát hiện gian lận tín dụng: SVM có thể ược áp dụng ể phát hiện gian
lận trong giao dịch tín dụng bằng cách phân loại các giao dịch là úng hoặc sai.
3.4. Ưu và nhược iểm của thuật toán Support Vector Machine Ưu iểm:
+ Hiệu suất cao khi dữ liệu tách biệt rõ ràng và tương ối ít nhiễu. 10 lOMoAR cPSD| 59031616
+ Có khả năng xử lý dữ liệu phi tuyến tính thông qua sử dụng các hàm kernel.
+ Dự oán tốt trong các không gian chiều cao (high-dimensional spaces).
+ Tích hợp tốt với kỹ thuật hạt nhân (kernel trick) ể tăng tính phân loại. Nhược iểm:
+ Đòi hỏi một lượng lớn dữ liệu huấn luyện ể ảm bảo hiệu suất tốt.
+ Khó khăn khi áp dụng trên dữ liệu lớn vì yêu cầu tính toán phức tạp.
+ Độ phức tạp của việc tìm hàm tối ưu có thể làm cho quá trình huấn luyện chậm.
+ Khả năng tùy chỉnh các siêu tham số cần sự hiểu biết chuyên sâu về thuật toán.
4. Thuật toán Skip-gram with Negative Sampling
4.1. Giới thiệu thuật toán
Thuật toán chính ược sử dụng là “Skip-gram with Negative Sampling” ược phát triển
bởi Tomas Mikolov và cộng sự của ông tại Google sử dụng thư viện Fasttext.
4.2. Ý tưởng thuật toán
FastText sử dụng mô hình Word2Vec ể học các biểu diễn từ vựng (word
embeddings) và mô hình các từ dưới dạng vector. Điểm ặc biệt của FastText là nó
cũng học biểu diễn cho các subword (từ phụ), tức là các n-grams (chuỗi n ký tự liên tiếp) của từ.
FastText cũng sử dụng thuật toán "softmax" ể thực hiện phân loại văn bản
cho các nhiệm vụ như phân loại văn bản hoặc dự oán nhãn. Mô hình FastText ược
ào tạo thông qua việc tối ưu hóa hàm mất mát softmax trên dữ liệu ào tạo.
4.3. Ứng dụng chính của thuật toán
Được sử dụng cho nhiều nhiệm vụ xử lý ngôn ngữ tự nhiên, bao gồm phân
loại văn bản và nhúng từ.
4.4. Ưu và nhược iểm của thuật toán 11 lOMoAR cPSD| 59031616
Ưu iểm: xử lý tốt các từ mới và hiếm.
Nhược iểm: Một trong các nhược iểm lớn của thuật toán trên là yêu cầu một
tập dữ liệu ào tạo lớn ể tạo ra các biểu diễn từ vựng hiệu quả. Trong trường hợp dữ
liệu ào tạo bị thiếu hoặc nhỏ, nó có thể dẫn ến các biểu diễn kém chất lượng. II.
Kịch bản và phương pháp ánh giá 1. Kịch bản
Xây dựng mô hình phân loại email
a. Xây dựng tập train/test
Đọc dữ liệu label từ các file “label01.txt”, “label02.txt”, “label03.txt”,
“label04.txt”, “label05.txt”, “label06.txt” vào 6 mảng lst1, lst2, lst3, lst4, lst5, lst6.
- Dùng hàm shuffle ể sắp xếp ngẫu nhiên các mảng trên.
- Lấy 7/10 phần tử của từng mảng trong 6 mảng, thêm tất cả vào mảng train.
- Lấy 3/10 phần tử của từng mảng trong 6 mảng, thêm tất cả vào mảng test.
Đọc lần lượt các file “*_clean.txt” với * là số thuộc mảng train, lấy nhãn
tương ứng từ các mảng nhãn, nối nhãn + “khoảng trắng” + dữ liệu. Ghi tất cả vào
file “train01.txt”, mỗi mẫu trên một dòng.
Đọc lần lượt các file “*_clean.txt” với * là số thuộc mảng test, lấy nhãn
tương ứng từ các mảng nhãn, nối nhãn + “khoảng trắng” + dữ liệu. Ghi tất cả vào
file “test01.txt”, mỗi mẫu trên một dòng.
Lặp lại 5 lần các bước trên, tạo ra 5 cặp file train, test
Kết quả thu ược: 5 cặp file train, test: train01.txt, test01.txt, train02.txt, test02.txt,
train03.txt, test03.txt, train04.txt, test04.txt, train05.txt, test05.txt, 12 lOMoAR cPSD| 59031616
Định dạng mỗi file tương ứng: Mỗi mẫu trên một dòng bắt ầu là nhãn với inh dạng
“_label_tên_nhãn”, tiếp theo là ký tự khoảng trắng, sau ó là nội dung mẫu. b. Huấn luyện mô hình 1. Thuật toán Naive Bayes
Sử dụng thư viện sklearn, tiền xử lý dữ liệu văn bản bằng TF-IDF Vectorizer
Tạo và huấn luyện mô hình Naive Bayes bằng hàm clf.fit().
2. Thuật toán Logistic Regression
Sử dụng thư viện sklearn, tiền xử lý dữ liệu văn bản bằng TF-IDF Vectorizer
Tạo và huấn luyện mô hình Logistic Regression bằng hàm clf.fit().
3. Thuật toán Support Vector Machine
Sử dụng thư viện sklearn, tiền xử lý dữ liệu văn bản bằng TF-IDF Vectorizer
Tạo và huấn luyện mô hình Support Vector Machine bằng hàm clf.fit().
4. Thuật toán Skip-gram with Negative Sampling
Sử dụng thư viện Fasttext, dùng hàm train_supervised ể huấn luyện mô hình,
mô hình sau huấn luyện lưu vào file “fasttext**.bin”. (với ** lần lượt 01 ến 05
tương ứng với tên tập train).
Kết quả thu ược: 5 file “fasttext01.bin”, “fasttext02.bin”, “fasttext03.bin”,
“fasttext04.bin”, “fasttext05.bin” tương ứng với 5 lần train cho 5 cặp bộ train/test.
2. Phương pháp ánh giá
Sử dụng phương pháp Chia tỉ lệ 7/3:
+ Ta lấy 7/10 tổng số mẫu làm tập huấn luyện (tập train): Tức mẫu làm tập train. 13 lOMoAR cPSD| 59031616
+ Ta lấy 3/10 tổng số mẫu làm tập kiểm tra (tập test): Tức mẫu làm tập test.
Sử dụng tập dữ liệu kiểm tra (có nhãn) ể ánh giá hiệu suất thuật toán qua các
thông số như acc, pre, rec, f1.
Mỗi thuật toán sẽ trải qua 5 lần train/test, sau ó sẽ lấy trung bình cộng kết quả
4 thông số acc, pre, rec, f1 của mỗi thuật toán.
Thuật toán nào có trung bình cộng f1 lớn nhất sau 5 lần train/test là thuật toán tốt nhất/
III. Quá trình ánh giá và kết quả thu ược 1. Quá trình ánh giá
Sử dụng phương pháp Chia tỉ lệ 7/3:
+ Ta lấy 7/10 tổng số mẫu làm tập huấn luyện (tập train): Tức
7/10*1730=1211 mẫu làm tập train.
+ Ta lấy 3/10 tổng số mẫu làm tập kiểm tra (tập test): Tức 3/ +
10*1730=519 mẫu làm tập test.
Ta lặp lại quá trình trên 5 lần: Lưu các mẫu dữ liệu vào các tập: train01.txt,
test01.txt, train02.txt, test02.txt, train03.txt, test03.txt, train04.txt, test04.txt, train05.txt, test05.txt.
Với mỗi bộ train-test ta sẽ có: X_train, y_train, X_test, y_test
Sử dụng các thuật toán Naive Bayes, Logistic Regression, SVM, thư viện
fasttext ể huấn luyện mô hình học máy (dựa vào X_train, y_train) , từ ó dự oán kết
quả nhãn của tập dữ liệu (X_test) trong tập test (ta ược tập y_pred). Sử dụng tập
vừa dự oán ược (y_pred) và y_test ể tính các tham số hiệu suất:
Lặp cho từng nhãn (ở ây là 6 nhãn):
+ Xem nhãn ó là P, các nhãn còn lại là N. + Tính TP, TN, FP, FN. 14 lOMoAR cPSD| 59031616
+ Tính Acc, Pre, Rec, F1 score cho nhãn ó.
Tính trung bình cho toàn bộ nhãn: + Acc =
∑𝑛1 𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100% + Pre =
∑𝑛1 𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100%
+ Rec = ∑𝑛1 𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100% + F1 score =
∑𝑛1 𝑆ố 𝑚ẫ𝑢 𝑛ℎã𝑛 𝑖 * 100%
*Đánh giá các tham số hiệu suất của mô hình với thuật toán Naïve Bayes, Logistic Regression, SVM:
Dùng hàm clf.predict() ể dự oán ra tập nhãn y_pred.
Lấy tập nhãn thật từ mảng y_test.
Sử dụng 2 mảng y_pred và y_test ể so sánh, ánh giá mô hình.
*Đánh giá các tham số hiệu suất của mô hình với thuật toán Skip-gram with Negative Sampling:
Lần lượt Dùng hàm load model tải các model từ các file “fasttext01.bin”,
“fasttext02.bin”, “fasttext03.bin”, “fasttext04.bin”, “fasttext05.bin”. Với mỗi lần:
- Chia dữ liệu mẫu với nhãn từ file test.txt tương ứng với file train.txt.
- Thu ược mảng true_labels, với mảng test_data.
- Lần lượt cho các phần tử tệp test_data cho thuật toán dự oán, lưu nhãn dự oán vào mảng predict_labels.
- Sử dụng 2 mảng true_labels và predict_labels ể tính toán các tham số ACC, PRE, REC, F1-score. 15 lOMoAR cPSD| 59031616 2. Kết quả Thuật toán Naive Bayes:
Lần train/test Acc (%) Pre (%) Rec (%) F1 score (%) Lần 1 80.92 83.13 80.92 80.62 Lần 2 84.39 85.61 84.39 84.18 Lần 3 84.59 85.39 84.59 84.32 Lần 4 82.08 83.43 82.08 81.60 Lần 5 81.31 82.84 81.31 81.12 Trung bình 82.66 84.08 82.66 82.37
Thuật toán Logistic Regression:
Lần train/test Acc (%) Pre (%) Rec (%) F1 score (%) Lần 1 86.32 87.66 87.67 87.53 Lần 2 86.32 93.76 93.64 93.58 Lần 3 86.32 96.03 95.91 95.88 Lần 4 86.32 96.60 96.49 96.48 Lần 5 86.32 96.86 96.79 96.78 Trung bình 86.32 94.18 94.10 94.05 Thuật toán SVM:
Lần train/test Acc (%) Pre (%) Rec (%) F1 score (%) Lần 1 96,07 89,21 89,02 89,00 Lần 2 96,39 90,18 89,79 89,88 Lần 3 97.00 91,49 91,30 91,32 Lần 4 96,16 89,32 89,02 89,07 Lần 5 96,04 88,91 88,63 88,69 16 lOMoAR cPSD| 59031616 Trung bình 96,32 89,82 89,52 89,59
Thuật toán Skip-gram with Negative Sampling:
Lần train/test Acc (%) Pre (%) Rec (%) F1 score (%) Lần 1 73.96 35.47 29.29 19.51 Lần 2 73.74 37.91 28.90 20.36 Lần 3 73.23 36.82 27.55 18.66 Lần 4 73.36 34.94 27.94 19.22 Lần 5 72.34 33.29 25.24 15.15 Trung bình 73.33 35.67 27.78 18.58
Kết quả chung: Ở ây, ta chỉ xem xét tham số F1-score ể ánh giá hiệu suất các mô hình: Naive Logistic SVM Skip-gram with Negative Bayes Regression Sampling F1-score 82.37 94.05 89,59 18.58 (%)
Từ kết quả trên, ta có ánh giá: + Naive Bayes: 82.37%
Naive Bayes có hiệu suất tương ối thấp hơn so với các thuật toán Logistic Regression,
SVM trong bảng kết quả. Lí do có thể là do Naive Bayes giả ịnh rằng các biến ộc lập
và không có tương tác, iều này có thể không phù hợp với dữ liệu của bạn nếu có các
tương tác phức tạp giữa các ặc trưng. 17 lOMoAR cPSD| 59031616 + Logistic Regression: 94.05%
Logistic Regression có hiệu suất tốt hơn so với Naive Bayes và SVM. Thuật toán
này là một trong những lựa chọn phổ biến ể giải quyết các bài toán phân loại. Logistic
Regression thường hoạt ộng tốt trên nhiều loại dữ liệu và là một trong những mô hình
ơn giản nhất ể triển khai. Nó có khả năng tìm hiểu tốt các tương tác giữa các ặc trưng
và thích hợp cho các tình huống có dữ liệu phân tách tốt.
+ SVM (Support Vector Machine): 89.59%
SVM có hiệu suất tốt và gần bằng Logistic Regression. SVM có khả năng tìm ra ranh
giới quyết ịnh phức tạp hơn so với Logistic Regression, nhưng cũng có thể phụ thuộc
vào việc chọn kernel và siêu tham số phù hợp.
+ Skip-gram with Negative Sampling: 18.58%
Hiệu suất của Fasttext thấp hơn áng kể so với các thuật toán khác. Lý do là vì thuật
toán yêu cầu một tập dữ liệu ào tạo lớn ể tạo ra các biểu diễn từ vựng hiệu quả. Trong
trường hợp dữ liệu ào tạo bị thiếu hoặc nhỏ, nó có thể dẫn ến các biểu diễn kém chất lượng.
Như vậy, Logistic Regression có hiệu suất tốt nhất trong bảng kết quả của bạn, ược
tiếp theo bởi SVM và Naive Bayes. Fasttext có hiệu suất thấp nhất và không phù hợp cho bài toán này.
Ở ây, ta sẽ chọn thuật toán Logistic Regression cho bài toán phân loại chủ ề văn bản. 18