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

Phân loại văn bản dựa trên CNC (tt)

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 (573.32 KB, 26 trang )

ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA

TRẦN THỊ THÚY HÀ

PHÂN LOẠI VĂN BẢN DỰA TRÊN CNN

C
C
R
UT.L

D

Chuyên ngành: KHOA HỌC MÁY TÍNH
Mã số: 8480101

TĨM TẮT LUẬN VĂN THẠC SĨ KỸ THUẬT

Đà Nẵng – Năm 2021


Cơng trình được hồn thành tại
ĐẠI HỌC ĐÀ NẴNG

Người hướng dẫn khoa học: PGS TS. VÕ TRUNG HÙNG

Phản biện 1: PGS.TS Nguyễn Tấn Khôi

C
C


R
UT.L

Phản biện 2: TS. Lâm Tùng Giang

D

Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp
thạc sĩ kỹ thuật họp tại trường Đại học Bách khoa vào ngày 23 tháng
01 năm 2021

Có thể tìm hiểu luận văn tại:
- Trung tâm Học liệu và truyền thông, Trường ĐH Bách khoa Đại học
Đà Nẵng
- Thư viên Khoa Công Nghệ Thông, Trường ĐH Bách khoa-ĐHĐN


1

MỞ ĐẦU
1. Lý do chọn đề tài
Ngày nay, với sự phát triển mạnh mẽ của ngành công nghệ
thông tin cùng với sự bùng nổ về khối lượng thông tin trên mạng
Internet đang khiến con người loay hoay với việc xử lý ra sao với
lượng thơng tin đó để có thể phân loại, chọn lọc thông tin sao cho tốt
nhất cho mình.
Trong thực tế, số lượng văn bản quá lớn, sử dụng phương pháp
phân loại dữ liệu thủ công là điều khơng khả thi bởi có vơ số văn bản
cần phân loại. Mặt khác như chúng ta đã biết máy tính chỉ có thể hiểu
được dữ liệu đầu vào ở dạng số mà phần lớn lượng thông tin hiện nay

lại ở dạng văn bản. Đã có nhiều nghiên cứu nhằm giải quyết vấn đề
trên và bài toán phân loại văn bản là một trong những giải pháp hợp
lý.
Trước hết đã là bài tốn phân loại thì chúng ta có thể dùng các
thuật toán phân loại (trong machine learning hay deep learning) như:
Naive Bayes, Decision Tree (Random Forest), Vector Support
Machine (SVM), Convolution Neural Network (CNN), Recurrent
Neural Network (RNN), Long Short-Term Memory (LSTM)…
Theo một số khảo sát, nghiên cứu thì kỹ thuật mạng Neural tích
chập - CNN được đánh giá là có độ chính xác tốt với tính nhất quán
dữ liệu khá cao và vượt trội hơn các kỹ thuật khác ở thời gian huấn
luyện – trainning dữ liệu. Vì vậy luận văn này, tôi quyết định thực hiện
đề tài “Phân loại văn bản dựa trên CNN (Convolutional Neural
Network)”.
2. Mục tiêu và nhiệm vụ nghiên cứu
2.1 Mục tiêu
Ứng dụng thành công kỹ thuật Word Embedding kết hợp với
thuật toán CNN vào bài toán phân loại văn bản trong thực tế.

D

C
C
R
UT.L


2
2.2 Nhiệm vụ chính của đề tài
Nghiên cứu cơ sở lý thuyết về xử lý ngôn ngữ tự nhiên, các ký

thuật học sâu và áp dụng kỹ thuật học sâu CNN vào thực tế trong các
bài toán phân loại văn bản.
Bài toán phân loại văn bản ở đây là tự động phân loại văn bản
vào một hoặc nhiều danh mục (chun mục) đã được xác định trước
đó. Một vài ví dụ của phân loại văn bản là: phân loại theo cảm xúc của
người viết bài (vui, buồn, tức giận...) từ mạng xã hội, phát hiện thư
rác, tự động gán nhãn các truy vấn của khách hàng, phân loại các bài
báo thành các chủ đề đã được xác định trước…
3. Đối tượng và phạm vi nghiên cứu
3.1 Đối tượng nghiên cứu
Các vấn đề liên quan đến xử lý ngôn ngữ tự nhiên và thuật toán
học sâu CNN và kỹ thuật nhúng Word Embedding.
3.2 Phạm vi nghiên cứu
Nghiên cứu tập trung vào kỹ thuật học sâu và ứng dụng CNN
vào giải quyết bài toán phân loại văn bản.
4. Phương pháp nghiên cứu
4.1 Phương pháp lý thuyết
- Tìm hiểu các bài báo trong và ngồi nước về xử lý ngơn ngữ
tự nhiên và học sâu.
- Tìm các dữ liệu mẫu về bài tốn phân loại văn bản.
- Tìm hiểu các phương pháp phân loại văn bản áp dụng cho
việc huấn luyện dùng CNN.
4.2 Phương pháp thực nghiệm
- Xây dựng chương trình demo vào chương cuối dựa trên giải
pháp đề xuất.
5. Bố cục của luận văn
Luận văn được tổ chức thành ba chương với nội dung chính như
sau:

D


C
C
R
UT.L


3
CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT
Chương này trình bày khái qt về ngơn ngữ tự nhiên và các
phương pháp xử lý ngôn ngữ tự nhiên.
CHƯƠNG 2: PHÂN LOẠI VĂN BẢN
Chương này trình bày về bài tốn phân loại văn bản và kỹ thuật
xử lý ngôn ngữ tự nhiên Word Embeddings và mơ hình nơron tích
chập cho phân loại văn bản.
CHƯƠNG 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ
Triển khai ứng dụng cụ thể giải quyết bài toán thực tế mô phỏng
cho cơ sở lý thuyết ở chương 1 và 2 và đánh giá.
Cuối cùng là phần kết luận và hướng phát triển

C
C
R
UT.L

CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ LÝ THUYẾT

D

1.1. Tổng quan về xử lý ngôn ngữ tự nhiên

1.1.1. Khái niệm về ngôn ngữ tự nhiên
Ngôn ngữ tự nhiên đề cập đến cách mà con người giao tiếp với
nhau. Cụ thể là lời nói và văn bản. Chúng ta đang được được bao quanh
bởi văn bản. Hãy suy nghĩ về số lượng văn bản bạn nhìn thấy mỗi
ngày: dấu hiệu, thực đơn, Email, tin nhắn, trang web, ... Chúng ta có
thể nói chuyện với nhau một cách dễ dàng hơn là cách chúng ta viết.
Văn nói bao giờ cũng dễ hơn văn viết. Giọng nói và văn bản là cách
chúng ta giao tiếp với mọi người. Do tầm quan trọng của loại dữ liệu
này, chúng ta phải có phương pháp để hiểu và suy luận về ngôn ngữ
tự nhiên, giống như chúng ta làm đối với các loại dữ liệu khác.[1]
1.1.2. Thách thức đặt ra đối với ngôn ngữ tự nhiên
Làm việc với dữ liệu của ngôn ngữ tự nhiên khơng phải dễ để
xử lý. Nó đã được nghiên cứu trong nửa thế kỷ và nó thực sự rất khó.
Ngơn ngữ tự nhiên chủ yếu là khó vì vấn đề là nó khá lộn xộn. Có một


4
vài quy tắc giúp chúng ta có thể dễ dàng hiểu nhau hầu hết thời gian.
1.1.3. Từ ngôn ngữ học đến xử lý ngôn ngữ tự nhiên
Ngôn ngữ học là nghiên cứu khoa học về ngôn ngữ, bao gồm
ngữ pháp, ngữ nghĩa và ngữ âm của nó. Ngơn ngữ học cổ điển liên
quan đến việc nghĩ ra và đánh giá các quy tắc của ngơn ngữ.
Ngơn ngữ học tính tốn là nghiên cứu hiện đại về ngôn ngữ
học sử dụng các cơng cụ của khoa học máy tính. Ngơn ngữ học trước
đây có thể là nhà ngơn ngữ học tính tốn cịn ngày nay khi sử dụng
các cơng cụ tính toán và suy nghĩ đã vượt qua hầu hết các lĩnh vực
nghiên cứu.
Ngơn ngữ học tính tốn là nghiên cứu về hệ thống máy tính
để hiểu và tạo ra ngơn ngữ tự nhiên. Một chức năng tự nhiên cho ngôn
ngữ học tính tốn sẽ là thử nghiệm ngữ pháp được đề xuất bởi các nhà

ngôn ngữ học lý thuyết.
Dữ liệu lớn và máy tính nhanh có nghĩa là những thứ mới và
khác nhau có thể được phát hiện từ bộ dữ liệu lớn của văn bản bằng
cách viết và chạy phần mềm. Các phương pháp dựa trên dữ liệu để xử
lý ngôn ngữ tự nhiên đã trở nên rất phổ biến rằng chúng phải được coi
là phương pháp tiếp cận chủ đạo đối với ngơn ngữ học tính tốn. Một
yếu tố đóng góp mạnh mẽ cho sự phát triển này chắc chắn là sự gia
tăng lượng dữ liệu được lưu trữ điện tử có sẵn mà các phương pháp
này có thể được áp dụng; một yếu tố khác có thể là một sự bất mãn
nhất định với các phương pháp chỉ dựa vào trên các quy tắc thủ công.
Ngôn ngữ học tính tốn cũng được biết đến bằng tên của q
trình ngơn ngữ tự nhiên hoặc NLP để phản ánh cách tiếp cận dựa trên
sự sắp đặt hoặc dựa trên kinh nghiệm của các phương pháp thống kê.
1.1.4.Xử lý ngôn ngữ tự nhiên
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ì xử lý ngơn ngữ tự nhiên

D

C
C
R
UT.L


5
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.
Xử lý ngơn ngữ tự nhiên có vai trị hết sức quan trọng trong

ngành Khoa học máy tính. Nó có vơ vàn ứng dụng hữu ích trong cuộc
sống cũng như nghiên cứu. Chúng ta có thể điểm qua một vài ứng
dụng của xử lý ngôn ngữ tự nhiên như:
- Nhận dạng chữ viết
- Nhận dạng tiếng nói
- Tổng hợp tiếng nói
- Dịch tự động (Machine translate)
- Tìm kiếm thơng tin (Information retrieval
- Tóm tắt văn bản
- Khai phá dữ liệu (Data mining) và phát hiện tri thức
Xử lý ngôn ngữ tự nhiên là một kĩ thuật quan trọng nhằm giúp
máy tính hiểu được ngơn ngữ của con người, qua đó hướng dẫn máy
tính thực hiện và giúp đỡ con người trong những cơng việc có liên
quan đến ngơn ngữ như : dịch thuật, phân tích dữ liệu văn bản, nhận
dạng tiếng nói, tìm kiếm thơng tin, ...
1.2. Học sâu
1.2.1. Khái niệm
1.2.2. Học sâu là một mạng lưới thần kinh lớn
Deep Learning (DL) hoạt động dựa trên việc “mơ phỏng” quy
trình hoạt động của bộ não người. Khi suy nghĩ hoặc xác định một vấn
đề, chúng ta thường học bằng các kinh nghiệm trước đó (learning).
Hoặc khi gặp một vấn đề phức tạp hơn, thơng thường chúng ta phân
tích vấn đề phức tạp đó thành các vấn đề đơn giản hơn để dễ giải quyết.
Mạng lưới thần kinh được đặt tên như vậy là bởi vì về căn bản
chúng bắt chước hoạt động của các tế bào thần kinh trong não người.
Các mạng này được tạo thành từ 3 lớp tế bào thần kinh kỹ thuật số:
lớp đầu vào, lớp ẩn, lớp đầu ra. Tất cả các mạng thần kinh đều có một

D


C
C
R
UT.L


6
lớp đầu vào, trong đó dữ liệu ban đầu được đưa vào và một lớp đầu ra,
tạo ra Hứa hẹn cuối cùng.
Hình 1.1 Mơ hình mạng thần kinh nhân tạo
Mơ hình mạng lưới thần kinh đầu tiên đến từ McCulloch và Pitts

D

C
C
R
UT.L

năm 1943. Mạng này là một bộ phân loại nhị phân, có khả năng nhận
ra hai loại khác nhau dựa trên một số đầu vào. Các vấn đề là các trọng
số được sử dụng để xác định nhãn lớp cho đầu vào đã cho là cần thiết
được điều chỉnh thủ cơng bởi con người - loại mơ hình này rõ ràng
khơng có quy mơ tốt.
Trong nhiều ứng dụng, CNN hiện được coi là trình phân loại
hình ảnh mạnh nhất và hiện chịu trách nhiệm thúc đẩy các công nghệ
tiên tiến trong lĩnh vực thị giác máy tính thúc đẩy học máy.
1.2.3. Học sâu là học tính năng phân cấp
Ngồi khả năng mở rộng, một lợi ích khác thường được trích
dẫn của các mơ hình học sâu là khả năng thực hiện trích xuất tính năng

tự động từ dữ liệu thơ, cịn được gọi là tính năng học.
Như chúng ta đã biết các thuật tốn học máy nói chung rơi vào
ba loại - học có giám sát, học khơng giám sát và học bán giám sát.


7
Học sâu hay cụ thể là Mạng lưới thần kinh chuyển đổi, có một
cách tiếp cận khác, được sử dụng để phân loại hình ảnh và thu được
nhãn lớp đầu ra - lớp đầu ra là trực tiếp hoặc ảnh hưởng gián tiếp bởi
mọi nút khác trong mạng.
Chúng ta có thể xem quá trình này là học phân cấp: mỗi lớp
trong mạng sử dụng đầu ra của các lớp trước khi xây dựng các khối để
xây dựng các khái niệm trừu tượng hơn. Những lớp được học tự động
- không có kỹ thuật thủ cơng nào diễn ra trong mạng.
Một trong những lợi ích chính của việc học sâu và Mạng nơ ron
kết hợp là nó cho phép bỏ qua bước trích xuất tính năng và thay vào
đó tập trung vào quá trình đào tạo để tìm hiểu các bộ lọc này.
1.2.4. Học sâu - học có thể mở rộng trên các miền
Học sâu vượt trội trên các lĩnh vực vấn đề trong đó đầu vào (và
thậm chí đầu ra) là tương tự (analog). Có nghĩa, dữ liệu của chúng
khơng chỉ là một số định dạng bảng mà thay vào đó là dữ liệu hình ảnh
của pixel, dữ liệu của các tài liệu, văn bản hoặc tập âm thanh.
1.3. Hứa hẹn của học sâu dành cho ngôn ngữ tự nhiên
1.3.1. Hứa hẹn của học sâu
Phương pháp học sâu là khá phổ biến, chủ yếu bởi vì chúng
đang có tiềm năng phát triển của chúng. Điều đó khơng có nghĩa là
khơng có sự cường điệu xung quanh cơng nghệ, mà là sự cường điệu
dựa trên trên các kết quả rất thực đang được chứng minh qua một bộ
các vấn đề thách thức trí tuệ nhân tạo từ thi giác máy tính và xử lý
ngôn ngữ tự nhiên. Một số những minh chứng lớn đầu tiên về sức

mạnh của việc học sâu là trong xử lý ngôn ngữ tự nhiên, cụ thể là nhận
dạng giọng nói và gần đây hơn trong dịch máy.
1.3.2. Hứa hẹn của mơ hình thay thế thả vào
Lời hứa đầu tiên cho việc học sâu trong xử lý ngôn ngữ tự nhiên
là khả năng thay thế các mô hình tuyến tính hiện có với các mơ hình

D

C
C
R
UT.L


8
hoạt động tốt hơn có khả năng học hỏi và khai thác phi tuyến các mối
quan hệ.
1.3.3. Hứa hẹn của mơ hình NLP mới
Một hứa hẹn khác là phương pháp học sâu tạo điều kiện phát
triển các mơ hình hồn tồn mới. Một ví dụ mạnh mẽ là việc sử dụng
các mạng nơron lặp lại có khả năng học hỏi và điều kiện đầu ra qua
các chuỗi rất dài. Cách tiếp cận khác nhau ở chỗ chúng cho phép người
thực hành thốt khỏi các mơ hình giả định truyền thống và lần lượt đạt
được các kết quả hiện đại.
1.3.4. Hứa hẹn về tính năng học tập
Các phương pháp học sâu có khả năng học các đặc tính đặt trưng
của đối tượng thay vì yêu cầu các chuyên gia chỉ định và trích xuất các
đối tượng địa lý từ ngơn ngữ tự nhiên theo cách thủ công.
1.3.5. Hứa hẹn tiếp tục cải tiến
Một hứa hẹn khác về học sâu cho NLP là tiếp tục và cải thiện

nhanh chóng các vấn đề khó khăn. Trong cùng bài giảng đầu tiên về
học sâu cho NLP, Chris Manning tiếp tục mô tả rằng các phương pháp
học sâu rất phổ biến đối với ngôn ngữ tự nhiên vì chúng đang có hiệu
quả.
1.3.6. Hứa hẹn về các mơ hình đầu cuối
Một lời hứa cuối cùng của học sâu là khả năng phát triển và đào
tạo các mơ hình đầu cuối cho các vấn đề ngơn ngữ tự nhiên thay vì
phát triển các mơ hình chun biệt. Đây là điều mong muốn cả về tốc
độ và sự đơn giản của quá trình phát triển cùng với việc cải thiện hiệu
suất của các mơ hình này.
NMT (Neural Machine Translation) là sự kết hợp của dịch máy
(Machine Translation) và mạng nơ-ron nhân tạo (Artificial Neural
Network - NN, đề cập đến các mạng nơron lớn cố gắng học cách dịch
ngôn ngữ này sang ngôn ngữ khác. Đây là một nhiệm vụ truyền thống

D

C
C
R
UT.L


9
được xử lý bởi một loạt các mơ hình được điều chỉnh bằng tay truyền
thống, mỗi mơ hình đều u cầu chuyên môn chuyên sâu.
1.4. Tiểu kết chương
Trong chương này, chúng ta đã khám phá ra cách xử lý ngôn
ngữ tự nhiên và tại sao nó lại quan trọng như vậy, những lời hứa của
mạng nơ ron học sâu dành cho ngơn ngữ tự nhiên

Những nội dung của chương có ý nghĩa quan trọng để làm tiền
đề cho việc tìm hiểu bài toán phân loại văn bản ở chương tiếp theo.

CHƯƠNG 2. PHÂN LOẠI VĂN BẢN
2.1. Mơ tả bài tốn
Phân loại văn bản (Text Classification) là bài tốn thuộc nhóm

C
C
R
UT.L

học có giám sát (Supervised learning) trong học máy. Bài tốn này u
cầu dữ liệu cần có nhãn (label). Mơ hình sẽ học từ dữ liệu có nhãn đó,

D

sau đó được dùng để dự đoán nhãn cho các dữ liệu mới mà mơ hình
chưa gặp.

Bài tốn phân loại văn bản có thể được định nghĩa như sau. Từ
một tập các văn bản D = {d1, d2, …, dn}, được gọi là tập huấn luyện,
trong đó các tài liệu di được gán nhãn chủ đề ci với ci thuộc tập các
chủ đề C = {c1, c2, …, cn} để xây dựng bộ phân lớp. Nhiệm vụ của
bộ phân lớp là gán đúng nhãn chủ đề ck cho một tài liệu mới dk bất
kỳ, trong đó ck thuộc vào tập chủ đề.


10


D

C
C
R
UT.L

Hình 2. 1 Cấu trúc CNN phân loại câu
#sentence: Câu văn này có 6 từ và một dấu câu nữa. Dấu câu
này ở đây sẽ được coi như là một từ. Như vậy là chúng ta có 7 từ tất
cả. Ở đây tôi chọn số chiều của word vector là 5 (tức là mỗi từ sẽ là
một vector kích thước 1×5). Giả sử ta gọi d là số chiều của word
vector. Như vậy kích thước ma trận của cả câu văn này là 7 x 5.
#filters: Ở ví dụ trên mỗi từ lại là một vector 5 chiều, do vậy ta
cần cố định số chiều của bộ lọc cho phù hợp với số chiều của từ. Như
vậy bộ lọc này nên có kích thước (? x 5). Dấu ? thể hiện số từ (số hàng)
mà ta muốn lấy vào.
Ở bức hình trên, #filters là minh họa cho các bộ lọc. Đây không
phải là bộ lọc để lọc bỏ các phần tử khỏi ma trận bị lọc. Điều này sẽ
được giải thích kỹ hơn ở đoạn tiếp theo. Ở đây, tơi sử dụng 6 bộ lọc,
các bộ lọc được sử dụng có kích thước (2, 3, 4) từ.
#featuremaps:


11
Ảnh phía trên thực hiện việc tính tốn cho bộ lọc có kích thước
là 2 (2 từ). Với giá trị đầu tiên, bộ lọc màu vàng kích thước 2 x 5 thực
hiện nhân từng thành phần với 2 hàng đầu tiên của văn bản (I, like).
Nó thực hiện bằng cách:
0.51 = 0.6 x 0.2 + 0.5 x 0.1 + 0.2 x 0.2 + ... + 0.1 x 0.1.

Tiếp theo với giá trị thứ 2, bộ lọc màu vàng giữ nguyên nhưng
lần này nhân tích chập với ma trận văn bản của 2 từ (like, this) theo
cách tương tự:
0.53 = 0.8 x 0.2 + 0.9 x 0.1 + ... + 0.7 x 0.1.
Cứ như vậy, ma trận bộ lọc(màu vàng) sẽ lùi xuống một dòng
cho đến khi hết ma trận văn bản. Như vậy ma trận kết quả sẽ có kích
thước là (7-2 + 1 x 1) = (6 x 1).
Để bảo đảm giá trị của map đặc trưng, chúng ta cần sử dụng một
activation function( vd. ReLU). Áp dụng ReLU vẫn cho chúng ta ma
trận có kích thước là 6 x1.
#1max:
Trong ví dụ này, ta sử dụng 1-max-pooling. Tức là lấy ra 1 giá
trị lớn nhất trong từng map đặc trưng. Việc này giúp ta có ma trận
output có cùng kích thước. Ở đây kích thước sau khi áp dụng #1max
là (1×1). Như vậy, ta chỉ lấy 1 đặc trưng trội nhất ở tất cả các lớp cnn
để phục vụ cho bài toán.
#concat1max:
Sau khi áp dụng 1-max pooling, chúng ta đã có những vector có
kích thước cố định là 1×1 của 6 thành phần(bằng số bộ lọc). Vector cố
định kích thước này sau đó được đưa vào một hàm softmax(lớp fullyconnected) để giải quyết việc phân loại.
Như vậy, #concat1max thực hiện việc kết hợp tất cả các đặc
trưng ở bước trước lại. Đưa ra một vector đặc trưng cuối cùng để đưa
vào fully-connected.

D

C
C
R
UT.L



12
2.2. Kỹ thuật Word Embeddings kết hợp CNN cho bài phân loại
văn bản
Thơng thường, máy tính khơng thể hiểu được ý nghĩa các từ.
Như vậy, để xử lý được ngôn ngữ tự nhiên, ta cần có một phương pháp
để biểu diễn văn bản dưới dạng mà máy tính có thể hiểu được. Phương
pháp tiêu chuẩn để biểu diễn văn bản đó là biểu diễn các văn bản theo
vector. Trong đó, các từ/cụm từ thuộc kho tài liệu ngôn ngữ được ánh
xạ thành những vector trên hệ không gian số thực.
Đối với bài tốn tìm ra word vector, dữ liệu đầu vào sẽ là một
văn bản, xem như là tập hợp các từ (word). Đầu tiên, tương ứng với
mỗi word thì chúng ta sẽ khởi tạo một vector random với số chiều
được chỉ định (giả sử 100). Sau khi đã có vector random, việc tiếp theo
là thực hiện quá trình điều chỉnh vector của các từ này để sao cho
chúng có thể biểu diễn được liên hệ giữa các từ có quan hệ với nhau.
Trong xử lý ngôn ngữ tự nhiên, Word Embedding là một kỹ
thuật được sử dụng để chuyển hóa text (characters, words hoặc
phrases) thành dạng vector số để từ đó làm đầu vào cho việc huấn
luyện các mơ hình Deep learning. Word Embedding đảm bảo rằng các
từ tương tự nhau sẽ có giá trị vector gần giống nhau. Thơng thường,
Word Embedding được chia thành hai loại chính là Frequency-based
embedding và Prediction-based embedding.
Hiện nay, hai phương pháp được sử dụng nhiều nhất trong Word
Embedding là Glove và Word2vec. Mặc dù hai phương pháp này
thuộc hai dạng khác nhau nhưng nhiều kết quả cho thấy chúng có
nhiều điểm tương đồng và tương đối gần nhau. Phương pháp được sử
dụng trong luận văn là Word2vec.
Word2vec là phương pháp biểu diễn một từ dưới dạng một phân

bố quan hệ với các từ cịn lại. Mỗi từ được biểu diễn bằng một vector
có các phần tử mang giá trị là phân bố quan hệ của từ này đối với các
từ khác trong từ điển.

D

C
C
R
UT.L


13

Ví dụ bài tốn kinh điển King + Man – Woman = ? ở phần trên.
Việc nhúng các từ trong không gian vector cho thấy sự tương tự giữa
các từ. Giả sử như tại hình 3.1 là một sự khác biệt về mặt giới tính
giữa các cặp từ (“man”,”woman”), (“uncle”,”aunt”), (“king”,”queen”)
W(“woman”) – W(“man”) ≈ W(“aunt”) – W(“uncle”)
W(“woman”) – W(“man”) ≈ W(“queen”) – W(“king”)
Từ đó, kết quả của King + Man – Woman = Queen.
Hình 2.2 Phân bố mối quan hệ giữa các từ trong word2vec
Để xây dựng được vector mô tả phân bố quan hệ với tập từ điển,
bản chất mơ hình Word2vec sử dụng một mạng neural đơn giản với
một lớp ẩn. Sau khi được huấn luyện trên toàn bộ tập văn bản, tồn bộ
lớp ẩn sẽ có giá trị mơ hình hóa quan hệ của từ trong tập văn bản được
huấn luyện ở mức trừu tượng.
2.3. Sử dụng kiến trúc CNN một lớp
CNN là một mạng nơron được hình thành từ nhiều lớp khác
nhau. Tuy nhiên các lớp trong CNN được gọi là Convolutional layers

vì nó sử dụng thuật tốn Convolution. Ở đây, ta có thể hiểu
Convolution là việc sử dụng một Sliding window (cửa số trượt) để tính
tốn giá trị đầu ra từ một Matrix đầu vào.
Tương tự như vậy, bằng cách sử dụng một Filter với một giá trị
hợp lý, ta có thể phát hiện được một pattern nhất định trong dữ liệu

D

C
C
R
UT.L


14
đầu vào. Ở đây, giá trị của Filter được coi là các parameters và được
học thơng qua q trình huấn luyện Model.
Tuy nhiên, trong thực tế, các hình ảnh thường có dạng 3dimension (Height x Width x Chanel) thay vì 2-dimension (Height x
Width) như ở trên. Do đó thì các Filter cũng phải ở dạng 3-dimension
với số lượng Chanel bằng với số lượng Chanel của dữ liệu đầu vào.
Khi đó, việc thực hiện Convolution cũng được tiến hành tương tự
nhưng theo từng Chanel rồi sau đó ta cộng tổng kết quả của các Chanel
lại với nhau. Ngoài ra, ta cũng có thể sử dụng nhiều Filter để phát hiện
các Patterns khác nhau.

C
C
R
UT.L


D

Hình 2. 3. Sơ đồ mơ hình 1 lớp của CNN
Thơng thường, một Model sẽ có nhiều Convolutional Layers và
mỗi Convolutional Layer lại có nhiệm vụ phát hiện một Pattern nhất
định. Tuy nhiên, Layer sau thường được dùng để phát hiện Pattern ở
mức độ cao hơn Layer trước.
Ngoài ra, ta thường kết hợp các Convolutional Layers với
Pooling Layers và Fully Connected Layers để tạo thành một Model
với độ chính xác cao hơn. Thơng thường, có hai dạng Pooling chính


15
là Max Pooling và Average Pooling. Trong đó, cịn Average Pooling
thì chọn giá trị trung bình cộng.
Như vậy, một Model sử dụng CNN thường có cấu trúc tổng qt
như sau:

Hình 2. 4 Cấu trúc tổng qt mơ hình CNN
Ta có thể nhận được kết quả tốt cho việc phân loại tài liệu chỉ
với một lớp CNN, có lẽ với các hạt nhân có kích thước khác nhau
thơng qua các bộ lọc để cho phép nhóm các từ đại diện khác nhau quy
mơ. Yoon Kim trong nghiên cứu của mình về việc sử dụng các vectơ
từ được đào tạo trước cho các nhiệm vụ phân loại với CNN đã nhận
thấy rằng sử dụng các vectơ từ tĩnh được đào tạo trước rất tốt.
Trong mơ hình CNN có 2 khía cạnh cần quan tâm là tính bất
biến (Location Invariance) và tính kết hợp (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
tốn sẽ bị ảnh hưởng đáng kể.

Mơ hình CNN sẽ sử dụng để giải quyết bài toán đặt ra
- Văn bản cần training: Dữ liệu đầu vào mà mơ hình học có
giám sát của chúng ta có thể hiểu và dự đốn được các lớp cần thiết.
- Feature Vector: Một feature vector là một vector bao gồm
thơng tin chi tiết các đặc tính của dữ liệu đầu vào.
- Labels: Categories/ classes mà mơ hình của chúng ta cần dự
đoán.

D

C
C
R
UT.L


16
- Thuật toán ML: Đây là thuật toán CNN kết hợp Word
Embedding mà Mơ hình xử lý để phân loại văn bản
- Dự đốn mơ hình: Một mơ hình đã được train trước đó sẽ
được dùng để dự đốn nhãn cho văn bản.
2.4. Siêu tham số
Một số siêu đường kính quan trọng hơn các số khác khi điều
chỉnh mạng thần kinh tích chập trên vấn đề phân loại tài liệu của bạn.
Tổng kết lại khi sử dụng CNN, ta cần chú ý đến 4 siêu tham số
quan trọng:
- Kích thước kernel/filter
- Số lượng kernel/filter
- Kích thước bước nhảy (stride)
- Kích thước lề (padding)

Kích thước bộ filter là một trong những tham số quan trọng nhất
của tầng convolution. Kích thước này tỉ lệ thuận với số tham số cần
học tại mỗi tầng convolution và là tham số quyết định receptive field
của tầng này. Kích thước phổ biến nhất của bộ filter là 3x3.
Kích thước filter của tầng convolution hầu hết đều là số lẻ, ví
dụ như 3x3 hay 5x5. Ở những trường hợp đặt biệt như filter có kích
thước 1x1, hay có kích thước bằng với ma trận đầu vào, tầng
convolution có ý nghĩa rất thú vị. Ngồi ra, ta cần lưu ý tham số stride,
thể hiện số pixel bạn cần phải dịch chuyển mỗi khi trượt bộ filter qua
bức ảnh.
Khi các bạn áp dụng phép convolution thì ma trận đầu vào sẽ
có nhỏ dần đi, do đó số layer của mơ hình CNN sẽ bị giới hạn, và
khơng thể xậy đựng deep nets mong muốn. Để giải quyết tình trạng
này, các bạn cần padding vào ma trận đầu vào để đảm bảo kích thước
đầu ra sau mỗi tầng convolution là không đổi. Một cách đơn giản và
phổ biến nhất để padding là sử dụng hàng số 0, ngoài ra các bạn cũng
có thể sử dụng reflection padding hay là symmetric padding.

D

C
C
R
UT.L


17
Một số lưu ý khi chọn các tham số cho CNN:
- Số các convolution layer: càng nhiều các convolution layer
thì performance càng được cải thiện. Sau khoảng 3 hoặc 4 layer, các

tác động được giảm một cách đáng kể. Ở luận văn của này tôi sử dụng
2 convolution layer.
- Filter size: thường filter theo size 5×5 hoặc 3×3.
- Pooling size: thường là 2×2 hoặc 4×4 cho ảnh đầu vào lớn.
- Cách cuối cùng là thực hiện nhiều lần việc train test để chọn
ra được param tốt nhất.
2.5.
Tiểu kết chương
Trong chương này, chúng ta cùng tìm hiểu một số phương pháp
hay để phát triển mơ hình học sâu và một số kỹ đi kèm để phân loại
văn bản.
Những nội dung của chương này có ý nghĩa rất quan trọng để
làm tiền đề cho việc phát triển chương trình thực nghiệm ở chương
cuối.

D

C
C
R
UT.L


18

CHƯƠNG 3. THỰC NGHIỆM VÀ ĐÁNH GIÁ
3.1. Đặc tả chương trình
Bài tốn phân lớp (classification) bài tốn học giám sát lớn
trong lĩnh vực Machine Learnig (ML) bởi vì nội dung của văn bản đã
được gán nhãn, và được sử dụng để thực hiện phân loại. Bài toán

phân lớp là quá trình phân lớp một đối tượng dữ liệu vào một hay
nhiều lớp đã cho trước nhờ một mơ hình phân lớp (model). Mơ hình
này được xây dựng dựa trên một tập dữ liệu được xây dựng trước đó
có gán nhãn (hay cịn gọi là tập huấn luyện). Q trình phân lớp là
quá trình gán nhãn cho đối tượng dữ liệu. Như vậy, nhiệm vụ của bài
toán phân lớp là cần tìm một mơ hình phần lớp để khi có dữ liệu mới
thì có thể xác định được dữ liệu đó thuộc vào phân lớp nào.
Phân lớp là q trình nhóm các đối tượng “giống” nhau vào
“một lớp” dựa trên các đặc trưng dữ liệu của chúng. Mục đích của
việc phân lớp là dự đoán những nhãn phân lớp cho các bộ dữ liệu
hoặc mẫu mới, đầu vào là một tập các mẫu dữ liệu huấn luyện, với
một nhãn phân lớp cho mỗi mẫu dữ liệu và đầu ra là bộ phân lớp dựa
trên tập huấn luyện, hoặc những nhãn phân lớp.
Phân lớp dữ liệu dựa trên tập huấn luyện và các giá trị trong
một thuộc tính phân lớp và dùng nó để xác định lớp cho dữ liệu mới.
3.2. Lựa chọn công cụ
3.2.1.
Ngôn ngữ Python
3.2.2.
Framework Tensorflow
3.2.3.
Keras
3.3. Các bước triển khai
Để xây dựng được một mơ hình phân lớp hồn chỉnh và đánh
giá được mơ hình chúng ta phải trải q các quá trình như dưới đây:
Bước 1: Chuẩn bị dữ liệu (Dataset Preparation).
Bước 2: Xây dựng tập văn bản huấn luyện để test trên mơ hình
gồm Data trainning và Data testing để tách từ, lựa chọn từ đặc trưng

D


C
C
R
UT.L


19
hoặc từ quan trọng để xây dựng bộ từ điển. Công đoạn này được xem
là công đoạn quan trọng trong các bài tốn về học máy. Vì đây là input
cho việc học dể tìm ra mơ hình của bài tốn. Chúng ta phải biết cần
chọn ra những đặt trưng tốt (good feature) của dữ liệu, lược bỏ những
đặc trưng không tốt của dữ liệu, gây nhiễu (noise).
Bước 3: Xây dựng Vectơ đặc trưng. Ở bước này, chúng ta sẽ
đưa dữ liệu dạng văn bản đã được xử lý về dạng vector thuộc tính có
dạng số học. Có nhiều các khác nhau để đưa dữ liệu văn bản dạng text
về dữ liệu dạng số mà chúng ta có thể thực hiện như: TF-IDF Vectors
as features, Word level , N-Gram level, Character level, Word
Embeddings as features… Ở demo trong chương này thì phương pháp
Word Embeddings là phương pháp được lựa chọn để xây dựng vecto
đặc trưng, gán nhãn và phân lớp đối tượng.
Bước 4: Huấn luyện (Trainning).
Bước 5: Đánh giá mơ hình.
3.4. Chuẩn bị dữ liệu
Luận văn sử dụng tập dữ liệu IMDB chứa nội dung của 50.000
bài đánh giá phim từ . Chúng được chia thành
25.000 đánh giá để huấn luyện và 25.000 đánh giá để kiểm tra. Tập dữ
liệu này chứa các bài đánh giá p
him do mọi người đăng trên trang web IMDb, cũng như các
nhãn tương ứng (“tích cực” hoặc “tiêu cực”) cho biết liệu người đánh

giá có thích bộ phim hay khơng.
3.5. Cài đặt và ứng dụng
Thực nghiệm tay này tôi sử dụng tf.keras - một API cấp cao để
xây dựng và đào tạo các mô hình trong TensorFlow và tensorflow_hub
, một thư viện để tải các mơ hình được đào tạo từ TFHub trong một
dịng mã. Tập dữ liệu IMDB có sẵn trên các đánh giá imdb. Dataset
này bao gồm 50,000 đoạn text về movie reviews và được chia đều
thành training set và test set (mỗi set có 25,000 đoạn text). Ngồi ra,

D

C
C
R
UT.L


20
cả hai set này đều được cân bằng về số lượng đánh giá tích cực
(label=1) và tiêu cực (label=0).
Dữ liệu trong IMDB dataset là dữ liệu đã được xử lý với việc
chuyển từng từ trong đoạn text từ dạng word sang dạng int và mỗi
đoạn text lại có độ dài khác nhau. Kết quả hiển thị dữ liệu khi ta chạy
code:
The first row of training data (length: 218):
[1, 14, 22, 16, 43, 530, 973, 1622, 1385, 65, 458, 4468, 66,
3941, 4, 173, 36, 256, 5, 25, 100, 43, 838, 112, 50, 670, 22665, 9, 35,
480, 284, 5, 150, 4, 172, 112, 167, 21631, 336, 385, 39, 4, 172, 4536,
1111, 17, 546, 38, 13, 447, 4, 192, 50, 16, 6, 147, 2025, 19, 14, 22, 4,
1920, 4613, 469, 4, 22, 71, 87, 12, 16, 43, 530, 38, 76, 15, 13, 1247,

4, 22, 17, 515, 17, 12, 16, 626, 18, 19193, 5, 62, 386, 12, 8, 316, 8,
106, 5, 4, 2223, 5244, 16, 480, 66, 3785, 33, 4, 130, 12, 16, 38, 619,
5, 25, 124, 51, 36, 135, 48, 25, 1415, 33, 6, 22, 12, 215, 28, 77, 52, 5,
14, 407, 16, 82, 10311, 8, 4, 107, 117, 5952, 15, 256, 4, 31050, 7,
3766, 5, 723, 36, 71, 43, 530, 476, 26, 400, 317, 46, 7, 4, 12118, 1029,
13, 104, 88, 4, 381, 15, 297, 98, 32, 2071, 56, 26, 141, 6, 194, 7486,
18, 4, 226, 22, 21, 134, 476, 26, 480, 5, 144, 30, 5535, 18, 51, 36, 28,
224, 92, 25, 104, 4, 226, 65, 16, 38, 1334, 88, 12, 16, 283, 5, 16, 4472,
113, 103, 32, 15, 16, 5345, 19, 178, 32]

D

C
C
R
UT.L


21
Chúng ta không thể sử dụng các words là đầu vào trực tiếp để
huấn luyện Mơ hình mà cần phải chuyển các words này thành dạng số
(như đã đề cập trong phần Word Embedding ở trên. Công việc này
được thực hiện bằng cách sử dụng 2 từ điển word2int và int2word.
Dưới đây là kết quả

C
C
R
UT.L


Với việc sử dụng từ điển word2int, ta có thể hiển thị các review
trong dataset từ dạng int sequence thành dạng text

D

The first review:
<START> this film was just brilliant casting location scenery
story direction everyone's really suited the part they played and you
could just imagine being there robert redford's is an amazing actor and
now the same being director norman's father came from the same
scottish island as myself so i loved the fact there was a real connection
with this film the witty remarks throughout the film were great it was
just brilliant so much that i bought the film as soon as it was released
for retail and would recommend it to everyone to watch and the fly
fishing was amazing really cried at the end it was so sad and you know
what they say if you cry at a film it must have been good and this
definitely was also congratulations to the two little boy's that played
the part's of norman and paul they were just brilliant children are often
left out of the praising list i think because the stars that play them all
grown up are such a big profile for the whole film but these children
are amazing and should be praised for what they have done don't you
think the whole story was so lovely because it was true and was
someone's life after all that was shared with us all
The label: 1


22
Ở đây ta đang sử dụng mơ hình CNN để huấn luyện nên trước
hết ta cần phải chuyển tất cả các reviews về cùng một độ dài để đảm
bảo các Input matrix có size như nhau. Kết quả hiển thị như sau:

The first row of training data (length: 2494):
[ 1 14 22 ... 0 0 0]
The second row of training data (length: 2494):
[ 1 194 1153 ... 0 0 0]
Tiếp theo ta tiến hành xây dựng một mơ hình huấn luyện với 2
Convolutional layers. Ở layer đầu tiên, ta sử dụng Embedding với 50
dimension để chuyển các từ sang dạng Word Embedding (xem thêm
tại bài tutorial Xây dựng mơ hình Text generation với RNN và Word
Embedding). Do đó Output Shape của layer này là (None, 2494, 50)
trong đó None chính là kích thước của batch_size (sẽ được thiết lập

C
C
R
UT.L

trong model.fit()), và 2494 là số lượng words có trong một sequence
cịn 50 là dimension của từng word embedding. Kết quả hiển thị mơ
hình

D

Model: "sequential"
__________________________________________________
Layer (type)
Output Shape
Param #
============================================
=
embedding (Embedding)

(None, 2494, 50)
4429400
__________________________________________________
conv1d (Conv1D)
(None, 2490, 128)
32128
__________________________________________________
max_pooling1d (MaxPooling1D) (None, 1245, 128)
0
__________________________________________________
conv1d_1 (Conv1D)
(None, 1243, 256)
98560
__________________________________________________
global_average_pooling1d (Gl (None, 256)
0
__________________________________________________
dense (Dense)
(None, 1)
257
============================================
=
Total params: 4,560,345
Trainable params: 4,560,345
Non-trainable params: 0
__________________________________________________


23
None

Kết quả của quá trình huấn luyện

Sau khi kết thúc quá trình huấn luyện, ta sử dụng test set để đánh
giá độ chính xác của mơ hình tạo ra như sau:

C
C
R
UT.L

D

Ta cũng có thể hiển thị biểu đồ về Training accuracy - độ
chính xác huấn luyện và Validation accuracy – độ chính xác xác thực
sử dụng history để đánh giá như sau:


×