TÓM TẮT DỰ ÁNĐây là một đồ án nghiên cứu giải quyết vấn đề thú vị trong lĩnh vực thị giác máy tínhlà một hệ thống phân loại bài báo tiếng Việt vào để xác định bài báo đó thuộc thể loạinà
Trang 1SE_08 - Huỳnh Văn Quân - Trịnh Xuân PhúcSE_08 - Huỳnh Văn Quân - Trịnh Xuân Phúc
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN: KHOA HỌC
DỮ LIỆU
ĐỀ TÀI “Nhận diện phân loại văn bản tiếng Việt” Giáo viên hướng dẫn: Phạm Công Thắng
SINH VIÊN THỰC HIỆN
1 Nguyễn Nho Gia Huy 102200134 Lớp: 20TCLC_DT3
2 Nguyễn Minh Thông 102210280 Lớp: 21TCLC_DT4
3 Nguyễn Tiến Thịnh 102200114 Lớp: 20TCLC_DT2
Đà Nẵng, 5/2024
Trang 2TÓM TẮT DỰ ÁN
Đây là một đồ án nghiên cứu giải quyết vấn đề thú vị trong lĩnh vực thị giác máy tính
là một hệ thống phân loại bài báo tiếng Việt vào để xác định bài báo đó thuộc thể loạinào trong 10 thể loại: Chính trị xã hội, đời sống, khoa học, kinh doanh, pháp luật, sứckhoẻ, thế giới, thể thao, văn hoá, vi tính
Để đạt được mục tiêu này, phương pháp tiếp cận đã được áp dụng bao gồm việc sửdụng crawl tool để thu thập một tập dữ liệu khoảng 32 000 mẫu, trong đó mỗi loạibáo có trên 2.000 mẫu đại diện Tiếp theo, mô hình học sâu RCNN, một kiến trúcDeep Neural Network (DNN) hiệu quả, sử dụng để huấn luyện trên tập dữ liệu này.Các kỹ thuật tiên tiến như checkpoint, data augmentation và feature extraction cũngđược áp dụng nhằm tăng cường khả năng học tập của mô hình và giảm thiểu các vấn
đề như overfitting
Kết quả mô hình đã đạt được độ chính xác phân loại trên 90% khi được kiểm tra trêntập dữ liệu thử nghiệm Điều này cho thấy khả năng áp dụng thực tế của giải pháptrong việc phân loại các bài báo tiếng Việt khác nhau nói riêng cũng như văn bảntiếng Việt nói chung
Trang 3BẢNG PHÂN CÔNG NHIỆM VỤ
Nguyễn Tiến Thịnh Thu thập và tiền xử lý dữ liệu
Trích xuất đặc trưngViết báo cáo
Nguyễn Nho Gia Huy Mô hình hoá dữ liệu và kiểm thử theo phương pháp
Naive BayesViết slideNguyễn Minh Thông Mô hình hoá dữ liệu theo mô hình học sâu RCNN
Viết báo cáoTrương Thị Thanh Kiều Không tham gia
Trang 4MỤC LỤC
TÓM T T D ÁN ẮT DỰ ÁN Ự ÁN 2
B NG PHÂN CÔNG NHI M V ẢNG PHÂN CÔNG NHIỆM VỤ ỆM VỤ Ụ 3
M C L C Ụ Ụ 4
DANH M C HÌNH NH Ụ ẢNG PHÂN CÔNG NHIỆM VỤ 5
DANH M C B NG BI U Ụ ẢNG PHÂN CÔNG NHIỆM VỤ ỂU 7
DANH M C THU T NG Ụ ẬT NGỮ Ữ 8
1 Gi i thi u ới thiệu ệu 11
1.1 Hi n tr ng v các s n ph m t ện trạng về các sản phẩm tương tự liên quan đến đề tài ạng về các sản phẩm tương tự liên quan đến đề tài ề các sản phẩm tương tự liên quan đến đề tài ản phẩm tương tự liên quan đến đề tài ẩm tương tự liên quan đến đề tài ương tự liên quan đến đề tài ng t liên quan đ n đ tài ự liên quan đến đề tài ến đề tài ề các sản phẩm tương tự liên quan đến đề tài 11
1.1.1 Trong n ước 11 c 1.1.2 Trên th gi i ế giới ớc 11
1.1.3 M t s s n ph m ột số sản phẩm ố sản phẩm ản phẩm ẩm 12
1.2 V n đ ấn đề ề các sản phẩm tương tự liên quan đến đề tài 15
1.2.1 Thu nh p d li u ập dữ liệu ữ liệu ệu 15
1.2.2 L a ch n mô hình hu n luy n ựa chọn mô hình huấn luyện ọn mô hình huấn luyện ấn luyện ệu 15
1.2.3 Hu n luy n mô hình hi u qu ấn luyện ệu ệu ản phẩm 16
1.3 Đ xu t gi i pháp t ng quan ề các sản phẩm tương tự liên quan đến đề tài ấn đề ản phẩm tương tự liên quan đến đề tài ổng quan 17
1.3.1 Thu th p và x lý d li u ập dữ liệu ử lý dữ liệu ữ liệu ệu 17
1.3.2 L a ch n mô hình phù h p ựa chọn mô hình huấn luyện ọn mô hình huấn luyện ợp 17
1.3.3 Hu n luy n mô hình hi u qu ấn luyện ệu ệu ản phẩm 18
2 Quy trình th c hi n và k t qu ực hiện và kết quả ệu ết quả ả 18
2.1 Thu thập và xử lý dữ liệu 18
2.1.1 Thu th p d li u và gán nhãn ập dữ liệu ữ liệu ệu 18
2.1.2 Ti n x lý d li u ền xử lý dữ liệu ử lý dữ liệu ữ liệu ệu 24
2.2 Trích xuất đặc trưng 24
2.2.1 Count Vectors as features 26
2.2.2 TF-IDF Vectors as Features 27
2.2.3 Truncated SVD (Singular Value Decomposition) 27
2.3 Huấn luyện mô hình 28
2.3.1 X lý và chu n b d li u ử lý dữ liệu ẩm ị dữ liệu ữ liệu ệu 28
2.3.2 Xây d ng mô hình ựa chọn mô hình huấn luyện 30
2.3.3 Hu n luy n mô hình ấn luyện ệu 32
2.4 Đánh giá và tinh chỉnh mô hình 33
3 K t lu n ết quả ận 43
TÀI LI U THAM KH O ỆM VỤ ẢNG PHÂN CÔNG NHIỆM VỤ 44
Trang 5DANH MỤC HÌNH ẢNH
Ảnh 1: PlantNet app 12
Ảnh 2: Google lens 13
Ảnh 3: Flora Incognita app 13
Ảnh 4: LeafSnap app 14
Ảnh 5: FlowerChecker app 14
Ảnh 6: Flowers Dataset từ Kaggle 20
Ảnh 7: Thư mục chứa tập dữ liệu Train và Test 20
Ảnh 8: Thư mục chứa các tập ảnh của 5 loại hoa 20
Ảnh 9: Số lượng ảnh trong tập test 21
Ảnh 10: Thực thi chương trình với Unsplash Image API 22
Ảnh 11: Extension Dowload All Image 22
Ảnh 12: Sử dụng Extension Download All Image 23
Ảnh 13: Các thư mục của 10 loại hoa 23
Ảnh 14: Kiến trúc của VGG16 27
Ảnh 15: Trích xuất dữ liệu ảnh hoa từ một tệp zip 28
Ảnh 16: Kiểm tra chất lượng hình ảnh 29
Ảnh 17: Kết quả kiểm tra chất lượng hình ảnh 29
Ảnh 18: Khởi tạo ImageDataGenerator 29
Ảnh 19: Tạo các bộ dữ liệu từ các thư mục chứa ảnh 30
Ảnh 20: Sử dụng pre-trained vgg16 model và đóng băng lớp của nó 31
Ảnh 21: Thêm các lớp fully connected 31
Ảnh 22: Hàm mất mát categorical_crossentropy 32
Ảnh 23: Định nghĩa các callback 32
Ảnh 24: Huấn luyện mô hình 33
Ảnh 25: Kết quả huấn luyện mô hình 33
Ảnh 26: Lưu mô hình 33
Ảnh 27: Vẽ biểu đồ độ chính xác và mất mát trong quá trình huấn luyện 34
Ảnh 28: Biểu đồ vẽ chung độ chính xác và mất mát 35
Trang 6Ảnh 29: Biểu đồ vẽ riêng độ chính xác và mất mát 35
Ảnh 30: Tính toán độ chính xác và mất mát trên tập kiểm tra 36
Ảnh 31: Tạo báo cáo phân loại 36
Ảnh 32: Báo cáo phân loại 37
Ảnh 33: Tạo ma trận nhầm lẫn 37
Ảnh 34: : Ma trận nhầm lẫn 37
Ảnh 35: Kiến trúc ứng dụng 38
Ảnh 36: Khởi tạo ứng dụng Flask 38
Ảnh 37: Load mô hình 39
Ảnh 38: Tạo route trang chính 39
Ảnh 39: Tạo route xử lý dự đoán 39
Ảnh 40: Trường hợp tải lên một file 40
Ảnh 41: Trường hợp nhập URL 40
Ảnh 42: Trả về kết quả 40
Ảnh 43: Hàm dự đoán 41
Ảnh 44: Giao diện web 42
Ảnh 45: Giao diện web sau khi trả về kết quả 42
Ảnh 46: Giao diện web khi hiển thị kết quả trả về không nhận ra 43
Trang 7DANH MỤC BẢNG BIỂU
Trang 81 Quy trình thực hiện và kết quả
1.1 Thu thập và xử lý dữ liệu
1.1.1 Thu thập dữ liệu và gán nhãn
Việc thu thập và xây dựng tập dữ liệu ảnh đóng vai trò quan trọng đối vớithành công của dự án phân loại 10 loại báo bằng học sâu Tuy nhiên, quátrình này cũng tiềm ẩn nhiều thách thức cần được giải quyết một cách hiệuquả
Một trong những khó khăn lớn nhất là đảm bảo tính đa dạng và cân bằngcủa dữ liệu Với yêu cầu phải có 10 loại báo khác nhau, chúng ta cần thuthập đủ số lượng mẫu đại diện cho mỗi lớp, đồng thời đảm bảo rằng cácmẫu này được phân bố đồng đều giữa các lớp Điều này nhằm tránh hiệntượng mô hình bị thiên vị hoặc học kém đối với các lớp ít dữ liệu hơn.Ngoài ra, tập dữ liệu cũng cần đủ lớn để đảm bảo mô hình không gặp vấn
đề underfitting trong quá trình huấn luyện
Để giải quyết những thách thức này, nhóm đã đưa ra quyết định xây dựngmột tập dữ liệu lớn, gồm hơn 32.000 mẫu, trong đó mỗi loại báo có trên2.000 mẫu đại diện Số lượng mẫu lớn này sẽ giúp đảm bảo tính đa dạng vàcân bằng của dữ liệu, đồng thời cung cấp đủ dữ liệu để huấn luyện một môhình hiệu quả
Tuy nhiên, việc xây dựng thủ công một tập dữ liệu lớn như vậy sẽ đòi hỏirất nhiều thời gian và công sức Do đó, nhóm đã lựa chọn kết hợp haiphương pháp sau để thu thập dữ liệu:
1 Tìm kiếm và khai thác các tập dữ liệu ảnh báo có sẵn:
Qua quá trình tìm hiểu và nghiên cứu, nhóm chúng tôi đã nhận thấy rằngnhững tập dữ liệu về báo công cộng không chỉ phong phú về số lượng
mà còn đa dạng về chủng loại hoa, điều này rất phù hợp cho các ứngdụng trong nhận dạng và phân loại hình ảnh Các tập dữ liệu này được tổ
Trang 9chức và cá nhân uy tín kiểm định, đảm bảo tính chính xác và đáng tincậy
Việc sử dụng chúng không chỉ giúp tiết kiệm đáng kể thời gian trongkhâu thu thập dữ liệu mà còn nâng cao hiệu quả và độ chính xác của các
mô hình học máy Thêm vào đó, việc khai thác các nguồn dữ liệu có sẵncòn thúc đẩy sự phát triển và cải tiến liên tục trong lĩnh vực nghiên cứu
và ứng dụng trí tuệ nhân tạo vào nhận dạng văn bản tiếng Việt
Điều này giúp nhóm chúng tôi xây dựng và đào tạo mô hình một cáchhiệu quả, đồng thời đảm bảo kết quả nhận dạng và phân loại báo đạt độchính xác cao nhất
Ảnh 1: Ảnh nguồn dữ liệu tìm được
Sau khi tải về thì tập dữ liệu sẽ gồm có tập train và tập test
Ảnh 2: Thư mục chứa tập dữ liệu Train và Test
Trang 10Tập train gồm có 10 loại báo: Chính trị xã hội, đời sống, khoa học, kinhdoanh, pháp luật, sức khoẻ, thế giới, thể thao, văn hoá, vi tính, mỗi loại
có giao động từ 2000 -> 5000 tệp
Ảnh 3: Thư mục train chứa các tệp của 10 loại báo
Tập test tương tự như tập train sẽ có >30 000 tệp
Trang 11Ảnh 4: Thư mục test chứa các tệp của 10 loại báo
Để đảm bảo tính chính xác và tính nhất quán này, chúng tôi sẽ áp dụngquy trình gán nhãn ảnh nghiêm ngặt như sau:
1 Tổ chức dữ liệu hợp lý:
Sau khi thu thập, các ảnh sẽ được sắp xếp và lưu trữ trong các thưmục riêng biệt, mỗi thư mục mang tên của một loại hoa cụ thể
Trang 12Ảnh 5: Các thư mục của 10 loại báo
Việc phân loại sơ bộ này sẽ giúp quá trình gán nhãn được thuận tiện
và có hệ thống hơn
2 Kiểm tra và xác nhận thủ công:
Các tệp trong các thư mục sẽ được kiểm tra thủ công bởi ít nhất haithành viên trong nhóm
Quá trình kiểm tra sẽ diễn ra độc lập, sau đó các kết quả sẽ được đốichiếu để đảm bảo sự nhất quán
Với cách tiếp cận này, nhóm hi vọng sẽ xây dựng được một tập dữ liệu văn bảnđạt chất lượng và quy mô yêu cầu, tạo tiền đề vững chắc cho việc huấn luyện
mô hình phân loại hiệu quả
1.1.2 Tiền xử lý dữ liệu
- Trước hết, chúng ta cần phải loại bỏ những ký tự đặc biệt trong văn bản banđầu như dấu chấm, dấu phẩy, dấu mở đóng ngoặc, bằng cách sử dụng thưviện gensim Sau đó chúng ta sẽ sử dụng thư viện PyVi để tách từ tiếngViệt
Trang 13- Chúng ta sẽ đưa mỗi bài báo về một cặp (x, y) Trong đó, x là văn bản đãđược xử lý, y là nhãn/thể loại của bài báo đó.
- Lưu dữ liệu lại vào file pkl để tiện sử dụng cho việc sử dụng lại dữ liệu đãđược xử lý
Ảnh: tiền xử lý dữ liệu
Trang 14Ảnh: lưu dữ liệu vào file pkl.
2.2 Trích xuất đặc trưng
2.2.1 Count Vectors as features
- Count Vectors là một kỹ thuật biểu diễn văn bản dưới dạng các vector số
bằng cách đếm số lần xuất hiện của mỗi từ trong một văn bản Mỗi từ trong từ điển được ánh xạ tới một chỉ mục và giá trị tại chỉ mục đó trong vector tương ứng với số lần từ đó xuất hiện trong văn bản
Các bước thực hiện
- Xây dựng từ điển (Vocabulary): Tạo một danh sách các từ duy nhất
từ toàn bộ tập dữ liệu
- Tạo vector đếm (Count Vector): Khởi tạo một vector có độ dài bằng
số lượng từ trong từ điển, với tất cả các phần tử bằng 0 Duyệtqua mỗi
từ trong văn bản và tăng giá trị của phần tử tương ứng trong vector
2.2.2 TF-IDF Vectors as Features
- TF-IDF (Term Frequency-Inverse Document Frequency) là một kỹ thuật
chuyển đổi văn bản thành các vector số để sử dụng trong các thuật toán họcmáy TF-IDF không chỉ đếm tần suất của các từ (Term Frequency) mà còn xemxét tầm quan trọng của từ trong toàn bộ tập tài liệu bằng cách giảm trọng số củacác từ phổ biến (Inverse Document Frequency)
- Term Frequency (TF):
Đo tần suất xuất hiện của một từ trong một tài liệu
Trang 15Công thức:
- TF-IDF Vectors as Features
Đo độ quan trọng của một từ trong toàn bộ tập tài liệu.Công thức:
Trang 162.2.3 Truncated SVD (Singular Value Decomposition)
- Sau khi thực hiện TF-IDF, chúng ta dễ dàng nhận thấy rằng, ma trận màchúng ta thu được có kích thước rất lớn, và việc xử lý tính toán với ma trậnnày đòi hỏi thời gian và bộ nhớ khá tốn kém Để xử lý vấn đề này, chúng ta sẽ
sử dụng thuật toán SVD (singular value decomposition) nhằm mục đích giảmchiều dữ liệu của ma trận mà chúng ta thu được, mà vẫn giữ nguyên được cácthuộc tính của ma trận gốc ban đầu
- Truncated SVD (Singular Value Decomposition) là một kỹ thuật giảmchiều dùng trong xử lý dữ liệu và học máy Nó đặc biệt hữu ích khi làm việc với
ma trận hiếm (sparse matrices), chẳng hạn như ma trận TF-IDF được sử dụngtrong xử lý ngôn ngữ tự nhiên
- SVD cơ bản:
Trang 17Ảnh: minh hoạ sử dụng Truncated SVD
- Trong mô hình này, mỗi từ sẽ được biểu diễn bằng một vector 300 chiều Từ
đó chúng ta có thể sử dụng chúng cho các mô hình Deep Learning như DeepNeural Network, Recurrent Neural Networks, Convolutional Neural Networks đểphân loại văn bản
Ở đây chúng ta sẽ tiếp tục sử dụng thư viện gensim:
Trang 18Ảnh: minh hoạ sử dụng mô hình Word Embeddings
2.3 Huấn luyện mô hình
Huấn luyện một mô hình học máy để phân loại hình ảnh là một quá trình đòi hỏinhiều bước khác nhau Trong trường hợp này, việc huấn luyện mô hình phân loạihình ảnh hoa sử dụng phương pháp Naive Bayes và Recurrent ConvolutionalNeural Network
2.3.1 Mô hình Naive Bayes
Là một thuật toán phân loại dựa trên lý thuyết Bayes, với giả định rằng
sự xuất hiện của một đặc trưng trong một lớp không phụ thuộc vào sự xuấthiện của các đặc trưng khác (giả định độc lập)
Trang 19Đối với bước xử lý và chuẩn bị dữ liệu, một chuỗi các quy trình được thựchiện một cách cẩn thận và chi tiết để đảm bảo chất lượng và tính nhất quáncủa dữ liệu đầu vào cho mơ hình
Ảnh 6: Sử dụng các dữ liệu đã xử lý từ file pkl
Ảnh 7: Huấn luyện mơ hình Nạve Bayes
Trang 20Ảnh 8: Kết quả huấn luyện
Sau khi có kết quả huấn luyện, chúng tôi sẽ kiểm thử kết quả:
Ảnh 9: tệp kiểm thử
Trang 21và đánh giá một cách hiệu quả, khách quan và có khả năng khái quát hóa tốttrên dữ liệu mới.
Trang 22Qua đó, ta thấy rằng kết quả với độ chính xác >85% là một kết quả tốt.
2.3.2 Xây dựng mô hình RCNN
- RCNN là một mô hình kết hợp giữa mạng nơ-ron tích chập (CNN) vàmạng nơ-ron hồi quy (RNN) RCNN tận dụng khả năng trích xuất đặc trưngkhông gian của CNN và khả năng học thông tin tuần tự của RNN để phânloại văn bản
Cấu trúc RCNN:
Trang 23- CNN (Convolutional Neural Network):
CNN sử dụng các lớp tích chập (convolutional layers) để trích xuấtcác đặc trưng không gian từ dữ liệu đầu vào (ví dụ: văn bản được mãhóa dưới dạng ma trận)
- RNN (Recurrent Neural Network):
RNN, đặc biệt là các biến thể như LSTM (Long Short-TermMemory) hoặc GRU (Gated Recurrent Unit), được sử dụng để học cácmối quan hệ tuần tự trong dữ liệu
Trang 24Xây dựng mô hình:
Kết quả huấn luyện:
Trang 25Ta thấy rằng độ chính xác đạt được trên 90%, cho thấy kết quả huấn luyện theo
mô hình RCNN là rất tốt
Trang 262.3 Đánh giá và tinh chỉnh mô hình
Sau khi hoàn tất quá trình huấn luyện, việc đánh giá mô hình trên tập dữ liệukiểm tra là một bước quan trọng để xác định hiệu suất và khả năng khái quáthóa của mô hình Đánh giá này giúp chúng ta hiểu rõ hơn về những điểmmạnh và điểm yếu của mô hình, từ đó có thể đưa ra các chiến lược tinh chỉnhphù hợp để cải thiện hiệu suất
Để đánh giá hiệu suất của mô hình trong quá trình huấn luyện, chúng ta vẽbiểu đồ để theo dõi sự thay đổi của độ chính xác và mất mát trên tập huấnluyện và tập kiểm tra sau mỗi epoch Biểu đồ này cung cấp thông tin hữu ích
để phân tích việc mô hình có overfitting hay underfitting hay không, từ đó cóthể điều chỉnh các tham số huấn luyện và kiến trúc mô hình cho phù hợp
Ảnh: Biểu đồ vẽ chung độ chính xác và mất mát
Trang 27Báo cáo phân loại (classification report) cung cấp thông tin chi tiết về độchính xác (precision), độ đrecall (recall) và độ f1-score cho từng lớp Nhữngthông tin này rất hữu ích để xác định xem mô hình có thể phân loại tốt cáclớp nào và gặp khó khăn với các lớp nào.