Tải bản đầy đủ (.pdf) (60 trang)

Ứng Dụng Deep Learning Cho Phân Tích Cảm Xúc (Sentiment Analysis) Với Dữ Liệu Twitter (LV thạc sĩ)

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 (2.96 MB, 60 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN THÁI ÂN

ỨNG DỤNG DEEP LEARNING CHO PHÂN TÍCH
CẢM XÚC (SENTIMENT ANALYSIS)
VỚI DỮ LIỆU TWITTER

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)

TP HỒ CHÍ MINH – 2017


HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN THÁI ÂN

ỨNG DỤNG DEEP LEARNING CHO PHÂN TÍCH
CẢM XÚC (SENTIMENT ANALYSIS)
VỚI DỮ LIỆU TWITTER
CHUYÊN NGÀNH

: HỆ THỐNG THÔNG TIN

MÃ SỐ

: 60.48.01.04


LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS. BÙI XUÂN LỘC

TP HỒ CHÍ MINH – 2017


i

LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi dưới sự hướng
dẫn của Tiến sĩ Bùi Xuân Lộc. Các kết quả đạt được trong luận văn là sản phẩm của
riêng cá nhân, không sao chép của người khác. Nội dung của luận văn có tham khảo
và sử dụng một số thông tin, tài liệu từ các nguồn sách, tạp chí được liệt kê trong
danh mục các tài liệu tham khảo.
Tp. Hồ Chí Minh, ngày 31 tháng 5 năm 2017
Học viên thực hiện luận văn

Nguyễn Thái Ân


ii

LỜI CẢM ƠN
Tôi xin gửi lời cảm ơn chân thành nhất đến Thầy TS. Bùi Xuân Lộc, người
đã tận tình hướng dẫn, hỗ trợ và giúp đỡ tôi rất nhiều trong nghiên cứu luận văn.
Thầy đã đưa ra những định hướng, nhận xét và góp ý quý giá để luận văn này được
hoàn thành tốt nhất.
Kính gửi lời cảm ơn đến quý Thầy, Cô giảng viên đã tận tình giảng dạy và

truyền đạt những kiến thức chuyên môn cần thiết trong quá trình tôi được học tập
tại Học viện Công nghệ Bưu chính Viễn thông Cơ sở tại Thành phố Hồ Chí Minh.
Xin gửi lời cảm ơn sâu sắc đến Ban giám đốc Học viện Bưu chính Viễn
thông, Cán bộ Phòng Đào Tạo & KHCN của trường đã nhiệt tình giúp đỡ và tạo
điều kiện thuận lợi để tôi có được môi trường học tập tốt và hoàn tất khóa học.
Xin gửi lời biết ơn vô hạn đến gia đình đã không ngừng quan tâm, động viên,
ủng hộ về mặt tinh thần lẫn vật chất trong suốt thời gian tôi tham gia khóa học và
thực hiện luận văn này.
Cảm ơn các anh chị lớp Cao học Hệ Thống Thông Tin khóa 2015 - 2017 đã
giúp đỡ và đồng hành cùng tôi trong những năm tháng học tập tại nhà trường.

Tp. Hồ Chí Minh, ngày 31 tháng 5 năm 2017
Học viên thực hiện luận văn

Nguyễn Thái Ân


iii

MỤC LỤC
LỜI CAM ĐOAN ....................................................................................................... i
LỜI CẢM ƠN ............................................................................................................ ii
DANH MỤC CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT ........................................ iv
DANH MỤC CÁC BẢNG ........................................................................................ v
DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ ............................................................. vi
MỞ ĐẦU ................................................................................................................... 1
Chương 1 - TỔNG QUAN KHAI PHÁ DỮ LIỆU ................................................ 3
1.1
Nhu cầu về khai phá dữ liệu ........................................................................ 3
1.1.1 Định nghĩa ................................................................................................3

1.1.2 Quá trình khai phá tri thức từ dữ liệu .......................................................4
1.2
Mục tiêu của khai phá dữ liệu ..................................................................... 4
1.3
Xử lý ngôn ngữ tự nhiên ............................................................................. 5
1.3.1 Định nghĩa ................................................................................................5
1.3.2 Các bài toán và ứng dụng .........................................................................6
1.4
Phân tích cảm xúc ....................................................................................... 7
Chương 2 - ỨNG DỤNG DEEP LEARNING CHO PHÂN TÍCH CẢM XÚC
VỚI DỮ LIỆU TWITTER ...................................................................................... 8
2.1
Tổng quan về Deep Learning ...................................................................... 8
2.1.1 Deep Learning là gì ..................................................................................8
2.1.2 Mạng neural nhân tạo ...............................................................................8
2.2
Các mạng neural trong xử lý ngôn ngữ tự nhiên....................................... 10
2.2.1 Convolutional Neural Networks (CNNs) ...............................................10
2.2.2 Recurrent Neural Networks (RNNs) ......................................................15
2.2.3 Long short-term memory (LSTM) .........................................................16
2.2.4 Kiến trúc mạng Neural được xem xét nghiên cứu ..................................21
Chương 3 - THỰC NGHIỆM MÔ HÌNH ............................................................ 26
3.1
Môi trường thực nghiệm ........................................................................... 26
3.1.1 Ngôn ngữ lập trình python .....................................................................26
3.1.2 Giới thiệu về thư viện TensorFlow.........................................................27
3.2
Thông tin về các bộ dữ liệu ....................................................................... 29
3.3
Mô tả phương pháp thực nghiệm .............................................................. 30

3.4
Kết quả chạy thực nghiệm......................................................................... 46
3.5
Nhận xét và đánh giá ................................................................................. 47
KẾT LUẬN VÀ KIẾN NGHỊ ................................................................................. 49
DANH MỤC TÀI LIỆU THAM KHẢO ................................................................. 51


iv

DANH MỤC CÁC THUẬT NGỮ VÀ CHỮ VIẾT TẮT
Viết tắt

Tiếng Anh

Tiếng Việt

Sentiment Analysis

Phân tích cảm xúc

Social Network

Mạng xã hội

Social media phenomena

Cộng đồng mạng

Fanpage


Trang thông tin trên mạng xã hội

Twitter

Mạng xã hội Twitter

Fackbook

Mạng xã hội Facebook

Tweet

Tin nhắn trên mạng xã hội Twitter

Data Mining

Khai phá dữ liệu

Neural

Mạng nơron

Tensorflow

Là 1 thư viện mở của google để kiến trúc
một model cho deep learning

Tensor


Là 1 đối tượng hình học được sử dụng
trong Tensorflow

Deep neural network

Mạng nơron sâu

Deep Learning

Là phương pháp học sâu trong AI

Filter

Bộ lọc

Convolutional

Tích chập (Xoắn)

AI

Word embedding

Từ nhúng (chuyển từ thành vector số)

NN

Neural Network

Mạng nơron nhân tạo


NLP

Natural language processing

Xử lý ngôn ngữ tự nhiên

CNN

Convolutional Neural Network

Mạng nơron tích chập

RNN

Recurrent Neural Network

Mạng nơron tái phát

GRU

Gated Recurrent Unit

Là một cơ chế gating trong mạng neural
tái phát

LSTM

Long short-term memory


Là một cơ chế mạng nơron tái phát.


v

DANH MỤC CÁC BẢNG
Bảng 3.1: Mô tả rank của tensor [10] ..................................................................... 28
Bảng 3.2: Mô tả cú pháp shape của tensor [10] ...................................................... 28
Bảng 3.3: Mô tả kiểu dữ liệu trong tensorflow [10] ............................................... 28
Bảng 3.4: Mô tả dữ liệu thực nghiệm ..................................................................... 29
Bảng 3.5: Mô tả phân loại nhãn cho các tập dữ liệu thực nghiệm .......................... 30
Bảng 3.6: Kết quả độ chính xác với các giải thuật mạng neural............................. 46


vi

DANH MỤC CÁC HÌNH VẼ VÀ ĐỒ THỊ
Hình 1.1: Minh hoạ khai thác dữ liệu ....................................................................... 3
Hình 1.2: Quy trình khai phá tri thức ........................................................................ 4
Hình 1.3: Phân tích cảm xúc từ văn bản ................................................................... 7
Hình 2.1: Mô hình cấu tạo một neural ...................................................................... 9
Hình 2.2: Minh hoạ ma trận tích chập .................................................................... 11
Hình 2.3: Mô hình mạng neural CNN .................................................................... 12
Hình 2.4: Minh hoạ mạng neural CNN cho xữ lý ngôn ngữ tự nhiên .................... 13
Hình 2.5: Minh hoạ ma trận max-pooling trong CNN............................................ 14
Hình 2.6: Mô hình mạng neural RNN .................................................................... 15
Hình 2.7: RNN short term depdencies [8] .............................................................. 16
Hình 2.8: RNN long term dependencies [8] ........................................................... 16
Hình 2.9: LSTM C Line [8] .................................................................................... 17
Hình 2.10: LSTM gate [8] ...................................................................................... 18

Hình 2.11: LSTM focus f [8] .................................................................................. 18
Hình 2.12: LSTM focus i [8] .................................................................................. 19
Hình 2.13: LSTM focus C [8] ................................................................................. 19
Hình 2.14: LSTM focus o [8] ................................................................................. 20
Hình 2.15: LSTM GRU [8]..................................................................................... 20
Hình 2.16: Kiến trúc mạng Neural [1] .................................................................... 21
Hình 2.17: Kiến trúc mạng Neural [2] .................................................................... 22
Hình 3.1: Bảng xếp hạng các ngôn ngữ lập trình năm 2016................................... 27
Hình 3.2: Mô hình Tensorflow được hiển thị trên TensorBoard [10] .................... 29
Hình 3.3: Mô hình mạng CNN trong nghiên cứu. .................................................. 35
Hình 3.4: Mô hình conv-maxpool trong mạng CNN .............................................. 36
Hình 3.5: Mô hình mạng RNN nghiên cứu............................................................. 38
Hình 3.6: Mô hình các cell GRU trong mạng RNN ............................................... 39
Hình 3.7: Mô hình mạng CNN kết hợp RNN (xử lý song song) ............................ 42
Hình 3.8: Mô hình mạng CNN kết hợp với RNN (xử lý tuần tự)........................... 45


vii

Hình 3.9: Biểu đồ độ chính xác của các tập huấn luyện trên các mô hình mạng ... 46
Hình 3.10: Biểu đồ độ chính xác của các tập kiểm thử trên các mô hình mạng ..... 47
Hình 3.11: Biểu đồ thời gian huấn luyện thực nghiệm cho các mô hình................ 47


1

MỞ ĐẦU
Trong những năm gần đây với sự phát triển mạnh mẽ của công nghệ và đặt
biệt hơn là các mạng xã hội, không những cung cấp cho người dùng việc trao đổi và
chia sẻ các thông tin với nhau mà còn giúp quảng bá sản phẩm hay các sự kiện của

công ty, tổ chức đến với mọi người.
Bằng cách chia sẻ các thông tin và bình luận, mạng xã hội đã dần trở thành
nơi để mọi người trao đổi thông tin lớn nhất hiện nay (Một người chia sẻ hoặc bình
luận, nội dung này sẽ được hiển thị cho tấc cả các bạn bè trong tài khoản mạng xã
hội). Vì vậy thông tin khi được truyền đạt trên mạng xã hội là không có giới hạn.
Do đó mà các công ty và tập đoàn hiện nay đã nắm bắt được lợi ích mạnh mẽ này
và sử dụng mạng xã hội làm công cụ dùng để giới thiệu các sản phẩm, sự kiện, và
quan trọng hơn là ghi nhận các bình luận, đánh giá và chia sẻ của khách hàng.
Lượng thông tin này sẽ tăng rất nhanh khi người dùng quan tâm và chia sẻ, và hình
thành nên một lượng dữ liệu khổng lồ. Công ty khó có thể phân tích các dữ liệu này
dựa trên cách thông thường là đọc từng dòng bình luận. Chính vì vậy mà các trang
mạng xã hội cung cấp cho các khách hàng doanh nghiệp của họ công cụ phân tích
cảm xúc cho các dữ liệu bình luận này. Từ đó giúp cho doanh nghiệp có thể đánh
giá được các mức độ quan tâm của người dùng đến sản phẩm, sự kiện, hoặc là các
chính sách mà họ chia sẻ trên mạng xã hội.
Hiện nay có khá nhiều các mạng xã hội như Twitter, Facebook, …Giúp cho
người dung chia sẻ thông tin rất nhiều. Vì thế mà các nhà phát triển đã tích hợp các
biểu tượng cảm xúc vào trong các chia sẻ, bình luận, điển hình như Facebook.
Twitter là một mạng xã hội trực tuyến và dịch vụ tiểu blog cho phép người dùng gửi
và đọc các tin nhắn văn bản lên đến 140 kí tự, được gọi là “tweet”, và mọi người có
thể bày tỏ cảm xúc cho các tin nhắn này bằng cách like hoặc nhắn tin lại “retweet”.
Được thành lập vào tháng 3 năm 2006 bởi Jack Dorsey và ra mắt vào tháng 7 cùng
năm, Twitter nhanh chóng trở nên phổ biến trên toàn thế giới, với ước tính đến
tháng 5 năm 2016, Twitter đã có hơn 700 triệu người dùng, trong đó có hơn 302


2

triệu người hoạt động thường xuyên, xử lí hơn 1,6 tỉ yêu cầu tìm kiếm mỗi ngày. Từ
khi ra mắt, Twitter đã trở thành một trong 10 website có lượng truy cập nhiều nhất

trên Internet và được mô tả như là “tin nhắn (SMS) của Internet”. Vấn đề đặt ra ở
đây là làm thế nào để phân tích cảm xúc cho một lượng lớn thông tin, và cách áp
dụng máy móc vào việc phân tích và tự cho ra kết quả phân tích.
Vì lý do đó, luận văn này trình bày các giải thuật dựa trên lý thuyết máy học
và mạng neural để đưa ra các mô hình nhằm phân tích cảm xúc cho các dữ liệu tin
nhắn. Mục tiêu nghiên cứu luận văn sẽ đi sâu tìm cấu trúc của mạng neural trong
việc xử lý, phân tích biểu cảm của các chia sẻ trên mạng Twitter, đồng thời dựa vào
phân tích để phân loại các chia thành các loại (N - negative – tệ, Neu – neutral –
bình thường, P – positive – tốt). Nhằm cho ra kết quả đánh giá có độ chính xác gần
bằng với kết quả ban đầu đã được đánh giá bởi con người. Với lượng lượng dữ liệu
lớn như hiện nay rất khó để con người có thể đánh giá hết được, nên mục tiêu của
nghiên cứu là xây dựng mô hình và giải thuật cho hệ thống có thể tự động phân tích
và đánh giá cảm xúc trong các tin nhắn với độ chính xác gần bằng với con người
thực hiện. Phạm vi nghiên cứu tập trung vào xây dựng các mô hình mạng neural
trên Tensorflow và Python nhằm hiện thực hoá mô hình được nghiên cứu. Từ đó
đánh giá độ chính xác của từng mô hình mạng neural được nghiên cứu dựa trên các
dữ liệu thử nghiệm.
Nội dung bài nghiên cứu bao gồm 3 chương. Chương 1 giới thiệu tổng quan
về khai phá dữ liệu, xử lý ngôn ngữ tự nhiên, các phương pháp trong xữ lý ngôn
ngữ tự nhiên và khái niệm phân tích cảm xúc. Chương 2 giới thiệu ứng dụng Deep
Learning vào phân tích cảm xúc với dữ liệu twitter, bao gồm tổng quan và các thuật
toán trong Deep Learning. Khái quát về mạng neural trong xử lý ngôn ngữ tự nhiên.
Các kiến trúc mạng Neural được xem xét trong nghiên cứu CNN, RNN, mô hình
kết hợp giữa CNN và RNN (xử lý song song và xử lý tuần tự). Chương 3 thực
nghiệm và đánh giá các kiến trúc mạng được nghiên cứu. Bao gồm mô tả về dữ liệu
và giải thuật được nghiên cứu. Cách thực nghiệm cho các mô hình. Sau đó đánh giá
độ chính xác của các giải thuật.


3


Chương 1 - TỔNG QUAN KHAI PHÁ DỮ LIỆU
1.1 Nhu cầu về khai phá dữ liệu
1.1.1 Định nghĩa
Sự phát triển nhanh chóng của các các công nghệ trong thời đại hiện nay đã và
đang tạo ra nguồn dữ liệu khổng lồ, ẩn chứa bên trong là vô số dữ liệu có ích cho
cuộc sống (sức khoẻ, môi trường, tình hình kinh tế, …). Và cùng với khoa học ngày
càng phát triển đã cho ra đời ngành Khoa học dữ liệu và trong đó Khai thác dữ liệu
là lĩnh vực phát triển nhanh chóng nhất. Khai thác dữ liệu là quá trình tìm kiếm các
mẫu từ tập dữ liệu lớn và phân tích dữ liệu từ những quan điểm khác nhau. Nó cho
phép người dùng trong doanh nghiệp phân tích dữ liệu từ nhiều góc độ khác nhau
và tóm tắt các nhận xét trên mạng xã hội.
Khái niệm về khai phá dữ liệu hay khám phá tri thức (Knowledge Discovery)
có rất nhiều cách diễn đạt khác nhau nhưng về bản chất đó là quá trình tự động trích
xuất thông tin có giá trị (Thông tin dự đoán - Predictive Information) ẩn chứa trong
khối lượng dữ liệu khổng lồ trong thực tế.
Một cách nhìn đơn giản về Khai thác dữ liệu:

Hình 1.1: Minh hoạ khai thác dữ liệu
(Nguồn: />
• Chuẩn bị dữ liệu để cho máy tính “học” (Data).
• Xây dựng mô hình thông qua dữ liệu đầu vào (Algorithm).
• Đánh giá mô hình vừa mới xây dựng (Model).
Data mining nhấn mạnh 2 khía cạnh chính đó là khả năng trích xuất thông tin
có ích tự động (Automated) và thông tin mang tính dự đoán (Predictive).


4

1.1.2 Quá trình khai phá tri thức từ dữ liệu


Hình 1.2: Quy trình khai phá tri thức
(Nguồn: />
Quy trình là chuỗi lặp lại các thao tác:
• Làm sạch dữ liệu (Data cleaning): Loại bỏ nhiễu và những giá trị không
nhất quá.
• Tích hợp dữ liệu (Data intergation): Dữ liệu của nhiều nguồn có thể tổ hợp
lại.
• Lựa chọn dữ liệu (Data selection): Những dữ liệu phù hợp với phân tích
được trích rút từ nguồn dữ liệu ban đầu.
• Chuyển đổi dữ liệu (Data transformation): Dữ liệu được chuyển đổi hay
được hợp nhất về dạng thích hợp cho việc khai phá.
• Khai phá dữ liệu (Data mining): Là tiến trình chính, trong đó các phương
pháp tính toán được áp dụng nhằm trích ra các mẫu dữ liệu.
• Đánh giá mẫu (Pattem evyalution): Dựa trên các phương pháp đo nhằm
xác định độ chuẩn xác và lợi ích từ các mẫu biểu diễn tri thức.
• Biễu diễn tri thức (Knowledge presentation): Sử dụng kỹ thuật biểu diễn
và hiển thị tri thức được tổng hợp cho người dùng.

1.2

Mục tiêu của khai phá dữ liệu

Có thể phân thành 2 loại chính đó là Dự đoán (Predictive) và Mô tả
(Descriptive).
• Predictive:


5


o Classification - phân lớp
o Regression - hồi quy
• Descriptive:
o Clustering - phân cụm
o Association Rule Discovery - phát hiện luật kết hợp
Một số thuật toán phổ biến được dùng trong khai phá dữ liệu.
• Descision tree: Cây quyết định (Classification Task)
• Nearest Neighbor: Láng giềng gần nhất (Classification Task)
• Neural Network: Mạng Neural (Classification and Clustering Task)
• Rule Induction: Luật quy nạp (Classification Task)
• K-Means: Thuật toán K-Means (Clustering Task)

1.3 Xử lý ngôn ngữ tự nhiên
1.3.1 Định nghĩa
Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP) là một nhánh
của trí tuệ nhân tạo tập trung vào các ứng dụng trên ngôn ngữ của con người. Trong
trí tuệ nhân tạo thì việc xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất
vì nó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ (công cụ hoàn hảo nhất của tư
duy và giao tiếp).
• Phân tích hình thái - Trong bước này từng từ sẽ được phân tích và các ký tự
không phải chữ (như các dấu câu) sẽ được tách ra khỏi các từ.
• Phân tích cú pháp - Dãy các từ sẽ được biến đổi thành các cấu trúc thể hiện
sự liên kết giữa các từ này. Sẽ có những dãy từ bị loại do vi phạm các luật văn
phạm.
• Phân tích ngữ nghĩa - Thêm ngữ nghĩa vào các cấu trúc được tạo ra bởi bộ
phân tích cú pháp.
• Tích hợp văn bản - Ngữ nghĩa của một câu riêng biệt có thể phụ thuộc vào
những câu đứng trước, đồng thời nó cũng có thể ảnh hưởng đến các câu phía sau.
• Phân tích thực nghĩa - Cấu trúc thể hiện điều được phát ngôn sẽ được thông
dịch lại để xác định nó thật sự có nghĩa là gì.



6

Tuy nhiên, ranh giới giữa 5 bước xử lý này cũng rất mong manh. Chúng có thể
được tiến hành từng bước một, hoặc tiến hành cùng lúc - tùy thuộc vào giải thuật và
ngữ cảnh cụ thể.

1.3.2 Các bài toán và ứng dụng
• Nhận dạng chữ viết: Với chương trình nhận dạng chữ viết in có thể chuyển
hàng ngàn đầu sách trong thư viện thành văn bản điện tử trong thời gian ngắn. Nhận
dạng chữ viết của con người có ứng dụng trong khoa học hình sự và bảo mật thông
tin (nhận dạng chữ ký điện tử).
• Nhận dạng tiếng nói: Nhận dạng tiếng nói rồi chuyển chúng thành văn bản
tương ứng. Giúp thao tác của con người trên các thiết bị nhanh hơn và đơn giản
hơn, chẳng hạn thay vì gõ một tài liệu nào đó bạn đọc nó lên và trình soạn thảo sẽ tự
ghi nó ra. Đây cũng là bước đầu tiên cần phải thực hiện trong ước mơ thực hiện
giao tiếp giữa con người với robot. Nhận dạng tiếng nói có khả năng trợ giúp người
khiếm thị rất nhiều.
• Tổng hợp tiếng nói: Từ một văn bản tự động tổng hợp thành tiếng nói. Thay
vì phải tự đọc một cuốn sách hay nội dung một trang web, nó tự động đọc cho
chúng ta. Giống như nhận dạng tiếng nói, tổng hợp tiếng nói là sự trợ giúp tốt cho
người khiếm thị, nhưng ngược lại nó là bước cuối cùng trong giao tiếp giữa robot
với người.
• Dịch tự động (machine translate): Như tên gọi đây là chương trình dịch tự
động từ ngôn ngữ này sang ngôn ngữ khác. Một phần mềm điển hình là Google
Translate có thể dịch giữa các ngôn ngữ khác nhau.
• Tìm kiếm thông tin (information retrieval): Đặt câu hỏi và chương trình tự
tìm ra nội dung phù hợp nhất.
• Tóm tắt văn bản: Từ một văn bản dài tóm tắt thành một văn bản ngắn hơn

theo mong muốn nhưng vẫn chứa những nội dung thiết yếu nhất.
• Khai phá dữ liệu và phát hiện tri thức: Từ rất nhiều tài liệu khác nhau phát
hiện ra tri thức mới.
• Phân tích cảm xúc trong ngôn ngữ: Đây là khái niệm mới trong xử lý ngôn
ngữ, bằng việc kết hợp giữa nhận dạng ngôn ngữ với phân tích cảm xúc, biểu cảm.
Mục tiêu là máy tính nhận dạng đánh giá các mức độ tâm lý của con người trong
ngôn ngữ.


7

1.4 Phân tích cảm xúc
Phân tích cảm xúc là một lĩnh vực mới trong xử lý ngôn ngữ tự nhiên, sử dụng
các kỹ thuật NLP để rút trích thông tin cảm xúc của con người từ một câu nói hay
một văn bản, từ đó giúp đánh giá cảm xúc của con người là tích cực hay tiêu cực.
Dựa vào mạng xã hội, sử dụng các kỹ thuật trong NLP có thể rút trích thông tin và
từ đó thống kê các mức độ quan tâm của người dùng đối với các sự kiện và thông
tin được chia sẻ, giúp việc tổng hợp đánh giá của người sử dụng cho các công ty và
tổ chức được tốt hơn.

Hình 1.3: Phân tích cảm xúc từ văn bản
(Nguồn: />
Các vấn đề cần quan tâm ở đây là:
• Làm thế nào mà máy có thể hiểu đó là ý kiến chủ quan hay thiên về cảm xúc
bản thân
• Làm thế nào để máy phân rõ hai cực tích cực (positive) và tiêu cực
(negative)
• Làm thế nào để máy có thể giải quyết các cảm xúc chủ quan
• Làm thế nào để máy tính điểm cho một quan điểm, ý kiến
• Làm thế nào để máy biết được cường độ của cảm xúc

• Làm thế nào để biết sự khác nhau giữa fact (sự thật) và opinion (ý kiến viết
ra), nhiều khi bề ngoài gồm những cụm từ khen nhưng thật sự lại đang xỏ xiên, …
Chúng ta có thể theo dõi các sản phẩm, thương hiệu hay cả con người xem
cách mà mọi người đang có cái nhìn tích cực hay tiêu cực trên web. Vì vậy mà gần
đây các nhà khoa học đã sử dụng các mô hình trong Deep Learning cho quá trình tự
học và phân tích cảm xúc trong ngôn ngữ, nhằm tiến gần hơn đến việc con người và
máy tính giao tiếp với nhau.


8

Chương 2 - ỨNG DỤNG DEEP LEARNING CHO PHÂN
TÍCH CẢM XÚC VỚI DỮ LIỆU TWITTER
2.1 Tổng quan về Deep Learning
2.1.1 Deep Learning là gì
Trí thông minh nhân tạo (AI) là trí thông minh được biểu diễn trên máy móc
hoặc phần mềm. Đây là một lĩnh vực học thuật nghiên cứu mục đích của việc tạo ra
trí thông minh như con ngườitrên các thiết bị máy móc. Với sự phát triển nhanh
chóng của công nghệ, AI ngày càng được nhiều người chú ý tới. Những năm gần
đây, đã có một sự hồi sinh trong lĩnh vực trí tuệ nhân tạo. Nó lan rộng ra ngoài thế
giới học thuật với sự tham gia của các “công ty” như Google, Microsoft và
Facebook, họ đã tự thành lập những nhóm nghiên cứu và những ứng dụng về trí tuệ
nhân tạo. Nhưng ngoài những hiện tượng đó, sự hồi sinh này đã được hỗ trợ một
phần không nhỏ bởi một xu hướng mới trong AI, cụ thể là trong khoa học máy móc,
được gọi là “Deep Learning”, đó là về việc tiếp thu nhiều tầng biểu đạt, cả cụ thể
lẫn trừu tượng, qua đó làm rõ nghĩa của các loại dữ liệu ví dụ như hình ảnh, âm
thanh và văn bản.
Deep Learning là một kỹ thuật máy học (Machine Learning) mạnh mẽ đang
được nhiều người trong ngành biết đến và nghiên cứu. Với khả năng biểu diễn
thông tin (represent problem/feature engineering) và học (learning). Bên cạnh các

lĩnh vực đã gặt hái được nhiều thành công như xử lý ảnh số và video số, hay xử lý
tiếng nói, và được áp dụng vào trong xử lý ngôn ngữ tự nhiên.

2.1.2 Mạng neural nhân tạo
Mạng neural nhân tạo (hay còn gọi là mạng thần kinh nhân tạo) Artificial
Neural Network (ANN) là một hệ thống các chương trình và cấu trúc dữ liệu mô
phỏng cách xử lý thông tin của mạng neural sinh học. Nó được tạo nên từ một số
lượng lớn các phần tử neural kết nối với nhau thông qua các liên kết (trọng số liên
kết) làm việc như một thể thống nhất để giải quyết một vấn đề cụ thể nào đó. Một
mạng neural nhân tạo được cấu hình cho một ứng dụng cụ thể (nhận dạng mẫu,
phân loại dữ liệu, ...) thông qua một quá trình học từ tập các mẫu huấn luyện. Về
bản chất học chính là quá trình hiệu chỉnh trọng số liên kết giữa các neural.


9

Cấu tạo neural nhân tạo:

Hình 2.1: Mô hình cấu tạo một neural
(Nguồn: />
Các thành phần cơ bản của một neural nhân tạo bao gồm:
• Tập các đầu vào: Là các tín hiệu vào (input signals) của neural, các tín
hiệu này thường được đưa vào dưới dạng một vector N chiều.
• Tập các liên kết: Mỗi liên kết được thể hiện bởi một trọng số liên kết
(Synaptic weight). Trọng số liên kết giữa tín hiệu vào thứ j với neural k
thường được kí hiệu là wkj. Thông thường, các trọng số này được khởi
tạo một cách ngẫu nhiên ở thời điểm khởi tạo mạng và được cập nhật
liên tục trong quá trình học mạng.
• Bộ tổng (Summing function): Thường dùng để tính tổng của tích các
đầu vào với trọng số liên kết của nó.

• Ngưỡng (còn gọi là một độ lệch - bias): Ngưỡng này thường được đưa
vào như một thành phần của hàm kích hoạt.
• Hàm kích hoạt (Activation function): Hàm này được dùng để giới hạn
phạm vi đầu ra của mỗi neural. Nó nhận đầu vào là kết quả của hàm
tổng và ngưỡng.
• Đầu ra: Là tín hiệu đầu ra của một neural, với mỗi neural sẽ có tối đa là
một đầu ra.
Xét về mặt toán học, cấu trúc của một neural k, được mô tả bằng cặp biểu thức
sau:


10

'

𝑢" =

𝑤"% 𝑥%
%()

(2.1)

𝑦" = (𝑢" − 𝑏" )
(2.1) Công thức hàm tổng và tính tín hiệu đầu ra của một neural
Trong đó: x1, x2, ..., xp: là các tín hiệu vào; (wk1, wk2, ..., wkp) là các trọng số
liên kết của neural thứ k; uk là hàm tổng; bk là một ngưỡng; f là hàm kích hoạt và yk
là tín hiệu đầu ra của neural.
Như vậy neural nhân tạo nhận các tín hiệu đầu vào, xử lý (nhân các tín hiệu
này với trọng số liên kết, tính tổng các tích thu được rồi gửi kết quả tới hàm kích
hoạt), và cho một tín hiệu đầu ra (là kết quả của hàm kích hoạt).


2.2 Các mạng neural trong xử lý ngôn ngữ tự nhiên
2.2.1 Convolutional Neural Networks (CNNs)
2.2.1.1 Định nghĩa
Những năm gần đây, chúng ta đã chứng kiến được nhiều thành tựu vượt bậc
trong ngành Thị giác máy tính (Computer Vision). Các hệ thống xử lý ảnh lớn như
Facebook, Google hay Amazon đã đưa vào sản phẩm của mình những chức năng
thông minh như nhận diện khuôn mặt người dùng, phát triển xe hơi tự lái hay drone
giao hàng tự động.
Convolutional Neural Network (Mạng neural tích chập) là một trong những
mô hình Deep Learning tiên tiến giúp cho chúng ta xây dựng được những hệ thống
thông minh với độ chính xác cao như hiện nay. Thường được sử dụng trong tín hiệu
số (Signal Processing), phân lớp ảnh (Image Classification).

2.2.1.2 Convolution (tích chập)
Tích chập được sử dụng đầu tiên trong xử lý tín hiệu số (Signal processing).
Nhờ vào nguyên lý biến đổi thông tin, các nhà khoa học đã áp dụng kĩ thuật này vào
xử lý ảnh và video số.


11

Hình 2.2: Minh hoạ ma trận tích chập
(Nguồn:
/>
Ma trận bên trái là một bức ảnh đen trắng. Mỗi giá trị của ma trận tương
đương với một điểm ảnh (pixel), 0 là màu đen, 1 là màu trắng (nếu là ảnh grayscale
thì giá trị biến thiên từ 0 đến 255).
Sliding window còn có tên gọi là kernel, filter hay feature detector. Ở đây, ta
dùng một ma trận filter 3×3 nhân từng thành phần tương ứng (element-wise) với ma

trận ảnh bên trái. Gía trị đầu ra do tích của các thành phần này cộng lại. Kết quả của
tích chập là một ma trận sinh ra từ việc trượt ma trận filter và thực hiện tích chập
cùng lúc lên toàn bộ ma trận ảnh bên trái.

2.2.1.3 Mô hình mạng neural tích chập (CNNs)
Bây giờ, chúng ta đã biết thế nào là convolution. Vậy CNNs là gì? CNNs chỉ
đơn giản gồm một vài layer của convolution kết hợp với các hàm kích hoạt phi
tuyến (nonlinear activation function) như ReLU hay tanh để tạo ra thông tin trừu
tượng hơn (abstract/higher-level) cho các layer tiếp theo.
Trong mô hình Feedforward Neural Network (mạng neural truyền thẳng), các
layer kết nối trực tiếp với nhau thông qua một trọng số w (weighted vector). Các
layer này còn được gọi là có kết nối đầy đủ (fully connected layer) hay affine layer.
Trong mô hình CNNs thì ngược lại. Các layer liên kết được với nhau thông qua cơ
chế convolution. Layer tiếp theo là kết quả convolution từ layer trước đó, nhờ vậy
mà ta có được các kết nối cục bộ. Nghĩa là mỗi neural ở layer tiếp theo sinh ra từ
filter áp đặt lên một vùng ảnh cục bộ của neural layer trước đó. Mỗi layer nhờ vậy
được áp đặt các filter khác nhau, thông thường có vài trăm đến vài nghìn filter như
vậy. Một số layer khác như pooling/subsampling layer dùng để chắt lọc lại các


12

thông tin hữu ích hơn (loại bỏ các thông tin nhiễu). Tuy nhiên, ta sẽ không đi sâu
vào khái niệm của các layer này. Trong suốt quá trình huấn luyện, CNNs sẽ tự động
học được các thông số cho các filter. Ví dụ trong tác vụ phân lớp ảnh, CNNs sẽ cố
gắng tìm ra thông số tối ưu cho các filter tương ứng theo thứ tự raw pixel > edges >
shapes > facial > high-level features. Layer cuối cùng được dùng để phân lớp ảnh.

Hình 2.3: Mô hình mạng neural CNN
(Nguồn: />

CNNs có tính bất biến và tính kết hợp cục bộ (Location Invariance and
Compositionality). Với cùng một đối tượng, nếu đối tượng này được chiếu theo các
gốc độ khác nhau (translation, rotation, scaling) thì độ chính xác của thuật toán sẽ bị
ảnh hưởng đáng kể. Pooling layer sẽ cho bạn tính bất biến đối với phép dịch chuyển
(translation), phép quay (rotation) và phép co giãn (scaling).

2.2.1.4 Mô hình mạng neural tích chập cho xữ lý ngôn ngữ tự nhiên
Thay vì sử dụng các pixel như trong xử lý ảnh, trong xử lý ngôn ngữ tự nhiên
(NLP), ta biến đổi các câu hay văn bản thành một ma trận đầu vào. Mỗi dòng của
ma trận tương ứng với một token (một từ trong câu, nhưng cũng có thể là một ký tự
– character). Nghĩa là, mỗi dòng là một vector đại diện cho một từ. Thông thường,
những vector này là word embedding (word2vec hay GloVe), nhưng chúng cũng có
thể là one-hot vector (một cách đánh chỉ số sự xuất hiện của từ này trong dữ liệu từ
điển – vocabulary). Giả sử ta có một câu gồm 10 từ được biểu diễn thành word
embedding vector gồm 100 chiều, ta sẽ có đầu vào là một ma trận 10×100, tương
ứng trong xử lý ảnh, ta có một bức ảnh 10×100 pixel.


13

Hình 2.4: Minh hoạ mạng neural CNN cho xữ lý ngôn ngữ tự nhiên
(Nguồn: Zhang, Y., & Wallace, B. (2015). A Sensitivity Analysis of (and Practitioners’
Guide to) Convolutional Neural Networks for Sentence Classification.)

Duyệt qua từng từ một. Nghĩa là, ta sẽ duyệt qua từng dòng của ma trận đầu
vào. Khi đó, chiều rộng của filter sẽ bằng với chiều rộng của ma trận đầu vào (trong
ví dụ trên, chiều rộng bằng 10). Chiều cao (region size) của filter có thể tùy ý thay
đổi sao cho phù hợp, thường là từ 2 đến 5 từ (như 2 đến 5-grams trong n-grams).
Quan sát hình 2.4, ta có đầu vào là một câu gồm 7 từ (kể cả ký tự!) “I like this
movie very much!”. Các từ này được chuyển đổi thành word embedding có số chiều

d = 5. Khi đó, ta có một ma trận đầu vào là 7×5. Ở layer tiếp theo, ta sử dụng các
filter với region size khác nhau gồm 2, 3, và 4. Gấp đôi số lượng từng dạng filter
này lên, ta có tổng cộng 6 filter. Tiếp đến, ta thực hiện nhân tích chập tương ứng với
từng filter và cho qua activate function (softmax hay tanh) để thu được các vector
đầu ra. Sau đó, ta sẽ cho các vector này đi qua filter max-pooling (average-pooling


14

hay các phép toán tương tự khác), mục đích chính là để chuẩn hóa đầu ra các vector
sao cho chúng có số chiều là như nhau. Ở layer cuối cùng, tùy theo bài toán của
chúng ta là Phan loại văn bản (Text Classification), Phân tích cảm xúc (Sentiment
Analysis), phát hiện spam (Spam Detection), Phân loại đề tài (Topic
Categorization) mà ta sẽ giới hạn số chiều của vector phân lớp này thành 2 hay
nhiều chiều tương ứng.

Hình 2.5: Minh hoạ ma trận max-pooling trong CNN
(Nguồn: />
CNNs phù hợp với các tác vụ phân lớp như Phân tích cảm xúc (Sentiment
Analysis), Phát hiện spam (Spam Detection) hay Phân loại chủ đề (Topic
Categorization). Các phép toán convolution và max-pooling làm thất thoát thông tin
về thứ tự cục bộ giữa các từ (local order of words). Do đó, các tác vụ liên quan đến
gán nhãn cho chuỗi (sequence tagging) như POS Tagging, Entity Extraction sẽ
không phù hợp khi sử dụng kiến trúc của CNNs.
Một ưu điểm lớn của CNNs là tốc độ tính toán. Đối với các phép toán
convolution, ta hoàn toàn có thể triển khai trên các phần cứng có tốc độ tính toán
cao như GPUs (card đồ họa máy tính). Khi so sánh với mô hình truyền thống như ngrams, CNNs biểu diễn thông tin hiệu quả hơn. Cho tập dữ liệu từ điển, ở cấp độ 3grams, ta đã tốn rất nhiều chi phí để tính toán. Thay vì xây dựng một hệ thống 5grams lớn như vậy, CNNs sẽ xây dựng các convolution filter (lọc tích chập) có khả
năng biểu diễn trừu tượng cho toàn bộ n-grams này. Nói cách khác, các filter này có
khả năng nắm bắt thông tin tương tự như n-grams nhưng lại có cách biểu diễn tinh
gọn hơn.



15

2.2.2 Recurrent Neural Networks (RNNs)
Recurrent Neural Networks (hay còn gọi là mạng neural tái phát) là một trong
những mô hình Deep Learning được đánh giá có nhiều ưu điểm trong các tác vụ xử
lý ngôn ngữ tự nhiên. và các ứng dụng nhận diện giọng nói, các chuỗi thông tin
đóng vai trò rất quan trọng. Ví dụ, một từ xuất hiện trong câu sẽ phụ thuộc vào từ
trước đó. Kiến trúc recurrent neural network giải quyết vấn đề này được minh họa:

Hình 2.6: Mô hình mạng neural RNN
(Nguồn: />
Recurrent có nghĩa là thực hiện lặp lại cùng một tác vụ cho mỗi thành phần
trong chuỗi. Trong đó, kết quả đầu ra tại thời điểm hiện tại phụ thuộc vào kết quả
tính toán của các thành phần ở những thời điểm trước đó. Nói cách khác, RNNs là
một mô hình có trí nhớ (memory), có khả năng nhớ được thông tin đã tính toán
trước đó. Không như các mô hình Neural Network truyền thống đó là thông tin đầu
vào (input) hoàn toàn độc lập với thông tin đầu ra (output). Về lý thuyết, RNNs có
thể nhớ được thông tin của chuỗi có chiều dài bất kì, nhưng trong thực tế mô hình
này chỉ nhớ được thông tin ở vài bước trước đó.
Quan sát sơ đồ biểu diễn RNNs, ta thấy rằng mô hình này có khả năng biểu
diễn mối quan hệ phụ thuộc giữa các thành phần trong chuỗi. Ví dụ, nếu chuỗi của
chúng ta là một câu có 5 từ thì Neural Network này sẽ unfold (dàn ra) thành Neural
Network có 5 layer, mỗi layer tương ứng với mỗi từ. Dưới đây là ý nghĩa các kí
hiệu toán học.
xt là input tại thời điểm thứ t. Ví dụ, x1 là one-hot vector của từ thứ hai trong
câu (vị trí các từ được đánh số từ 0).



16

st là hidden state (memory) tại thời điểm thứ t. st được tính dựa trên các hidden
state trước đó kết hợp với input của thời điểm hiện tại 𝑠0 =

𝑈23 +

𝑊6378 . Hàm ƒ là hàm nonlinearity (tanh hay ReLU). 𝑠9: là hidden state được khởi
tạo là một vector không.
ot là output tại thời điểm thứ t. ot là một vector chứa xác suất của toàn bộ các
từ trong từ điển 𝑜0 = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 𝑉63 .
Không như Neural Network truyền thống, tại mỗi layer phải sử dụng một
parameter khác. RNNs chỉ sử dụng một bộ parameters (U, V, W) cho toàn bộ các
bước.

2.2.3 Long short-term memory (LSTM)
2.2.3.1 Vấn đề phụ thuộc quá dài (Long-Term Dependencies)
Một trong những ý tưởng ban đầu của RNN là kết nối những thông tin trước
đó nhằm hỗ trợ cho các xử lý hiện tại. Nhưng đôi khi, ta chỉ cần dựa vào một số
thông tin gần nhất để thực hiện tác vụ hiện tại. Ví dụ, trong language modeling, bạn
cố gắng dự đoán từ tiếp theo dựa vào các từ trước đó. Nếu chúng ta dự đoán từ cuối
cùng trong câu “đám mây bay trên bầu trời”, thì chúng ta không cần truy tìm quá
nhiều từ trước đó, ta có thể đoán ngay từ tiếp theo sẽ là “bầu trời”. Trong trường
hợp này, khoảng cách tới thông tin liên quan được rút ngắn lại.

Hình 2.7: RNN short term depdencies [8]

Hình 2.8: RNN long term dependencies [8]



×