Professional Documents
Culture Documents
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI
Lớp : CNTT3
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
Lớp : CNTT3
Hà Nội – 2022
1
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!
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
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
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
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.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]
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
Đá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ụ
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.
(*) Độ đ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
(*) Độ 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
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]
𝑄𝐾 𝑇
𝐴𝑡𝑡𝑒𝑛𝑡𝑖𝑜𝑛 = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥 ( )𝑉
√𝑑𝐾
Self-attention được áp dụng trên n vector riêng biệt để tạo ra multi-head attention.
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
2.5. PyTorch
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.
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
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)
Và
Sau đó, tại bước thời gian 3, với mọi y3∈Yy3∈Y, ta tính:
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.
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.
Đâ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
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
Tệp dữ liệu 2: gồm 22644 bài viết thuộc nhiều chủ đề khác nhau
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.
Tên tham số Kiểu dữ liệu Mặc định Tùy chọn Ý nghĩa
chuyển thành
token này
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
Bảng 3.2. Kết quả đạt được sau khi kiểm tra với tệp dữ liệu VnExpress.csv
Bảng 3.3. Kết quả đạt được sau khi kiểm tra với tệp dữ liệu viesum.csv
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)
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]
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 :
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
[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].