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

BÁO CÁO MÔN HỌC NHẬP MÔN HỌC MÁY VÀ KHAI PHÁ DỮ LIỆU Đề tài: Nhận diện cảm xúc tích cực – tiêu cực dựa vào bình luận ( có source code)

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 MB, 23 trang )

ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG

BÁO CÁO MÔN HỌC
NHẬP MÔN HỌC MÁY VÀ KHAI PHÁ DỮ LIỆU
Đề tài: Nhận diện cảm xúc tích cực – tiêu cực dựa vào bình luận.

Giảng viên hướng dẫn: ThS. Ngô Văn Linh
Mã lớp học: 132646
Danh sách sinh viên thực hiện:
STT

Họ và tên

MSSV

HÀ NỘI, 06 – 2022

Lớp


Lời cảm ơn
Trong suốt quá trình thực hiện bài tập lớn, chúng em luôn được sự quan tâm, hướng dẫn và giúp
đỡ tận tình của thầy cơ cùng với sự động viên của bạn bè đồng nghiệp.
Chúng em xin được bày tỏ lịng biết ơn tới thầy giáo ThS Ngơ Văn Linh đã trực tiếp giúp đỡ,
hướng dẫn chúng em hồn thành bài tập lớn này.

Tóm tắt nội dung
Bài báo cáo nói về thuật tốn SVM, các phương pháp tiền xử lý dữ liệu để sử dụng mơ hình
SVM để phân loại nhãn tích cực, tiêu cực cho các bình luận và kết quả của mơ hình.



Mục lục
CHƯƠNG 1. Giới thiệu và mơ tả bài tốn..................................................................................4
1.1

Giới thiệu bài tốn...............................................................................................................4

1.2

Mơ tả bài tốn......................................................................................................................4

CHƯƠNG 2. Phân tích tập dữ liệu sử dụng...............................................................................5
2.1

Tổng quan về tập dữ liệu.....................................................................................................5
2.1.1

Nguồn dữ liệu.......................................................................................................5

2.1.2

Các thuộc tính của tập dữ liệu..............................................................................5

2.2

Phân tích dữ liệu..................................................................................................................6

2.3

Tiền xử lý dữ liệu................................................................................................................7

2.3.1

Chuẩn hóa dữ liệu.................................................................................................7

2.3.2

. Làm giàu dữ liệu.................................................................................................9

2.3.3

Dữ liệu sau khi được xử lý.................................................................................10

2.3.4

Chuyển đổi dữ liệu sang vector..........................................................................10

CHƯƠNG 3. Mơ hình SVM trong bài tốn..............................................................................13
3.1

3.2

Thuật tốn SVM................................................................................................................13
3.1.1

Định nghĩa..........................................................................................................13

3.1.2

Ý tưởng của phương pháp..................................................................................13


3.1.3

Cơ sở lý thuyết...................................................................................................15

SVM đối với bài tốn đặt ra..............................................................................................16

CHƯƠNG 4. Q trình chạy mơ hình và kết quả....................................................................17
4.1

Pipeline xử lý và huấn luyện mơ hình...............................................................................17

4.2

Tinh chỉnh (tuning) các siêu tham số................................................................................18

4.3

Kết quả và nhận xét...........................................................................................................18

CHƯƠNG 5. Khó khăn gặp phải, hướng phát triển và kết luận............................................20
5.1

Khó khăn gặp phải.............................................................................................................20

5.2

Hướng phát triển................................................................................................................20

5.3


Kết luận.............................................................................................................................20

Tài liệu tham khảo và công nghệ sử dụng.................................................................................21
Tài liệu tham khảo:........................................................................................................................21
[1] Bài giảng Nhập môn Machine Learning and Data Mining, thầy Ngô Văn Linh........21
[2] Thư viện sklearn: />

[3]
Bài
19:
Support
Vector
Machine:
/>[4] Bộ dữ liệu: NLP_Vietnamese | Kaggle.......................................................................21
[5] N-gram wikipedia........................................................................................................21
[6] TF-IDF: />Các công nghệ sử dụng..................................................................................................................21


CHƯƠNG 1. Giới thiệu và mơ tả bài tốn

1.1 Giới thiệu bài tốn
Hiện nay, việc phân tích dữ liệu của các doanh nghiệp là rất cần thiết. Đặc biệt là đối với các
doanh nghiệp kinh doanh, buôn bán các sản phẩm thì việc biết được đánh giá của người dùng đối
với sản phẩm của mình là tích cực hay tiêu cực là rất quan trọng. Từ những dữ liệu được phân
tích đó, có thể giúp doanh nghiệp cải thiện được chất lượng sản phẩm, chất lượng dịch vụ giữ
chân khách hàng đối với sản phẩm.
Dựa trên vấn đề đó, cùng với việc tìm hiểu mơn “ Nhập mơn học máy và khai phá dữ liệu”,
nhóm chúng em quyết định lựa chọn bài tốn nhận diện cảm xúc tích cực – tiêu cực dựa trên
bình luận.


1.2 Mơ tả bài tốn
Các trang thương mại điện tử là nơi trao đổi buôn bán giữa người bán và người mua, các dữ liệu
về bình luận của người dùng là rất lớn. Nhiệm vụ của chúng ta đó là xây dựng một mơ hình có
thể dự đốn cám xúc của người dùng thơng qua các bình luận đó.
 Đầu vào: Một tệp dữ liệu chứa thơng tin về bình luận của người dùng
 Đầu ra: Tập dữ liệu bình luận đã được phân loại theo hai tiêu chí: bình luận tích cực và
bình luận tiêu cực
 Phương pháp: Nhóm sử dụng phương pháp SVM cho việc phân loại văn bản
 Tập dữ liệu: Tập dữ liệu bình luận được lấy từ các trang thương mại điện tử


CHƯƠNG 2. Phân tích tập dữ liệu sử dụng

2.1 Tổng quan về tập dữ liệu
2.1.1 Nguồn dữ liệu
Đối với yêu cầu của bài toán này, dữ liệu được chúng em sử dụng gồm có bình luận đánh giá các
sản phẩm khi mua hàng. Dữ liệu được sử dụng từ các nguồn có sẵn.
Để phục vụ việc học của mơ hình nhóm sử dụng hai tập dữ liệu: Tập dữ liệu thứ nhất được lấy từ
cuộc thi NLP VietNamese trên Kaggle, tập dữ liệu thứ hai được lấy từ các trang thương mại điện
tử và đã được tinh chỉnh.
Bên cạnh dữ liệu học, nhóm cịn sử dụng các bộ từ điển gồm các từ mang ý nghĩa tích cực, tiêu
cực hoặc phủ định

Hình 2.1: Các bộ từ điển được sử dụng thêm

2.1.2 Các thuộc tính của tập dữ liệu
Như đã đề cập ở trên, dữ liệu được sử dụng gồm có hai tập khác nhau:
 Tập dữ liệu thứ nhất gồm có 15776 hàng và 3 cột. Trong đó, mỗi hàng là thơng tin của
một bình luận, cột “id” là mã bình luận, cột “label” là nhãn của bình luận được phân
thành hai loại 0 – tích cực và 1 – tiêu cực, cuối cùng là cột “review” là nội dung bình

luận.


Hình 2.2: Tập dữ liệu thứ nhất

 Tập dữ liệu thứ hai gồm có 2 file chứa nội dung bình luận và số sao từ 1 đến 5 tương ứng
với mỗi bình luận. Số lượng bình luận và số lương đánh giá đều là 8429.

Hình 2.3: Tập dữ liệu thứ hai

2.2 Phân tích dữ liệu
Bộ dữ liệu cào được trên các trang thương mại điện tử có phân phối như sau:
Length dataset

8429

1*:

274

2*

245

3*

1849

4*


1883

5*

4178
Bảng 2.1: Phân phối dữ liệu cào được từ các trang thương mại điện tử


Như ta thấy, bộ dữ liệu trên có 5 nhãn tương ứng với số sao từ 1 tới 5. Tuy nhiên bài tốn của chỉ
nhận diện 2 nhãn là tích cực và tiêu cực nên phải ánh xa 5 nhãn trên về 2 nhãn của bài toán như
sau:
Nhãn ban đầu

Nhãn sau

5*

Tích cực

Từ 1* tới 4*

Tiêu cực

Bảng 2.2: Ánh xạ từ nhãn cũ của dữ liệu gốc sang nhãn mới phù hợp bài toán

Lý do ánh xạ như vậy là do thơng thường, nếu đơn hàng khơng có vấn đề gì thì người dùng sẽ
cho 5 sao, chỉ trừ khi đơn hàng có một vấn đề gì đấy như giao muộn hoặc giao thiếu v.v thì mới
cho từ 4 sao trở xuống.
Sau khi ánh xạ bộ dữ liệu cào được, kết hợp với bộ dữ liệu được lấy từ cuộc thi NLP
VietNamese trên Kaggle, ta có phân phối các nhãn như sau:

Tích cực (nhãn 0)

12699

Tiêu cực (nhãn 1)

11506
Bảng 2.3: Phân phối các nhãn sau xử lý

2.3 Tiền xử lý dữ liệu
2.3.1 Chuẩn hóa dữ liệu
Việc chuẩn hóa dữ liệu sẽ thực hiện ở tập dữ liệu thứ nhất
Dữ liệu được lấy trực tiếp về từ các trang thương mại điện tử, vì vậy các bình luận của người
dùng cịn khá lộn xộn và khơng dễ để học, vì thế cân chuẩn hóa các dữ liệu này qua các bước:
 Loại bỏ các ký tự kéo dài
 Chuyển tất cả bình luận về chữ thường

Hình 2.4: Các bước chuẩn hóa dữ liệu

 Chuẩn hóa tiếng Việt, xử lý biểu tượng cảm xúc, chuẩn hóa tiếng Anh và các thuật ngữ:
Trong các bình luận sẽ có các từ khơng có nghĩa hoặc là các từ viết tắt bằng cả tiếng Việt
lẫn tiếng Anh, các từ này cần được xóa và có thể thay bằng các từ chính xác. Đối với các
biểu tượng cảm xúc sẽ được quy về hai loại biểu tượng tiêu cực và tích cực.


Hình 2.5: Chuẩn hóa tiếng việt về kiểu mới

Hình 2.6: Đưa các icon về text

Hình 2.7: Chuẩn hóa tiếng anh và các từ viết tắt



Hình 2.8: Xóa dấu câu

 Loại bỏ các ký tự thừa

Hình 2.9: Loại bỏ các kí tự thừa

2.3.2 . Làm giàu dữ liệu
Với lượng dữ liệu đã lấy được, sau khi đã cập nhật và chuẩn hóa để dữ liệu trở nên dễ hiểu hơn,
ta vẫn cần bổ sung và kết nối dữ liệu với các thông tin liên quan khác, nhằm cung cấp những
hiểu biết sâu sắc hơn cho việc học. Tăng thêm số lượng tập học bằng cách biến đổi bộ dữ liệu
sẵn có:


Hình 2.10: Thêm vào các dữ liệu tiếng Việt khơng dấu

2.3.3 Dữ liệu sau khi được xử lý
Dữ liệu sau khi được tiền xử lý:

Hình 2.11: Một vài dịng dữ liệu sau khi đã tiền xử lý

Từ tập dữ liệu ban đầu sẽ được chia nhỏ thành 2 tập train và test với tỷ lệ lần lượt là 70% và
30%, cả hai tập này sẽ được tiền xử lý dữ liệu như đã được nêu ở trên và sẽ được sử dụng để
chạy thử mơ hình


Hình 2.12: Chia tập train-test theo tỉ lệ 7-3

2.3.4 Chuyển đổi dữ liệu sang vector

Để có thể cho vào mơ hình học máy, các văn bản cần phải được chuyển đổi sang dạng dữ liệu số
học. Việc này có thể được thực hiện bằng nhiều cách như BoW, TF- IDF,… Trong bài tập lớn
này chúng em dùng thư viện sklearn để tính TF-IDF.
Mơ hình TF-IDF:
TF-IDF (Term Frequency – Inverse Document Frequency) là 1 kĩ thuật sử dụng trong khai phá
dữ liệu văn bản. Trọng số này được sử dụng để đánh giá tầm quan trọng của một từ trong một
văn bản. Giá trị cao thể hiện độ quan trọng cao và nó phụ thuộc vào số lần từ xuất hiện trong văn
bản nhưng bù lại bởi tần suất của từ đó trong tập dữ liệu. Một vài biến thể của tf-idf thường được
sử dụng trong các hệ thống tìm kiếm như một cơng cụ chính để đánh giá và sắp xếp văn bản dựa
vào truy vấn của người dùng. Tf-idf cũng được sử dụng để lọc những từ stopwords trong các bài
tốn như tóm tắt văn bản và phân loại văn bản.
2.3.4.1. TF (Term Frequency)

Hình 2.13: Cơng thức tính TF

TF: Term Frequency (Tần suất xuất hiện của từ) là số lần từ xuất hiện trong văn bản. Vì các văn
bản có thể có độ dài ngắn khác nhau nên một số từ có thể xuất hiện nhiều lần trong một văn bản
dài hơn là một văn bản ngắn. Như vậy, term frequency thường được chia cho độ dài văn bản
(tổng số từ trong một văn bản).
Trong đó:
 tf (t, d): tần suất xuất hiện của từ t trong văn bản d
 f (t, d): Số lần xuất hiện của từ t trong văn bản d
 max ({f (w, d): w ∈ d}): Số lần xuất hiện của từ có số lần xuất hiện nhiều nhất trong văn
bản d


2.3.4.2. IDF (Inverse Document Frequency)
IDF: Inverse Document Frequency (Nghịch đảo tần suất của văn bản), giúp đánh giá tầm quan
trọng của một từ. Khi tính tốn TF, tất cả các từ được coi như có độ quan trọng bằng nhau.
Nhưng một số từ như “thì”, “là” và “đó” thường xuất hiện rất nhiều lần nhưng độ quan trọng là

không cao. Như thế chúng ta cần giảm độ quan trọng của những từ này xuống.

Hình 2.14: Cơng thức tính IDF

Trong đó:
 idf(t, D): giá trị idf của từ t trong tập văn bản
 |D|: Tổng số văn bản trong tập D
 |{d ∈ D : t ∈ d}|: thể hiện số văn bản trong tập D có chứa từ t.
2.3.4.3. TF - IDF
Cơng thức tính TF-IDF:
tfidf ( t ,d , D )=tf (t , d )∗idf (t , D)
Những từ có giá trị TF-IDF cao là những từ xuất hiện nhiều trong văn bản này, và xuất hiện ít
trong các văn bản khác. Việc này giúp lọc ra những từ phổ biến và giữ lại những từ có giá trị cao
(từ khố của văn bản đó).


CHƯƠNG 3. Mơ hình SVM trong bài tốn
Trong phần này, chúng em xin trình bày phương pháp phân loại đơn nhãn của SVM (Support
Vector Machine), và sự áp dụng của phương pháp nhóm đã chọn vào bài tốn. SVM được lựa
chọn vì đây là một trong những phương pháp mạnh và chính xác nhất trong số các mơ hình phân
loại dựa trên phương pháp học máy.
3.1 Thuật toán SVM

3.1.1 Định nghĩa
SVM (viết tắt của Support Vector Machine) là phương pháp dựa trên nền tảng của lý thuyết
thống kê nên có một nền  tảng toán học chặt chẽ để đảm bảo rằng kết quả tìm được là chính xác. 
Là thuật tốn học giám sát (supervied learning) được sử dụng cho phân lớp dữ liệu. 
Là 1 phương pháp thử nghiệm, là 1 trong những phương pháp mạnh và chính xác nhất trong số
các thuật toán nổi tiếng về phân lớp dữ liệu. 
SVM là một phương pháp có tính tổng qt cao nên có thể được áp dụng cho nhiều loại bài tốn

nhận dạng và phân loại. 
3.1.2 Ý tưởng của phương pháp
Cho trước một tập huấn luyện có 2 class, mỗi điểm dữ liệu được biểu diễn bởi một điểm trong
không gian nhiều chiều, và ta giả sử rằng có tồn tại một siêu phằng (hyperplane) phân chia hai
class này. Như vậy sẽ có 1 class nằm tồn bộ về phía dương của siêu phẳng và class cịn lại nằm
ở phía âm, do vậy ta gọi hai class tương ứng là class + và class -. Có rất nhiều các mặt phân chia,
đồng nghĩa với việc bài tốn của chúng ta có rất nhiều nghiệm.


Hình 3.15: Có rất nhiều siêu phẳng phân chia dữ liệu học thành 2 lớp + và – (nguồn:
machinelearningcoban.com)

Vậy ta phải có một tiêu chuẩn để chỉ ra được nghiệm nào là tốt trong các nghiệm của bài
tốn.

Hình 3.16: Margin của hai class là bằng nhau và lớn nhất có thể (nguồn: machinelearningcoban.com)

Ở hình bên trái, ta có thể thấy siêu phẳng nằm gần hơn hẳn các chấm màu đỏ, như vậy thì
phần khơng gian của các chấm đỏ sẽ bị xâm lấn. Cịn ở hình bên phải, khoảng cách gần
nhất từ các chấm đỏ và xanh tới siêu phẳng đã bằng nhau, tuy nhiên với siêu phẳng màu


xanh lá cây thì siêu phẳng này vẫn khá gần so với các hai bên chấm đỏ và chấm xanh.
Khoảng cách đó được gọi là margin (như trong ảnh đã mô tả). Việc margin rộng hơn sẽ
mang lại hiệu ứng phân lớp tốt hơn vì sự phân chia giữa hai classes là rạch rịi hơn. Bài
tốn tối ưu trong Support Vector Machine (SVM) chính là bài tốn đi tìm đường phân
chia sao cho margin là lớn nhất.
3.1.3 Cơ sở lý thuyết

Như đã nói ở trên, SVM thực chất là một bài tốn tối ưu sao cho siêu phẳng tìm được

có margin là lớn nhất.
Ta có tập dữ liệu của training set là N cặp ( x 1 , y 1 ),( x 2 , y 2) ,... ,(x n , y n) với x là vector có
d chiều thể hiện đầu vào của một điểm dữ liệu và y là nhãn tương ứng của điểm dữ liệu
đó. Nhãn của mỗi điểm dữ liệu được xác định bởi y i=1 hoặc y i=−1 tương ứng với class +
và class -. Để dễ biểu diễn thì ta giả sử rằng các điểm dữ liệu chỉ có hai chiều, khi đó ta có
thể biểu diễn các điểm dữ liệu trên mặt phẳng bình thường.

Hình 3.17: Một siêu phẳng phân chia hai class trong không gian nhiều chiều

Giả sử rằng các điểm vuông xanh thuộc class 1, các điểm tròn đỏ thuộc class −1 và
mặt w T x+ b=w1 x 1 +w 2 x 2 +b=0 là mặt phân chia giữa hai classes, class 1 nằm về phía dương,
class −1 nằm về phía âm của mặt phân chia. Nếu ngược lại, ta chỉ cần đổi dấu của w và b.
Bây giờ chúng ta cần đi tìm các hệ số w và b sao cho margin là lớn nhất. Để làm như vậy,
ta cần thiết lập hàm tính độ dài của margin và tối ưu hàm này.


Với cặp dữ liệu (x n , y n ) bất kỳ, khoảng cách từ điểm đó tới mặt phân chia là:

T

y n (w x n +b)
¿∨w∨¿2

Margin là khoảng cách gần nhất từ một điểm bất kì tới mặt phẳng phân cách, do vậy
ta có:
margin=





❑❑ ❑ ❑❑
‖w‖2

Bài tốn tối ưu trong SVM chính là bài tốn tìm w và b sao cho margin này đạt giá
trị lớn nhất.

{

T

( w ,b )=arg max min
w ,b

y n ( w x n+ b )

n

‖w‖2

}

=argmax
w ,b

{‖ ‖

1
T
min y n ( w x n+ b )
w 2 n


}

3.2 SVM đối với bài toán đặt ra

Bài tốn đặt ra là nhận diện cảm xúc tích cực tiêu cực từ một bình luận, tích cực và tiêu
cực chính là hai nhãn + và – trong mơ hình SVM mà ta cần phải phân loại.


CHƯƠNG 4. Q trình chạy mơ hình và kết quả

Đối với bài tốn của nhóm đề ra thuộc nhóm bài tốn phân loại văn bản, với mơ hình sử
dụng là SVM (Support Vector Machine) với phương pháp xử lý là LinearSVC.
Chúng đều được hỗ trợ trong thư viện Scikit_learn.
4.1 Pipeline xử lý và huấn luyện mơ hình

Hình 4.18: Các bước xử lý dữ liệu trong pipeline

Pipeline là một cơ chế cho phép ta tạo ra một luồng biến đổi dữ liệu: output của bước này là
input của bước sau. Các bước biến đổi được append vào một mảng như trong ảnh trên, ta sẽ giải
thích các bước này ở ngay sau đây.
1. CountVectorizer: Tập dữ liệu gồm các câu bình luận, từ những bình luận đó, ta xây dựng
một từ điển các từ đã từng xuất hiện, gọi là vocabulary. Ví dụ, ta có một câu bình luận là:
“quyển sách này đẹp hơn quyển sách kia”, thì chúng ta sẽ xây dựng được từ điển là:
{“quyển”, “sách”, “này”, “đẹp”, “hơn” , “kia”}. Lưu ý rằng từ điển bao gồm những từ “đã
từng” xuất hiện trong các câu bình luận, dù từ đó xuất hiện bao nhiêu lần thì trong từ điển
cũng chỉ xuất hiện một lần. Ngoài ra, count vectorize cũng bỏ qua những từ stop word do
chúng ta định nghĩa (ở đây là các từ: rằng, thì, là, mà,…), và bỏ qua ln cả những từ có
tần suất xuất hiện (df) nằm ở ngoài khoảng min_df và max_df (hai tham số này là siêu
tham

số,
sẽ
được
đề
cập

trong
phần
sau).
Sau khi xây dựng được từ điển, các câu bình luận sẽ được vector hóa bằng Count
vectorize, xét câu bình luận ở ví dụ trên: “quyển sách này đẹp hơn quyển sách kia”, từ
điển xây dựng được là {“quyển”, “sách”, “này”, “đẹp”, “hơn” , “kia”}. Dựa trên từ điện
này, ta vector hóa câu bình luận thành {2, 2, 1, 1, 1, 1} tương ứng với số lần xuất hiện của
từ đó trong câu bình luận (quyển: 2 lần, sách: 2 lần).
2. TfidfTransformer: Như đã trình bày ở trên, tf-idf của một từ nào đó cao cho ta biết từ này
xuất hiện nhiều ở câu này, và ko xuất hiện nhiều ở các câu khác. Có thể hiểu, một từ có ifidf cao chính là một đặc điểm quan trọng để phân biệt câu chứa từ đó với những câu khác.
Do đó, đây là một tham số quan trọng trong việc phân loại câu, TfidfTransformrmer dựa
vào kết quả của Count vectorize đã tính được ở trên để sinh ra vector tfidf.


4.2 Tinh chỉnh (tuning) các siêu tham số
 ngram_range(1, 5): 1 ngram là 1 chuỗi n phần tử đứng liên tiếp nhau. Các phần tử có thể
là âm vị, âm tiết, chữ cái, từ tùy theo ứng dụng. Ở đây, chúng em dùng ngram cho âm tiết
[5]

Hình 4.19: Minh họa ngram (Nguồn: text_preprocessing google colab)

Qua quá trình tuning ta thấy với ngram_range(1, 5) cho độ chính xác trên tập test là cao

nhất

 max_df=0.7, min_df=0: là các giá trị ngưỡng min và max được cài đặt trong quá trình xây
dựng từ điển (quá trình CountVectorizer) để loại bỏ đi các từ không quan trọng, bao gồm
các từ xuất hiện trong rất nhiều văn bản, cụ thể là với tần suất xuất hiện lớn hơn max_df,
và các từ xuất hiện trong rất ít văn bản, khơng có ý nghĩa trong phân loại, cụ thể là với tấn
suất xuất hiện nhỏ hơn min_df
Qua q trình tuning, ta có với min_df = 0, max_df = 0.7 thì cho ra kết quả có độ chính
xác là cao nhất
4.3 Kết quả và nhận xét
Sau quá trình tuning, kết quả mơ hình thu được như sau:


Hình 4.20: Kết quả sau khi tuning

Confusion matrix:
Predict
Positive
Ground Positive
truth Negative

Negative

6985

567

595

6377




×