You are on page 1of 49

KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI

ỨNG DỤNG DEEP LEARNING XÂY DỰNG ỨNG DỤNG TÓM


TẮT VĂN BẢN

Giảng viên hướng dẫn : ThS. NGUYỄN ĐỨC DƯ

Sinh viên thực hiện : NGUYỄN HỮU THẢO

Lớp : CNTT3

Mã sinh viên : 181210997

Hà Nội – 2022
TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI

ỨNG DỤNG DEEP LEARNING XÂY DỰNG ỨNG DỤNG TÓM


TẮT VĂN BẢN

Giảng viên hướng dẫn : ThS. NGUYỄN ĐỨC DƯ

Sinh viên thực hiện : NGUYỄN HỮU THẢO

Lớp : CNTT3

Mã sinh viên : 181210997

Hà Nội – 2022
1

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN


………………………………………………………………………………………………
………………………………………………………………………………………………
……..………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………
………………………………………………………………………………………………

Hà Nội, ngày…..tháng……2022
Giảng viên hướng dẫn
ThS. NGUYỄN ĐỨC DƯ
2

LỜI CẢM ƠN
Lời đầu tiên em xin gửi đến Thầy Nguyễn Đức Dư đã trực tiếp, tận tình chỉ bảo
hướng dẫn em trong suốt quá trình thực tập tốt nghiệp và làm đồ án tốt nghiệp.
Bên cạnh đó em xin gửi lời cảm ơn đến cô Lương Thái Lê – cố vẫn học tập của lớp
đã tạo điều kiện, giúp đỡ em trong suốt quá trình học tập trên giảng đường đại học.
Em xin chân thành gửi lời cảm ơn đến gia đình em, đặc biệt là mẹ đã luôn ủng hộ
những lựa chọn của em. Đồng thời em xin cảm ơn những ý kiến đóng góp bổ ích của thầy
cô, bạn bè để em hoàn thành đồ án tốt nghiệp này. Dù đã có nhiều cố gắng để hoàn thiện
nhưng đồ án tốt nghiệp của em không tránh khỏi những thiếu sót, em mong nhận được
những lời nhận xét và chia sẻ quý báu của thầy cô để đề tài được hoàn chỉnh hơn.
Em xin chân thành cảm ơn!

Hà Nội, tháng 06 năm 2022


Sinh viên
Nguyễn Hữu Thảo
3

MỞ ĐẦU
Ngày nay với sự phát triển vượt bậc của công nghệ trong những năm gần đây chúng
ta hàng ngày phải tiếp nhận một lượng lớn thông tin đến từ nhiều nguồn khác nhau. Từ
mạng xã hội, những bài báo, blog, email, tin nhắn, ... tất cả đều sinh ra một khối lượng dữ
liệu khổng lồ và dần nó trở nên cồng kềnh đối với các tài liệu văn bản dài dòng. Chính vì
vậy nhờ có trí tuệ nhân tạo ta có thể rút ngắn đi những đoạn văn bản dài dòng và tạo ra một
bản tóm tắt rõ ràng và mạch lạc để tiết kiệm thời gian mà vẫn giữ được những thông tin
quan trọng trong đó.
Thông thường chúng ta có hai phương pháp chủ yếu thường được sử dụng đó là
Tóm tắt trích chọn (extractive summarization) và Tóm tắt tóm lược (abstractive
summarization). Đầu tiên đối với tóm tắt trích chọn ta sẽ trích xuất các đoạn trích từ tài
liệu và tiến hành ghép lại để tạo thành đoạn văn bản tóm tắt. Đối với tóm tắt trìu tượng thì
ta sẽ tạo ra những câu văn mới từ những thông tin có được trong tài liệu từ đó tạo ra được
đoạn văn tóm lược. Hay nói cách khác tóm tắt trích chọn mục tiêu là xác định những thông
tin nổi bật, quan trọng và nhóm chúng với nhau để tạo thành đoạn văn tóm gọn. Còn tóm
tắt trìu tượng sẽ viết lại toàn bộ tài liệu bằng lời văn nổi bật ý nghĩa bên trong từ đó tạo ra
được đoạn văn bản tóm tắt [1]. Vì vậy để có thể thực hiện được tóm tắt trìu tượng ta cần
sử dụng kỹ thuật để có thể hiểu sâu được ngôn ngữ .
Trong thời gian gần đây AI hay Deep Learning luôn được nhắc đến nhiều từ báo đài
và các kênh truyền thông. AI đã giải quyết được nhiều bài toán trong cuộc sống và mạng
lại những hiệu quả rõ rệt như xe tự lái, nhận diện giọng nói, nhận diện khuôn mặt hay cũng
có thể kể đến là hệ thống chatbox hỗ trợ tra cứu cơ sở điều trị COVID 19 do Zalo cung cấp
[2]
Với những thành công của mạng nơ ron trong xử lý ngôn ngữ tự nhiên, em muốn
xây dựng một hệ thống sử dụng các mô hình trong Deep Learning vào bài toán tóm tắt văn
bản.
4

DANH MỤC HÌNH ẢNH


Hình 2.1. Phân loại các phương pháp đánh giá tóm tắt văn bản [5] [6] ............................ 13
Hình 2.2. Cơ chế Attention trong kiến trúc encoder- decoder [8] ..................................... 18
Hình 2.3. Mô hình transformers [8]................................................................................... 20
Hình 2.4. Mô hình T5 [9] .................................................................................................. 22
Hình 2.5. Pytorch ............................................................................................................... 22
Hình 2.6. Quá trình thực hiện của thuật toán Beam Search với (beam size: 2, chuỗi đầu ra
tối đa là 3). Những ứng viên đầu ra là A, C, AB, CE, ABD và CED [12] ........................ 24
Hình 2.7. Kiến trúc hệ điều hành Android [13] ................................................................. 26
Hình 2.8. FAST API [14] .................................................................................................. 29
Hình 2.9. Cấu hình phần cứng do Google Colab cung cấp ............................................... 30
Hình 3.1. Bộ dữ liệu huấn luyện crawl từ VnExpress ....................................................... 32
Hình 3.3. Bộ dữ liệu lấy từ các bài báo viesum.csv .......................................................... 33
Hình 3.3. So sánh độ dài văn bản ngắn nhất, dài nhất, trung bình của 2 tệp dữ liệu ........ 33
Hình 3.4. Cấu hình của mô hình dùng để huấn luyện ....................................................... 39
Hình 3.5. Ứng dụng tóm tắt văn bản bằng Android .......................................................... 43
5

DANH MỤC BẢNG BIỂU


Bảng 3.1. Tham số của lớp T5Tokenizer .......................................................................... 35
Bảng 3.2. Kết quả đạt được sau khi kiểm tra với tệp dữ liệu VnExpress.csv ................... 40
Bảng 3.3. Kết quả đạt được sau khi kiểm tra với tệp dữ liệu viesum.csv ......................... 40
6

DANH MỤC TỪ VIẾT TẮT


Từ viết tắt Ý nghĩa

AI Trí tuệ nhân tạo ( Artificial Intelligent )

TF-IDF Term Frequency-Inverse Document Frequency

NLP Xử lý ngôn ngữ tự nhiên (Natural Language Processing)

RNN Mạng nơ ron hồi quy (Recurrent Neural Network)

LSTM Mạng bộ nhớ dài ngắn (Long Short Term Memory)

ROUGE Recall-Oriented Understudy for Gisting Evaluation

LCS Longest common subsequence


7

MỤC LỤC
NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ................................ 1
LỜI CẢM ƠN .......................................................................................... 2
MỞ ĐẦU................................................................................................... 3
DANH MỤC HÌNH ẢNH ....................................................................... 4
DANH MỤC BẢNG BIỂU ..................................................................... 5
DANH MỤC TỪ VIẾT TẮT .................................................................. 6
CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI...................................................... 9
1.1. Lựa chọn và xác định phạm vi đề tài ........................................................................ 9
1.2. Lựa chọn đề tài nghiên cứu ...................................................................................... 9
1.3. Nội dung và phạm vi đề tài....................................................................................... 9
1.4. Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài ...................................................... 10
1.5. Kết quả dự kiến ....................................................................................................... 10
1.6. Tổng quan về tóm tắt văn bản ................................................................................ 10
1.7. Phân loại các hệ thống tóm tắt văn bản .................................................................. 10
1.7.1 Theo kết quả ..................................................................................................... 10
1.7.2 Theo mục đích hay chức năng tóm tắt.............................................................. 11
1.7.3 Theo nội dung ................................................................................................... 11
1.7.4 Theo miền dữ liệu ............................................................................................. 11
1.7.5 Theo mức độ chi tiết ......................................................................................... 11
1.7.6 Theo số lượng ................................................................................................... 11
1.7.7 Theo ngôn ngữ .................................................................................................. 12

CHƯƠNG 2. TỔNG QUAN VỀ CÔNG NGHỆ ................................ 13


8

2.1. Các phương pháp đánh giá tóm tắt văn bản ........................................................... 13
2.1.1 Đánh giá đồng chọn .......................................................................................... 13
2.1.2 Đánh giá dựa trên nội dung .............................................................................. 15
2.1.3 Đánh giá dựa trên tác vụ ................................................................................... 17
2.2. Lịch sử .................................................................................................................... 17
2.3. Mô hình Transformers ............................................................................................ 18
2.4. Mô hình T5 ............................................................................................................. 21
2.5. PyTorch .................................................................................................................. 22
2.6. Thư viện SentencePiece.......................................................................................... 23
2.7. Thuật toán tìm kiếm Beam Search ......................................................................... 24
2.8. Giới thiệu về Android ............................................................................................. 26
2.9. FAST API ............................................................................................................... 29
2.10. Google Colab ........................................................................................................ 29

CHƯƠNG 3. XÂY DỰNG MÔ HÌNH TÓM TẮT VĂN BẢN ......... 31


3.1. Xây dựng từ điển ngôn ngữ .................................................................................... 31
3.2. Cách xây dựng từ điển ngôn ngữ ............................................................................ 31
3.2.1 Xây dựng từ điển bằng SentencePiece. ............................................................ 31
3.2.2 Kết quả .............................................................................................................. 32
3.3. Xây dựng tệp dữ liệu huấn luyện............................................................................ 32
3.4. Xây dựng ứng dụng ................................................................................................ 42

KẾT LUẬN ............................................................................................ 44


TÀI LIỆU THAM KHẨO .................................................................... 45
9

CHƯƠNG 1. GIỚI THIỆU ĐỀ TÀI


1.1. Lựa chọn và xác định phạm vi đề tài
1.2. Lựa chọn đề tài nghiên cứu
Trong một thời đại công nghệ phát triển mà mỗi ngày, mỗi giờ, mỗi phút đều có một lượng
thông tin khổng lồ được sinh ra, nhưng giới hạn về thời gian, về khả năng đọc và tiếp thu
của con người là có hạn, việc hiểu và nắm bắt thật nhiều thông tin một cách nhanh chóng
không phải là vấn đề đơn giản với bất kỳ ai. Sau khi tìm hiểu kĩ lưỡng em quyết định lựa
chọn “Ứng dụng Deep Learning xây dựng ứng dụng tóm tắt văn bản” làm đồ án tốt nghiệp
với những lý do sau:
- Đề tài là sự tích lũy kiến thức em học được từ trong suốt thời gian em học tập
được từ các kỳ học trước như: Thuật toán và ứng dụng, Lập trình Android, phân
tích thiết kế hệ thống, …
- Dự án với mục tiêu sử dụng mô hình kiến trúc T5 (một kiến trúc dựa trên máy
biến áp sử dụng cách tiếp cận text-to-text ) có thể linh hoạt xử lý nhiều bài toán
như: phiên dịch (translation), hỏi và trả lời (question answering), classification
(phân loại), summarization (tóm tắt văn bản), ....

1.3. Nội dung và phạm vi đề tài


* Nội dung:
- Tìm hiểu mô hình T5
- Xây dựng tập dữ liệu
- Tìm hiểu Transformers
- Tìm hiểu cách xây dựng mạng nơ ron
- Tìm hiểu cách xây dựng ứng dụng Android
* Phạm vi:
- Tóm tắt văn bản sử dụng ngôn ngữ Tiếng Việt
10

1.4. Ý nghĩa lý luận và ý nghĩa thực tiễn của đề tài
- Đề tài đóng góp vai trò quan trọng trong việc nâng cao kiến thức và dần tiếp cận tới
việc xây dựng một ứng dụng thực tế cao, giúp ginh viên có thêm những kiến thức,
kinh nghiệm, trải nghiệm trong lĩnh vực AI
- Nâng cao khả năng tự học
- Nâng cao khả năng làm việc độc lập
- Củng cố và nâng cao, tiếp thu kiến thức mới, công nghệ mới

1.5. Kết quả dự kiến


- Xây dựng được ứng dụng trên nền tảng Android có thể tóm tắt được văn bản bằng
tiếng việt

1.6. Tổng quan về tóm tắt văn bản


Bài toán về tóm tắt văn bản sử dụng NLP được lần đầu nhắc đến vào năm 1958. Ban
đầu các phương pháp được sử dụng là thống kê rồi tính điểm các câu trong đoạn văn rồi
sau đó chọn những câu đạt điểm cao nhất. Có rất nhiều các kĩ thuật đã được thực hiện để
tính toán điểm số này như là TF-IDF [3], Bayesian models [4], … .Mặc dù tất cả các kĩ
thuật này có thể tóm tắt văn bản bằng cách trích xuất cụm từ khóa nhưng tất cả chúng đều
chỉ là trích xuất câu văn từ văn bản gốc và lược bớt câu văn từ văn bản gốc.

1.7. Phân loại các hệ thống tóm tắt văn bản
Như đã trình bày ở trên, các tham số khác nhau đều có thể ảnh hưởng đến kết quả tóm tắt
văn bản. Do vậy em sẽ phân các hệ thống tóm tắt văn bản theo các hướng sau: [5]

1.7.1 Theo kết quả


- Tóm tắt trích rút (Extract): là một bản tóm tắt bao gồm các đơn vị văn bản quan
trọng như câu, đoạn, từ, … được trích rut từ văn bản gốc
- Tóm tắt tóm lược (Abstract): tóm tắt gần giống như con người thực hiện yêu cầu
hệ thống phải hiểu sâu được văn bản đầu vào và sau đó tạo văn bản tóm tắt chứa
các nội dung không được thể hiện trong văn bản gốc.
11

1.7.2 Theo mục đích hay chức năng tóm tắt


- Tóm tắt chỉ thị (Indicative): tóm tắt nhằm cung cấp một chức năng tham khảo để
chọn tài liệu đọc chi tiết hơn
- Tóm tắt thông tin (Information): tóm tắt bao gồm tất cả các thông tin nổi bật của
văn bản gốc ở nhiều mức độ chi tiết khác nhau
- Tóm tắt đánh giá (Evaluation): tóm tắt nhằm mục đích đánh giá vấn đề chính của
văn bản gốc theo quan điểm của người đánh giá

1.7.3 Theo nội dung


- Tóm tắt chung (Generalized): tóm tắt nhằm mục đính đưa ra các nội dung quan
trọng phản ánh toàn bộ văn bản gốc.
- Tóm tắt hướng truy vấn (Query-based): tóm tắt nhằm mục đích đưa ra kết quả dựa
vào câu truy vấn của người. Tóm tắt này thường được sử dụng trong quá trình tìm
kiếm thông tin (information retreival).

1.7.4 Theo miền dữ liệu


- Tóm tắt trên 1 miền dữ liệu (Domain) : tóm tắt nhắm vào một miền nội dung nào
đó, như tin tức khủng bố, tin tức tài chính…
- Tóm tắt trên 1 thể loại (Genre) : tóm tắt nhắm vào một thể loại văn bản nào đó,
như báo chí, email, web, bài báo…
- Tóm tắt độc lập (Independent) : tóm tắt cho nhiều thể loại và nhiều miền dữ liệu.

1.7.5 Theo mức độ chi tiết


- Tóm tắt tổng quan (overview) : tóm tắt miêu tả tổng quan tất cả các nội dung nổi
bật trong văn bản nguồn.
- Tóm tắt tập trung sự kiện (event) : tóm tắt miêu tả một sự kiện cụ thể nào đó trong
văn bản nguồn.

1.7.6 Theo số lượng


- Tóm tắt đơn văn bản: nếu một bản tóm tắt được tạo thành từ một văn bản riêng lẻ
thì gọi là tóm tắt đơn văn bản
- Tóm tắt đa văn bản: Nếu một bản tóm tắt được tạo thành từ nhiều văn bản liên
quan tới một chủ đề riêng lẻ thì gọi là tóm tắt đa văn bản
12

1.7.7 Theo ngôn ngữ


- Tóm tắt đơn ngôn ngữ: Văn bản nguồn chỉ có một loại ngôn ngữ. Kết quả là văn
bản ngôn ngữ đó
- Tóm tắt đa ngôn ngữ: Mỗi văn bản nguồn chỉ có một loại ngôn ngữ. Nhưng ứng
dụng có khả năng tóm tắt trên nhiều loại ngôn ngữ.
- Tóm tắt xuyên ngôn ngữ (cross-language): Trong văn bản nguồn chứ hai hay nhiều
ngôn ngữ khác nhau, hệ thông có thể tùy vào từng đơn vị dữ liệu mà nhận dạng và
tóm tắt cho phù hợp.
13

CHƯƠNG 2. TỔNG QUAN VỀ CÔNG NGHỆ


Ở chương 1 em đã nêu qua về các khái niệm cơ bản của tóm tắt văn bản đến chương
2 em sẽ tiếp tục giới thiệu về các phương pháp đánh giá, công nghệ sẽ sử dụng trong đề
tài.

2.1. Các phương pháp đánh giá tóm tắt văn bản
Các phương pháp đánh giá được chia thành 4 loại

Các phương pháp đánh giá

Đánh giá đồng Đánh giá dựa trên Đánh giá dựa trên
Đánh giá thủ công
chọn nội dung tác vụ

Cosine Phân loại


Ngữ pháp Precision
similarity văn bản

Unit Phục hồi


Không dư thừa Recall
overlap thông tin

Tham chiếu chủ Trả lời câu


F-score ROUGE
đề hỏi

Sự gắn kết

Hình 2.1. Phân loại các phương pháp đánh giá tóm tắt văn bản [5] [6]
Cách đánh giá này sẽ được thực hiện bằng cách để các nhà ngôn ngữ học thẩm định
các bài tóm tắt về ngữ pháp, sự dư thừa, sự gắn kết giữa câu văn, cho điểm bài tóm tắt do
hệ thống sinh ra. Tuy nhiên phương pháp có một số hạn chế do con người thực hiện đánh
giá không ổn định, phương pháp này khiến tiêu tốn nhiều thời gian và tiền bạc.

2.1.1 Đánh giá đồng chọn


Phương pháp đánh giá dựa trên đồng chọn chỉ có thể áp dụng với các văn bản tóm
tắt theo hướng trích rút câu. Các câu được trích chọn kết nối với nhau tạo nên văn bản tóm
tắt, không cần chỉnh sửa gì thêm.
14

(*) Độ đo chính xác precision là tỉ số giữa số lượng các câu trong cả hệ thống và con
người trích rút trên số các câu được hệ thống trích rút.
|𝑆𝐻 ⋂ 𝑆𝑀 |
𝑃𝑟𝑒𝑐𝑖𝑠𝑖𝑜𝑛 =
|𝑆𝑀|
Trong đó
|SM | : là số lượng câu của bản tóm tắt do hệ thống trích rút
|SH| là số lượng câu của bản tóm tắt do con người trích rút
|𝑆𝐻 ⋂ 𝑆𝑀 | là số lượng câu được cả hệ thống và con người trích rút

(*) Độ đo triệu hồi (recall) là tỉ số giữa số lượng các câu được trích rút bởi hệ thống
trùng với số câu mà con người trích rút trên số các câu chỉ được lựa chọn bởi con người

Trong đó:
|SM | : là số lượng câu của bản tóm tắt do hệ thống trích rút
|SH| là số lượng câu của bản tóm tắt do con người trích rút
|𝑆𝐻 ⋂ 𝑆𝑀 | là số lượng câu được cả hệ thống và con người trích rút
(*) Độ đo f-score là một độ đo kết hợp hai đại lượng precision và recall. Theo truyền
thông thì f-score được định nghĩa là trung bình hàm điều hoa của precision và recall. Các
giá trị f-score nhận giá trị trong đoạn [0, 1] trong đó giá trị tốt nhất là 1
15

2.1.2 Đánh giá dựa trên nội dung


Trong phương pháp đánh giá dựa trên nội dung bản tóm tắt cảu hệ thống được so sánh với
bản tóm tắt lý tưởng bằng cách sử dụng đơn vị so sánh là từ vựng. Nếu dùng phương pháp
này ta có thể so sánh các bản tóm tắt được trích rút với các bản tóm tắt lý tưởng ngay cả
khi chúng không trùng nhau câu nào. Với các đánh giá dựa trên nội dung ta sử dụng các
độ đo như tính tương tự cosine, chuỗi con chung dài nhất LCS và các chỉ số ROUGE.
Phương pháp dựa trên nội dung được đánh giá là tốt hơn phương pháp dựa trên đồng chọn
vì nó có thể đánh giá 2 câu khác nhau nhưng có cùng nội dung thông tin

(*) Độ tương tự cosine: Trong NLP, công thức tính toán cosine được sử dụng để đo mức
độ tương tự giữa hai câu hoặc hai văn bản . Công thức tính độ cosine được mô tả như sau:

Trong đó:

A = {𝑊1𝐴 , … 𝑊𝑛𝐴 } là vector thuộc tính cả bản tóm tắt hệ thống với wiA là trọng số
của từ thứ i trong bản tóm tắt hệ thống.

B = {𝑊1𝐵 , … , 𝑊𝑛𝐵 } là vector thuộc tính của bản tóm tắt lý tưởng với wiB là trọng số
của từ thứ I trong bản tóm tắt lý tưởng.
(*) Đánh giá dựa trên LCS: LCS tìm ra độ dài của chuỗi con chung dài nhất giữa văn bản
X và Y, độ dài của chuỗi con chung dài nhất càng lớn thì 2 văn bản X, Y càng giống nhau

trong đó:
- length(X) là độ dài của chuỗi X
- length(Y) là độ dài của chuỗi Y
16

- ⅇdⅈt ⅆi (X, Y) là khoảng các biên tập giữa X và Y (là số lượng tối thiểu của việc xóa
và chén thêm cần thiết để biến đổi X thành Y)
(*) Đánh giá BLEU : ý tưởng chính của BLEU là đánh giá độ tương tự giữa một bản tóm
tắt được sinh ra bởi hệ thống và tập các bản tóm tắt lý tưởng dựa vào trung bình có trọng
số của các n-gram trong bản tóm tắt hệ thống và trong tập các bản tóm tắt lý tưởng .
BLEU được tính dựa trên công thức

Trong đó

- 𝐶𝑜𝑢𝑛𝑡𝑐𝑙𝑖𝑝 (𝑛 − 𝑔𝑟𝑎𝑚) là số n-gram xuất hiện lớn nhất trong bản tóm tắt hệ thống
và bản tóm tắt lý tưởng
- Count(𝑛 − 𝑔𝑟𝑎𝑚) là số n-gram trong bản tóm tắt hệ thống
(*) Đánh giá theo độ ROUGE:
Các phương pháp đánh giá tóm tắt truyền thống thường gắn với đánh giá thủ công
do chuyên gia con người thực hiện qua một số độ đo khác nhau chẳng hạn: mức độ súc
tích, tính mạch lạc, ngữ pháp, tính dễ đọc và nội dung. Tuy nhiên phương pháp đánh giá
kết quả tóm tắt thủ công mất quá nhiều công sức và chi phí. Vì thế đánh giá tóm tắt tự động
là một giải pháp cần có. Chính vì vậy Lin và Hovy đã đề xuất một phương pháp đánh giá
mới gọi là ROUGE (Recall-Oriented Understudy for Gisting Evaluation), hiện nay phương
pháp đo này được sử dụng như một phương pháp chuẩn đánh giá kết quả tóm tắt tự động
cho văn bản tiếng Anh. Một hình thức khác ROUGE-N là một độ đo đối với các n-gram
trong văn bản tóm tắt hệ thống và trong tập các văn bản tóm tắt lý tưởng được tính theo
công thức
17

Trong đó
- S là bản tóm tắt do hệ thống sinh ra
- RSS là tập văn bản tóm tắt lý tưởng
- 𝐶𝑜𝑢𝑛𝑡𝑚𝑎𝑡𝑐ℎ (𝑛 − 𝑔𝑟𝑎𝑚) là số lượng n-gram đồng xuất hiện lớn nhất giữa văn bản
tóm tắt hệ thống và tập văn bản tóm tắt lý tưởng
- 𝐶𝑜𝑢𝑛𝑡 (𝑛 − 𝑔𝑟𝑎𝑚) là số lượng n-gram trong văn bản tóm tắt lý tưởng

2.1.3 Đánh giá dựa trên tác vụ


Phương pháp cuối cùng là đánh giá dựa trên tác vụ. Trong phương pháp đánh giá
này, các bản tóm tắt được tạo ra với mục đích là so sanh dựa trên hiệu năng của tác vụ có
thẻ dùng các phương pháp khác nhau để đánh giá hiệu năng của hệ thống tóm tắt. Một số
phương pháp trong cac phương pháp này là phục hồi thông tin, trả lời câu hỏi và các phương
pháp phân cụm văn bản.

2.2. Lịch sử


Trước hết ta cần hiểu ngắn gọn mọi văn bản hoặc câu có thể coi là một dữ liệu tuần
tự vì thứ tự sắp xếp của mỗi từ trong câu là rất quan trọng trong việc hình thành và giải
thích ngôn ngữ tự nhiên. Chính vì vậy trong hầu hết những bài toán về NLP việc xử lý dữ
liệu tuần tự là rất quan trọng. Vậy nên các kiến trúc mô hình cần phải lưu giữ lại thông tin
của các từ trong câu văn.
Một biến thể khác của RNN là mạng LSTM. LSTM [7] khác với RNN là có thể lưu
trữ được các dữ liệu tuần tự nhờ vào sự liên kết giữa các node bằng cách giữ các thông tin
liên quan và quên đi những thông tin không quan trọng giúp tối ưu đáng kể trong bài toán
tóm tắt văn bản. Phương pháp luận này của mạng LSTM [7] đã được tối ưu và phát triển
để xây dựng mô hình bộ mã hóa giải mã. Các mô hình Seq2seq được triển khai với sự trợ
giúp của bộ mã hóa và giải mã đang mang đến kết quả tuyệt vời những vẫn tồn đọng vấn
đề về song song hóa. Mặc dù thông tin tuần tự đã được lưu giữ thông qua bộ mã hóa và
giải mã nhưng hiện tại mô hình chỉ có thể lấy một dữ liệu đầu vào tại một thời điểm ví dụ
như LSTM chỉ nhận một dữ liệu đầu vào tại một thời điểm. Thế nhưng mô hình vẫn còn
nhiều khuyết điểm.
18

Từ đó dẫn đến sự bổ sung của lớp Attention. Từ Hình 1 một lớp attention trong mô
hình encoder decoder phân tích các dữ liệu trình tự ở mỗi bược và dự vào thông tin ở trình
tự trước đố để chỉ định trọng số. Lớp Attention tạo ra một ma trận vector bằng cách xem
xét mọi từ trong câu trong một dữ liệu đầu vào thay vì các chuỗi riêng biệt dưới dạng đầu
vào riêng biệt. Cơ chế này mang đến hiệu quả tuyệt vời và dần được trở nên phổ biến.

Hình 2.2. Cơ chế Attention trong kiến trúc encoder- decoder [8]

2.3. Mô hình Transformers


Mô hình Transformers [8] đơn giản dựa trên sử dụng nhiều lớp attention. Mô hình không
sử dụng RNN mà mô hình được dựa trên các lớp attention (attention layer) và mã hóa vị
trí (postion encoding) để ghi nhớ chuỗi văn bản trong dữ liệu đầu vào. Nhờ có sự hỗ trợ
của nhiều lớp attention nên mô hình có thể xử lý song song dữ liệu đầu vào.
Mô hình Transformers [8] chứa các lớp mã hóa và giải mã trong đố mỗi lớp điwọc
kết nối với nhau bởi lớp chú ý nhiều đầu (multi-head attention layer) và các lớp mạng
chuyển tiếp (feed forwad network layers). Mô hình tiến hành ghi nhớ vị trí, trình tự các từ
với sự trợ giúp của các hàm cosine và sine để tạo ra mã hóa vị trí (position encoding). Lớp
chú ý nhiều đầu trong lớp mã hóa và giải mã áp dụng một cơ chế gọi là self-attention. Dữ
liệu đầu vào được đưa vào ba lớp được kết nối để tạo ra query (Q), key (K) và value
vectors (V).
19

𝑄𝐾 𝑇
𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛 = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 ( )𝑉
√𝑑𝐾

Self-attention được áp dụng trên n vector riêng biệt để tạo ra multi-head attention.

𝑀𝑢𝑙𝑡𝑖𝐻𝑒𝑎𝑑 (𝑄, 𝐾, 𝑉 ) = 𝐶𝑜𝑛𝑐𝑎𝑡(ℎ𝑒𝑎𝑑1 , ℎ𝑒𝑎𝑑2 , … , ℎ𝑒𝑎𝑑𝑛 )𝑊 0


Với mỗi
𝑄
ℎ𝑒𝑎𝑑𝑖 = 𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛(𝑄𝑊𝑖 , 𝐾𝑊𝑖𝐾 , 𝑉𝑊𝑖𝑉 )
𝑄
𝑊𝑖 ∈ 𝑅 𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑘 , 𝑊𝑖𝐾 ∈ 𝑅 𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑘 , 𝑊𝑖𝑉 ∈ 𝑅 𝑑𝑚𝑜𝑑𝑒𝑙 × 𝑑𝑘 , 𝑊 0
∈ 𝑅ℎ𝑑𝑉 × 𝑑𝑚𝑜𝑑𝑒𝑙 ,
20

Hình 2.3. Mô hình transformers [8]


Self-Attention là cơ chế giúp encoder nhìn vào các từ khác trong lúc mã hóa một từ
cụ thể, vì vậy, Transformers có thể hiểu được sự liên quan giữa các từ trong một câu, kể cả
khi chúng có khoảng cách xa. Các decoder cũng có kiến trúc giống như vậy nhưng giữa
chúng có một lớp attention để nó có thể tập trung vào các phần liên quan của đầu vào.
Self-Attention có 4 bước:
21

1. Tạo ra bộ 3 vectơ từ các vectơ đầu vào của encoder. Tại encoder đầu tiên, véctơ đầu
vào là word embedding của từ. Như vậy với mỗi từ, ta sẽ có 3 vectơ Query, Key và
Value. Các vectơ này được tạo nên bởi phép nhân ma trận giữa véctơ đầu vào và 3
ma trận trọng số tương ứng với query, key, value mà chúng ta sử dụng trong quá
trình huấn luyện. 3 vectơ này đóng vai trò khác nhau và đều quan trọng đối với
attention.
2. Tính điểm. Với mỗi từ, ta cần tính điểm của các từ khác trong câu đối với từ này.
Giá trị này giúp quyết định từ nào cần được chú ý và chú ý bao nhiêu khi mã hóa
một từ. Điểm được tính bằng tích vô hướng giữa véctơ Query của từ đang xét với
lần lượt các vectơ Key của các từ trong câu. Ví dụ, khi ta tính self-attention trên từ
có vị trí 1, điểm của nó với chính nó là q1.k1, điểm của nó với từ thứ hai là q1.k2,
v..v..
3. Chuẩn hóa điểm. Trong bài báo gốc, điểm được chia cho 8 (căn bậc 2 của 64 – số
chiều của vectơ Key). Điều này giúp cho độ dốc trở nên ổn định hơn. Tiếp theo, giá
trị này được truyền qua hàm softmax để đảm bảo các giá trị điểm đều dương và có
tổng không vượt quá 1.
4. Nhân vectơ Value với mỗi giá trị điểm đã tính phía trên rồi cộng lại với nhau. Ý đồ
của việc này là bảo toàn giá trị vectơ của các từ cần được chú ý và loại bỏ vectơ của
các từ không liên quan (bằng cách nhân nó với một số rất nhỏ, ví dụ như 0.001).

2.4. Mô hình T5
T5 là viết tắt cho cụm “Text-to-Text Transfer Transformer”. Mô hình T5 [9] là dựa
trên ý tưởng Transfer Learning. Mô hình được huấn luyện trên một tệp dữ liệu lớn bằng
Transfer learning trước khi được tinh chỉnh cho từng bài toán khác nhau. Nhờ đó mà mô
hình học được các kỹ năng, thông tin có mục đích chung để áp dụng cho các nhiệm vụ khác
nhau như phiên dịch, trả lời câu hỏi, tóm tắt văn bản….
T5 sử dụng phương pháp sequence-to-sequence để cung cấp đầu vào đã được mã
hóa thông quaa cross-attention layers đến bộ giải mã và tạo tự động đầu ra của bộ giải mã.
22

Hình 2.4. Mô hình T5 [9]

2.5. PyTorch

Hình 2.5. Pytorch


Pytorch chính là một framework hỗ trợ Deep Learning được phát triển bởi Facebook. (Bên
cạnh Amazon, Google hay Apple, Facebook được biết đến là đơn vị công nghệ đầu tư rất
nhiều nguồn lực cho việc phát triển trí tuệ nhân tạo).
23

Phát triển Pytorch với mã nguồn mở Facebook đã tạo được một cộng đồng chia sẻ rất lớn.
Với nguồn tài nguyên rộng lớn trên cộng đồng này các vấn đề mà bạn đang mắc phải có
thể đã có ai đó giải quyết và được chia sẻ lên cộng đồng, hãy dành một chút thời gian để
tìm kiếm.
Việc nhiều người sử dụng Pytorch cũng như Tensorflow hay Keras để giải quyết các bài
toán về Deep Learning, đã làm chúng trở thành những framework phổ biến nhất hiện nay.
Đặc biệt phải kể đến lĩnh vực nghiên cứu, các nhà phát triển hay tác giả hầu như ưu tiên sử
dụng Pytorch giúp triển khai các bài toán của mình bởi Pytorch dễ dàng giúp chúng bạn
debug và Visuallize cùng với đó là cơ chế Dynamic Graphs cho phép giảm thời gian huấn
luyện mô hình.
(*) Lợi ích khi sử dụng PyTorch
 Mã nguồn mở: như đã chia sẻ ở trên, nhờ sử dụng mã nguồn mở đã tạo nên một
cộng đồng rất lớn với nguồn tài nguyên “chất lượng” và “số lượng”.
 Khả năng xử lý đồ họa: như Numpy đồng thời có kiểm soát CPU & GPU rõ
ràng.
 Tập hợp nhiều Pythonic trong tự nhiên.
 Dễ dàng xử lý khi gặp bug.
 Có TouchScript được xem là một tập hợp con của Python. Tập hợp này giúp triển
khai các ứng dụng vào quy mô sản xuất từ đó mở rộng quy mô. Đồng thời khi nói
đến việc xây dựng các nguyên mẫu với tốc độ nhanh, sử dụng Pytorch được ưu
tiên hơn so với Tensorflow vì nó nhẹ hơn.
 Các hàm, cú pháp cơ bản trong Pytorch giúp xử lí các bài toán về AI nhanh
chóng.

2.6. Thư viện SentencePiece


SentencePiece [10] là một công cụ tách văn bản không được giám sát chủ ý dành
cho các hệ thống tạo văn bản dựa trên Mạng Nơ ron trong đó kích thước từ vựng được xác
định trước khi đào tạo mô hình mạng.
(*) Tại sao lại sử dụng SentencePiece
24

SentencePiece là một cách triển khai lại của các đơn vị từ phụ, đây là một cách hiệu
quả để giảm bớt các vấn đề về từ vựng mở trong quá trình dịch máy thần kinh.
SentencePiece hỗ trợ hai thuật toán phân đoạn là mã hóa cặp (BPE) [11] và mô hình ngôn
ngữ unigram. Dưới đây là những điểm nổi bật của SentencePiece
 Số lượng token được định nghĩa trước
 Huấn luyện từ câu thô
 Khoảng trắng được tính như một biểu tượng cơ bản
 Quy định hóa từ khóa con và BPE

2.7. Thuật toán tìm kiếm Beam Search


Thuật toán tìm kiếm Beam search [12] là một phiên bản cải tiến của giải thuật tìm
kiếm tham lam. Giải thuật bao gồm siêu thông số gọi là số lượng chùm (beam size). Tại
bước đầu tiên, ta sẽ tiến hành chọn các token có xác xuất điều kiện cao nhất. Mỗi một token
sẽ là token đầu tiên của của chuỗi đầu ra. Ở mỗi bước tiếp theo, dựa trên trình tự những
ứng viên đầu ra tại bước trước đó ta sẽ tiếp tục chọn trình tự ứng viên có xác xuất điều kiện
cao nhất từ các lựa chọn có thể. [12]

Hình 2.6. Quá trình thực hiện của thuật toán Beam Search với (beam size: 2, chuỗi đầu ra
tối đa là 3). Những ứng viên đầu ra là A, C, AB, CE, ABD và CED [12]
Minh họa giải thuật Beam search cho Hình 2.5:
25

Giả sử bộ từ vựng của chuỗi đầu ra chỉ chứa năm từ: Y={A, B, C, D, E}Y={A, B, C, D,
E} và một trong số chúng là ký hiệu đặc biệt “<eos>”. Đặt kích thước chùm bằng 2 và độ
dài tối đa của chuỗi đầu ra bằng 3. Tại bước thời gian 1 của chuỗi đầu ra, giả sử các từ có
xác suất có điều kiện P(y1∣c)P(y1∣c) cao nhất là AA và CC. Tại bước thời gian 2, với
mọi y2∈Y, y2∈Y, ta tính

P(A, y2∣c)=P(A∣c)P(y2∣A, c)

P(C, y2∣c)=P(C∣c)P(y2∣C, c),


và chọn hai giá trị cao nhất trong 10 giá trị này, giả sử đó là:

P(A, B∣c) và P(C, E∣c).

Sau đó, tại bước thời gian 3, với mọi y3∈Yy3∈Y, ta tính:

P(A, B, y3∣c)=P(A, B∣c)P(y3∣A, B, c)


P(C, E, y3∣c)=P(C, E∣c)P(y3∣C, E, c),


và chọn hai giá trị cao nhất trong số 10 giá trị này, giả sử đó là

P(A, B, D∣c) và P(C, E, D∣c).

Kết quả là, ta thu được 6 chuỗi đầu ra ứng viên: (1) AA; (2) CC; (3) AA, BB; (4) CC, EE; (5) AA,
BB, DD; và (6) CC, EE, DD. Cuối cùng, ta sẽ có một tập chuỗi đầu ra ứng viên cuối cùng
dựa trên 6 chuỗi này.
Trong tập các chuỗi đầu ra ứng viên cuối cùng, ta sẽ lấy chuỗi có điểm số cao nhất làm
chuỗi đầu ra. Điểm số cho mỗi chuỗi được tính như sau:

Ở đây, LL là độ dài của chuỗi ứng viên cuối cùng và αα thường được đặt bằng 0.75. 𝐿𝛼
trong mẫu số là lượng phạt lên tổng logarit cho các chuỗi dài. Có thể ước tính rằng chi phí
26

tính toán của tìm kiếm chùm là O(k|Y|T′). Nó nằm trong khoảng giữa chi phí tính toán
của tìm kiếm tham lam và tìm kiếm vét cạn. Ngoài ra, tìm kiếm tham lam có thể được coi
là tìm kiếm chùm với kích thước chùm bằng 1. Tìm kiếm chùm tạo ra sự cân bằng giữa chi
phí tính toán và chất lượng tìm kiếm bằng cách sử dụng linh hoạt kích thước chùm k.

2.8. Giới thiệu về Android


Android [13] là hệ điều hành điện thoại di động mở nguồn mở miễn phí do Google
phát triển dựa trên nền tảng của Linux. Bất kỳ một hãng sản xuất phần cứng nào cũng đều
có thể tự do sử dụng hệ điều hành Android cho thiết bị của mình, miễn là các thiết bị ấy
đáp ứng được các tiêu chuẩn cơ bản do Google đặt ra. Hề điều hành Android là một ngắn
xếp các thành phần phần mềm, và được chia thành các phần chính như sau:

Hình 2.7. Kiến trúc hệ điều hành Android [13]


 Linux Kernal
27

Dưới cùng là lớp Linux - Linux 3.6 cùng với khoảng 115 bản vá. Lớp này cung cấp 1 cấp
độ trừu tượng giữa phần cứng của thiết bị và các thành trình điều khiển phần cứng thiết
yếu như máy ảnh, bàn phím, màn hình hiển thị... Đồng thời, hạt nhân (kernel) còn xử lý tất
cả các thứ mà Linux có thể làm tốt như mạng kết nối và 1 chuỗi các trình điều khiển thiết
bị, giúp cho giao tiếp với các thiết bị ngoại vi dễ dàng hơn.

 Các Thư viện


Ở trên lớp nhân Linux là tập các thư viện bao gồm WebKit - trình duyệt Web mã nguồn
mở, được biết đến như thư viện libc, cơ sở dữ liệu SQLite - hữu dụng cho việc lưu trữ và
chia sẻ dữ liệu ứng dụng, các thư viênj chơi và ghi âm audio, video, hay các thư viện SSL
chiụ trách nhiệm bảo mật Internet...

 Các thư viện Android


o Đây là các thư viện dựa trên Java phục vụ cho việc phát triển Android. Ví dụ của
các thư viện này bao gồm các thư viện ứng dụng dùng để xây dựng giao diện
người dùng, vẽ đồ họa hay truy cập cơ sở dữ liệu. 1 số thư viện chính của
Android:
o android.app - Cung cấp quyền truy cập vào ứng dụng và là nền tảng của tất cả
ứng dụng Android.
o android.content - Cung cấp quyền truy cập nội dung (content), truyền tải thông
điệp giữa các ứng dụng hay các thành phần của ứng dụng.
o android.database - Đựoc sử dụng để truy cập dữ liệu của content provider và cơ
sở dữ liệu SQLite
o android.opengl - giao diện các phuơng thức Java để sử dụng OpenGL ES
o android.os - Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ của hệ
điều hành bao gồm thông điệp, các dịch vụ hệ thống và các giao tiếp nội tại
o android.text - Đựoc sử dụng để hiển thị và điều chỉnh chữ trên màn hình thiết bị
o android.view - Các thành phần cơ bản trong việc xây dựng giao diện người dùng
của ứng dụng.
o android.widget - Tập các thành phần giao diện người dùng đã được xây dựng
sẵn như các nút, các nhãn (label), list view, ....
o android.webkit - Tập các lớp cho phép xây dựng khả năng duyệt web.
 Android Runtime
28

Đây là phần thứ 3 của kiến trúc và nằm ở lớp thứ 2 từ dưới lên. Phần này cung cấp 1
bộ phận quan trọng là Dalvik Vỉtual Machine - là 1 loại Java Virtual Machine được thiết
kế đặc biệt để tối ưu cho Android.
Dalvik VM sử dụng các đặc trưng của nhân Linux như quản lý bộ nhớ và đa luồng,
những thứ mà đã có sẵn trong Java. Dalvik VM giúp mọ ứng dụng Android chạy trong tiến
trình riêng của nó, với các thể hiện (instance) riêng của Dalvik virtual Machine.
Android Runtime cũng cung cấp 1 tập các thư viện chính giúp các nhà phát triển ứng dụng
Android có thể viết ứng dụng Android bằng Java

 Application Framework
1. Lớp Android Framework cung cấp các dịch vụ cấp độ cao hơn cho các ứng dụng
dưới dạng các lớp Java. Các nhà phát triển ứng dụng được phép sử dụng các dịch
vụ này trong ứng dụng của họ.
2. Android Framework bao gồm các dịch vụ chính sau:
3. Activitty Manager - Kiểm soát tất cả khía cạnh của vòng đời ứng dụng và ngăn xếp
các Activity.
4. Content Providers - Cho phép các ứng dụng chia sẽ dữ liệu với các ứng dụng khác.
5. Resource Manager - Cung cấp quyền truy cập vào các tài nguyên như các chuỗi,
màu sắc, các layout giao diện người dùng...
6. Notifications Manager - Cho phép các ứng dụng hiển thị cảnh báo và các thông báo
cho người dùng.
7. View System - Tập các thành phần giao diện (view) được sử dụng để tạo giao diện
người dùng.
 Application
Lớp trên cùng của kiến trúc là Application. Các ứng dụng bạn tạo ra sẽ được cài đặt trên
lớp này. Ví dụ như: Danh bạ, nhắn tin, trò chơi...
29

2.9. FAST API

Hình 2.8. FAST API [14]


Để ứng dụng có thể tương tác được với mô hình sau khi được huấn luyện thì em cần chuẩn
bị một dịch vụ để ứng dụng có thể gọi đến bằng API và tương tác với model. Sau khi chọn
lựa kĩ lưỡng em quyết định sẽ sử dụng FAST API của python với những lý do sau:
- Fast: FAST API có hiệu suất rất cao, tương tác được với NodeJs và Go
- Fast to code: dễ dàng tạo được API với 1 vài dòng code, giúp tăng tốc độ phát
triển dự án lên 200% - 300%
- Fewer bug: Hạn chế tối đa rủi ro xảy ra lỗi
- Intuitive: Được có nhiêu sự hỗ trợ, ít thời gian debug hơn
- Easy: Được thiết kế để dễ học và thực hành. Thời gian đọc tài liệu ngắn hơn, tích
kiệm thời gian
- Short: cú pháp ngắn, đơn giản, dễ hiểu, chỉ cần thay đổi một vài tham số là có thể
thực hiện được theo ý muốn của người sử dụng
- Roburst: Tự động sinh ra tài liệu API giúp người dùng dễ dàng tra cứu danh sách
API có trong hệ thống.
- Standard-based: Được xây dựng dưa trên open Api trước đó là Swagger và Json
Scheme

2.10. Google Colab


Colaboratory hay còn gọi là Google Colab, là một sản phẩm từ Google Research, nó
cho phép chạy các dòng code python thông qua trình duyệt, đặc biệt phù hợp với Data
30

analysis, machine learning và giáo dục. Colab không cần yêu cầu cài đặt hay cấu hình máy
tính, mọi thứ có thể chạy thông qua trình duyệt, bạn có thể sử dụng tài nguyên máy tính từ
CPU tốc độ cao và cả GPUs và cả TPUs đều được cung cấp cho bạn.
Colab cung cấp nhiều loại GPU, thường là Nvidia K80s, T4s, P4s and P100s, tuy nhiên
người dùng không thể chọn loại GPU trong Colab, GPU trong Colab thay đổi theo thời
gian. Vì là dịch vụ miễn phí, nên Colab sẽ có những thứ tự ưu tiên trong việc sử dụng tài
nguyên hệ thống, cũng như giới hạn thời gian sử dụng, thời gian sử dụng tối đa lên tới 12
giờ.

Hình 2.9. Cấu hình phần cứng do Google Colab cung cấp
31

CHƯƠNG 3. XÂY DỰNG MÔ HÌNH TÓM TẮT VĂN BẢN


3.1. Xây dựng từ điển ngôn ngữ
Để mô hình có thể đạt được hiệu quả cao nhât thì tử điển ngôn ngữ chiếm một phần
rất quan trọng trong hệ thống. Chính vì vậy em đã tiến hành xây dựng từ điển ngôn ngữ
bằng bộ dữ liệu của IWSLT’15 English-Vietnamese của Standford NLP Group [15] để xây
dựng nên từ điển ngôn ngữ của mô hình.

3.2. Cách xây dựng từ điển ngôn ngữ


3.2.1 Xây dựng từ điển bằng SentencePiece.
Cài đặt SentencePiece bằng câu lệnh: pip install sentencepiece
Thực hiện huấn luyện mô hình bằng SentencePiece
Sử dụng câu lệnh: spm_train --input=<input> \
--model_prefix=<model_name> \
--vocab_size=8000 \
--character_coverage=1.0 \
--model_type=<type>
Với các tham số
--input: file bộ dữ liệu đầu vào với mỗi dòng tương ứng là 1 câu. Không cần thực hiện
token hóa, bình thường hóa dữ liệu, tiền xử lý dữ liệu bởi vì theo mặc định SentencePiece
[10] sẽ bình thường hóa dữ liệu theo Unicode NFKC.
--model_prefix: tiền tố của tên mô hình đầu ra. Hai file <model_name>.model và
<model_name>.vocab sẽ được tự động sinh ra sau quá trình huấn luyện.
--vocab_size: kích thước từ vựng.
--character_coverage: Số lượng ký tự được bao phủ bởi mô hình, mặc định là 0.9995 đối
với ngôn ngữ có nhiều kí tự như Tiếng Nhật hoặc Tiếng Trung và 1.0 đối với ngôn ngữ có
số lượng nhỏ kí tự.
--model_type: loại mô hình. Lựa chọn giữa unigram, bpe, char hoặc word. Câu đầu vào
phải được token hóa trước khi sử dụng kiểu word.
32

3.2.2 Kết quả


- Từ điển được xây dựng với khối lượng ngôn ngữ là 250112 bao gồm tiếng Anh và
tiếng Việt
- Thu được 2 file spiece.model và spiece.vocab

3.3. Xây dựng tệp dữ liệu huấn luyện


Một tệp dữ liệu để huấn luyện phải thỏa mãn các yêu cầu về ngôn ngữ như: không
được sai chính tả, ngôn ngữ dễ hiểu, số lượng nhiều, .. do vậy em đã tiến hành thu thập
dữ liệu ở trên các trang báo điện tử như VNEXPRESS [16]và nhiều trang báo khác.
Sau khi thu thập dữ liệu bằng ngôn ngữ Python cùng thư viên Article em thu được
kết quả gồm 2 tệp dữ liệu :
 Tập dữ liệu 1: gồm 5667 bài báo thuộc nhiều lĩnh vực từ Kinh tế, Chính trị, Văn
hóa, Thể thao, …

Hình 3.1. Bộ dữ liệu huấn luyện crawl từ VnExpress


33

 Tệp dữ liệu 2: gồm 22644 bài viết thuộc nhiều chủ đề khác nhau

Hình 3.2. Bộ dữ liệu lấy từ các bài báo viesum.csv


Cả hai tệp dữ liệu đều có định dạng .csv và có 2 cột là original và summary trong
đó cột original là bài viết gốc và cột summary là tóm tắt của bài viết .

Hình 3.3. So sánh độ dài văn bản ngắn nhất, dài nhất, trung bình của 2 tệp dữ liệu
34

Trước khi huấn luyện em sẽ chia tập dữ liệu train thành 2 tập train và test. Tập train
gồm 80% dữ liệu trong tập dữ liệu, tập test gồm 20% còn lại của tập dữ liệu.

1. Cài đặt các thư viện cần thiết


- Tiến hành cài đặt các thư viện cần thiết như transformers, sentencepiece, pandas,
torch, numpy, T5Tokenizer và T5ForConditionalGeneration

2. Khởi tạo T5Tokenizer


Sau khi tạo từ điển bằng SentencePiece như đã trình bày ở phần trên em thu được
2 file là spiece.model và spiece.vocab.
Tiếp theo em tiến hành tạo tokenizer từ file spiece.model bằng class T5Tokenizer
Lớp T5Tokenizer có các tham số khởi tạo gồm

Tên tham số Kiểu dữ liệu Mặc định Tùy chọn Ý nghĩa

vocab_file Obj:Str Không Đường dẫn đến


file chứa từ điển
ngôn ngữ cần
thiết để khởi tạo
tokenizer

eos_token :Obj:str </s> Không Kí hiệu đánh


dấu kết thúc một
chuỗi token

Unk_token :obj:str <unk> Không Kí hiệu đánh


dấu rằng token
không tồn tại
trong từ điển
ngôn ngữ không
thể chuyển thành
id thì sẽ được
35

chuyển thành
token này

Pad_token :obj:str <pad> Không Kí hiệu để dành


cho việc padding

Extra_ids :obj:int 100 Không Thêm một số


lượng ids bổ
sung vào cuối từ
điển ngôn ngữ
để sử dụng như
lính canh

Additional_token :obj:List[str] Có Thêm một số


token đặc biệt
cho tokenizer

Bảng 3.1. Tham số của lớp T5Tokenizer


3. Khởi tạo model
Model sẽ được khởi tạo bằng lớp T5ForConditionGeneration có các tham số khởi
tạo [17]
 Input_ids () : Chỉ số của chuỗi dữ liệu đầu vào trong từ vựng. T5 là một mô
hình có nhúng vị trí tương đối, vì vậy ta có thể đệm các đầu vào ở cả bên
phải và bên trái.
 Attention_mask(): Mặt nạ để tránh thực hiện sự chú ý trên các chỉ số mã
thông báo đệm. Các giá trị mặt nạ được chọn trong [0, 1]:
 1 cho các mã thông báo không bị che,
 0 cho các mã được mã hóa.
 Encoder_outputs: một tuple bao gồm (last_hidden_state, hidden_states,
attention)
Trong đó last_hidden_state có dạng (batch_size, sequence_length,
hidden_size ) là một chuỗi các hidden_state đầu ra của lớp cuối cùng trong
encoder. Được sử dụng trong cross-attention của bộ giải mã
36

 Decoder_input_ids: Được sử dụng trong quá trình huấn luyện sequence to
sequence. T5 sử dụng Pad_token_id như là token khởi đầu để tạo ra
decoder_input_ids.
Nếu decoder_inputs_embeds và decoder_input_ids đều không được gán giá
trị thì decoder_input_ids sẽ lấy giá trị của input_ids
 Decoder_attention_masks: hành vi mặc định sinh ra các tensor mà bỏ qua
các pad tokens trong decoder_input_ids
 Past_key_values: bao gồm một khóa và giá trị hidden states của khối
attention đã được tính toán trước. Có thể được dùng để tăng tốc giải mã
 Use_cache : Nếu gán giá trị TRUE thì past_key_values khóa và giá trị sẽ
được trả về và có thể được dùng để tăng tốc giải mã
 Input_embeds: thay vì truyền vào input_ids thì ta có thể chọn truyền trực tiếp
một embedded respresentation.
 Decoder_inputs_embeds:
Thay vì truyền decoder_input_id thì ta có thể truyền trực tiếp một embedded
representation
 Head_mask: Mặt nạ để vô hiệu hóa các self-attention module. Các giá trị mặt
na được chọn trong khoảng [0, 1]
 1 Cho biết đầu không bị che
 0 Cho biết đầu đã bị che
 Output_attentions: tham số định nghĩa có trả lại attention tensor của tất cả
các lớp attention hay không
 Output_hidden_states: tham số định nghĩa có trả lại hidden state của tất cả
các layer hay không
 Return_dict: tham số định nghĩa có trả về ModelOutput thay vì plain tuple
 Training tham số định nghĩa có sử dụng model trong trạng thái huấn luyện
 Labels nhãn định nghĩa để tính toán phân loại cross entropy loss.
Tham số trả về:
- Loss: sai lệch của mô hình ngôn ngữ
- Logits Điểm số dự đoán của mô hình ngôn ngữ
37

- Past_key_values: bao gồm một khóa và giá trị hidden states của khối attention đã
được tính toán trước. Có thể được dùng để tăng tốc giải mã
- Decoder_hidden_state: Hidden-state của decoder tại đầu ra của mỗi lớp cộng thêm
initial embedding outputs
- Decoder_attentions: Giá trị của attention của decoder, sau khi thực hiện attention
softmax, được dùng để tính toán trung bình giá trị tại đầu self-attention
- Encoder_last_hidden_state: Chuỗi hidden state tại đầu ra của lớp cuối cùng của bộ
mã hóa
- Encoder_hidden_states: Hidden state của bộ mã hóa tại đầu ra cuổi mỗi lớp cộng
thêm initial embedding outputs
- Encoder_attentions: Giá trị attention của encoder sau khi thực hiện attention
softmax được dùng để tính toán trung bình tại đầu self-attention

(*) T5Config
Các tham số của T5Config
- Vocab-size (Int) : Độ lớn của từ điển ngôn ngữ cho T5 model
- N_positions(Int, default = 512) Độ dài tối đa cuổi chuỗi mà model có thể gặp phải
- d_model (int, default = 512) Độ lớn của lớp mã hóa và lớp pooler
- d_kv (int, default = 64): Độ lớn của key, query, value projection cho mỗi attention
head (d_kv = d_model // num_heads)
- num_layers (int, defaul= 6): Số lượng hidden layer trong bộ mã hóa của
Transformers
- num_decoder_layer (int, optional) Số lượng hidden layer trong bộ giải mã của
Transformers. Nếu không được gán thì num_decoder_layer = num_layers
- num_heads (int) Số lượng attention head cho mỗi attention layer trong bộ mã hóa
- dropout_rate (float, default = 0, 1) : tỷ lệ drop out
- layer_norm_eps (float: default = 1e-6): epsilon được dùng cho normalization
layers
- initializer_factor(float, default = 1): Một yếu tố để khởi tạo tất cả các ma trận
trọng số (nên được giữ ở mức 1, được sử dụng nội bộ để thử nghiệm khởi tạo).
38

Tiến hành khởi tạo model với câu lệnh


model_config = T5Config(
vocab_size=tokenizer.vocab_size,
feed_forward_proj="gated-gelu",
pad_token_id = tokenizer.pad_token_id,
eos_token_id = tokenizer.eos_token_id,
decoder_start_token_id = tokenizer.pad_token_id,
)
model = T5ForConditionalGeneration(model_config)

Cấu hình của model sẽ như sau:


39

Hình 3.4. Cấu hình của mô hình dùng để huấn luyện


40

4. Thực hiện huấn luyện mô hình


Tiến hành training model với config tương ứng ở trên
Sau khi huấn luyện mô hình và thực hiện validate trên 20% tập dữ liệu thu được
kết quả:

Bảng 3.2. Kết quả đạt được sau khi kiểm tra với tệp dữ liệu VnExpress.csv

F1_score Precision recall

ROUGE -1 0.06 0.43 0.2

ROUGE -2 0.04 0.04 0.08

ROUGE -L 0.05 0.38 0.09

Bảng 3.3. Kết quả đạt được sau khi kiểm tra với tệp dữ liệu viesum.csv

F1_score Precision recall

ROUGE -1 0.5 0.2 0.2

ROUGE -2 0.17 0.05 0.07

ROUGE -L 0.4 0.2 0.3

Sau quá trình train để thử nghiệm model với dữ liệu mới đầu tiên cần token hóa chuỗi dữ
liệu đầu vào với tokenizer
tokenizer(
text,
max_length=512,
padding='max_length',
truncation=True,
41

return_attention_mask=True,
add_special_tokens=True,
return_tensors='pt'
)
Trong đó :
- Text: dữ liệu đầu vào
- Max_length: tham số để đưa ra quyết định cho các tham số như padding,
truncation
- Padding: cắt ngắn các câu văn về cùng một độ dài
- Truncation: tham số chỉ định xem có cắt ngắn câu hay không
- Return_attention_mask: tham số chỉ định có trả về attention mask hay không
- Add_special_tokens: tham số chỉ định có mã hóa chuỗi với token đặc biệt gắn với
model hay không
- Return_tensors: Trả về tensor theo định dạng (“tf”: tensorflow tensor, “pt” :
pytorch tensors, “np”: numpy array)

Bắt đầu predict thông tin tóm tắt bằng hàm


generated_ids = model.generate(
input_ids = ids,
attention_mask = mask,
max_length=150,
num_beams=3,
repetition_penalty=2.5,
length_penalty=1.0,
early_stopping=True
)
Với các tham số:
- Input_ids: source_ids lấy từ tensor của dữ liệu đầu vào sau khi được token hóa
- Attention_mask: source_mask lấy từ tensor của dữ liệu đầu vào sau khi được
token hóa
42

- Max-length: độ dài tối đa của chuỗi sẽ được sinh ra


- num_beams: số lượng chùm sẽ được sử dụng cho giải thuật beam search
- repetition_penalty: tham số cho hình phạt lặp lại
- length_penalty: tham số cho giải thuật beam search
- early_stopping: tham số định nghĩa có dừng lại giải thuật beam search khi một
beam đã hoàn thành hay chưa.

Cuối cùng decode lại dữ liệu từ mô hình với tokenizer để có được kết quả
preds = [tokenizer.decode(g, skip_special_tokens=True,
clean_up_tokenization_spaces=True) for g in generated_ids]

với các tham số của hàm decode:


- token_ids: danh sách input_ids
- skip_special_tokens: loại bỏ các token đặc biệt trong khi giải mãi
- clean_up_tokenization_space: dọn các không gian mã hóa

3.4. Xây dựng ứng dụng


Trong màn hình chính của ứng dụng bao gồm 1 textbox để nhập dữ liệu, 1 button, 1
textview để hiển thị dữ liệu.
Người dùng sẽ tiến hành nhập dữ liệu vào ô textbox đầu tiên ở đây chỉ giới hạn văn bản ở
2000 kí tự.
Sau khi đã hoàn thành nhập dữ liệu thì người dùng sẽ chọn nút tóm tắt. Hệ thống sẽ tiến
hành gọi đến API service để thực hiện truy vấn tới mô hình. Sau khi tính toán hoàn tất mô
hình sẽ trả về kết quả API sẽ trả kết quả cho ứng dụng và xuất kết quả lên textview ở phía
dưới .
43

Hình 3.5. Ứng dụng tóm tắt văn bản bằng Android
44

KẾT LUẬN
Sau quá trình thực hiện đồ án em đã thu được những kết quả khả quan và học tập được
nhiều kiến thức mới đồng thời có cơ hội thực hành sử dụng áp dụng những kiến thức đã
tiếp thu được để hoàn thành được đồ án này dưới đây là kết quả của em đạt được :

 Kết quả đạt được


- Cách có thể xây dựng một mô hình ngôn ngữ
- Cách tìm kiếm dữ liệu
- Cách để giải quyết các bài toán thực tế bằng Machine Learning
- Cách xây dựng ứng dụng Android bằng ngôn ngữ Java
- Hiểu cách sử dụng các công nghệ cần thiết để giải quyết bài toán mình đưa ra.
 Hạn chế của đề tài
- Ứng dụng chỉ phục vụ một ngôn ngữ Tiếng Việt
- Ứng dụng chưa chạy được trên nhiều nền tảng
- Kết quả tóm tắt vẫn chưa đạt được mức độ mạch lạc, trôi chảy
 Hướng phát triển
- Xây dựng thêm ứng dụng trên nền tảng Android
- Cải thiện mô hình để đạt được hiệu quả cao hơn
- Thử sử dụng các kiến trúc khác để xây dựng và so sánh để đưa ra kết quả tốt nhất
cho người sử dụng
Với kiến thức nền tảng đã được học ở trường và bằng sự nỗ lực của bản thân cùng với
sự hướng dẫn tận tình của thầy NGUYỄN ĐỨC DƯ, em đã hoàn thành đồ án tốt nghiệp
với đề tài “Ứng dụng Deep Learning xây dựng ứng dụng tóm tắt văn bản” . Dù đã cố gắng
hết sức tìm hiểu, học hỏi các công nghệ mới nhưng do thời gian có hạn nên không thể tránh
khỏi những thiếu sót. Em rất mong được sự thông cảm cũng như góp ý của quý thầy cô để
có thể hoàn thiện hơn sản phẩm

Một lần nữa em xin chân thành cảm ơn Thầy NGUYỄN ĐỨC DƯ đã tận tình hướng dẫn
em trong suốt thời gian thực hiện đồ án.
45

TÀI LIỆU THAM KHẨO

[1] M. Belmondo, "https://blog.text-summarize.com/summarization/differences-


between-extractive-and-abstractive-summary/," 30 July 2020. [Online]. [Accessed
6 June 2022].

[2] H. Minh, "Báo chính phủ," 7 7 2020. [Online]. Available:


https://baochinhphu.vn/ung-dung-ai-xay-dung-chatbox-ho-tro-tra-cuu-co-so-dieu-
tri-covid-19-102275237.htm.

[3] Hans Christian, Mikhael Pramodana Agus, Derwin Suhartono,


"https://journal.binus.ac.id/index.php/comtech/article/view/3746," 31 December
2016. [Online]. Available:
https://journal.binus.ac.id/index.php/comtech/article/view/3746.

[4] T. Nomoto, "ResearchGate," 01 January 2005. [Online]. Available:


https://www.researchgate.net/publication/220816702_Bayesian_Learning_in_Text
_Summarization.

[5] N. N. An, "SlideShare," 2015. [Online]. Available:


https://www.slideshare.net/garmentspace/lun-n-tin-s-ton-hc-nghin-cu-pht-trin-cc-k-
thut-t-ng-tm-tt-vn-bn-ting-vit. [Accessed 01 6 2022].

[6] I. C. Ferda Nur Alpaslan, "Research Gate," August 2011. [Online]. Available:
https://www.researchgate.net/publication/220195824_Text_summarization_using_
Latent_Semantic_Analysis. [Accessed 01 06 2022].

[7] S. Hochreiter and J. Schmidhuber, "Long Short-Term Memory," November 1997.


[Online]. Available: https://direct.mit.edu/neco/article-
abstract/9/8/1735/6109/Long-Short-Term-Memory?redirectedFrom=fulltext.
46

[8] N. S. N. P. J. U. L. J. A. N. G. L. K. I. P. Ashish Vaswani, "Attention is all you


need," 12 June 2017. [Online]. Available: https://arxiv.org/abs/1706.03762.

[9] S. S. E. a. C. R. S. R. S. G. R. Adam Roberts, "Exploring Transfer Learning with


T5: the Text-To-Text Transfer Transformer," 24 February 2020. [Online].
Available: https://ai.googleblog.com/2020/02/exploring-transfer-learning-with-
t5.html.

[10] J. R. Taku Kudo, "arxiv," 19 August 2018. [Online]. Available:


https://arxiv.org/abs/1808.06226. [Accessed 01 June 2022].

[11] B. H. A. B. Rico Sennrich, "Neural Machine Translation of Rare Words with


Subword Units," August 2016. [Online]. Available: https://aclanthology.org/P16-
1162/.

[12] "https://d2l.ai/chapter_recurrent-modern/beam-search.html," 9 6 2022. [Online].


Available: https://d2l.ai/chapter_recurrent-modern/beam-search.html.

[13] N. D. Duc, "Viblo," Viblo, 12 September 2016. [Online]. Available:


https://viblo.asia/p/kien-truc-cua-he-dieu-hanh-android-PaLGDYdaelX. [Accessed
01 6 2022].

[14] F. API, "https://fastapi.tiangolo.com/," 2022. [Online]. Available:


https://fastapi.tiangolo.com/.

[15] M.-T. L. A. S. P. Christopher D. Manning, "Standford NLP Group," 2016.


[Online]. Available: https://nlp.stanford.edu/projects/nmt/.

[16] B. VnExpress, "https://vnexpress.net/," [Online]. Available: https://vnexpress.net/.

[17] H. Face, "T5ForConditionalGeneration," 2020. [Online]. Available:


https://huggingface.co/transformers/v3.3.1/model_doc/t5.html#t5forconditionalgen
eration.
47

[18] S. Babar, "Research Gate," 23 October 2013. [Online]. Available:


https://www.researchgate.net/publication/257947528_Text_SummarizationAn_Ov
erview.

You might also like