TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ============ BÁO CÁO THỰC NGHIỆM HỌC PHẦN: MỘT SỐ CÔNG NGHỆ PHẦN MỀM Đề tài: PHÂN LOẠI TIẾNG VIỆT SỬ DỤNG MACHINE LEARNING GVHD : TS. Hà Mạnh Đào Lớp : 20221IT6024003 Nhóm : 5 Thành viên : Vũ Trọng Tuấn – 2019601439 Nguyễn Minh Vũ – 2019601491 Nguyễn Văn Thành 2019600414 Hà Nội, 2022 MỤC LỤC MỤC LỤC 1 LỜI NÓI ĐẦU 2 CHƯƠNG 1. TỔNG QUAN 4 1.1. Mục đích nghiên cứu. 4 1.2. Đối tượng hướng tới. 4 1.3. Ứng dụng 4 CHƯƠNG 2: CÁC CÔNG NGHỆ ĐƯỢC SỬ DỤNG 5 2.1. Python 5 2.2. Thư viện Python 5 2.3. Thuật toán Naive Bayes 6 2.5. Google Collab 7 CHƯƠNG 3: DỮ LIỆU VÀ QUY TRÌNH XỬ LÝ. 8 3.1. Dữ liệu. 8 3.2. Quy trình xử lý 8 3.2.1. Download và xử lý dữ liệu dành cho traintest Model 9 3.2.2. Xử lý dữ liệu cần phân loại gắn nhãn 16 CHƯƠNG IV: ĐÁNH GIÁ 21 4.1. Python. 21 4.2. Thư viện Underthesea. 21 4.3. Thuật toán Naive Bayes. 21 TÀI LIỆU THAM KHẢO 22 LỜI NÓI ĐẦU Trong thời đại công nghệ thông tin hiện nay, thông tin có tầm quan trọng đặc biệt trong việc giải quyết các vấn đề của cuộc sống, công việc. V.I.Lênin khẳng định: Không có thông tin thì không có thắng lợi trong bất cứ lĩnh vực nào, cả khoa học kỹ thuật và sản xuất. Muốn ra được quyết định đúng, hay thông tin chính xác nhất thiết phải có đủ thông tin cần thiết, chính xác, khách quan, công việc mới có thể giải quyết được đúng quy định, hợp lý và hiệu quả Nhận thấy điều quan trọng đó nhóm 5 tụi em và sự hướng dẫn nhiệt tình tới từ thầy giáo hướng dẫn Hà Mạnh Đào đã đi vào phân loại các loại gắn nhãn văn bản Tiếng Việt nhằm mục đích gắn nhãn cho chúng đề chúng phù hợp với các thông tin trong bài viết đã được đưa ra. Nhóm em xin chân trọng cảm ơn PHÂN CÔNG CÔNG VIỆCKẾ HOẠCH DỰ KIẾN STT Thành viên Công việc Thời gian Ghi chú 1 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Kết nối sử dụng GG Collab Tìm hiểu về đề tài Đối tượng và lợi ích có thể đạt được Phân tích và lên kế hoạch 2 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Xử lý dữ liệu 3 Vũ Trọng Tuấn Xây dựng mô hình 4 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Nhận nhận xét từ thầy cô và sửa đổi 5 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Chạy và đánh giá chương trình CHƯƠNG 1. TỔNG QUAN 1.1. Mục đích nghiên cứu. Trong quá trình viết bài của các nhà báo, blogger, nhà sáng tạo nội dung hay đơn giản chỉ là các quản trị viên upload các bài viết lên một trang web hoặc một mạng xã hội nào đó thì việc gắn nhãn cho bài viết đó như thế nào để hướng tới người đọc trong khi có nhiều nội dung được đan xen với nhau trong bài viết được tạo ra. Chính vì thế mà mục đích của đề tài này ra đời nhằm giải quyết việc phân loại dán nhãn cho bài viết trước khi chúng được xuất bản đăng tải. 1.2. Đối tượng hướng tới. Tất cả các loại văn bản được viết sử dụng ngôn ngữ tiếng Việt của chúng ta hiện nay: kinh tế, xã hội, thể thao, ..... Khi đó ứng với mỗi bài viết chúng ta cần gắn nhãn cho chúng với chủ đề nào đó mà đôi khi ta tưởng chừng như đơn giản mà lại khó khăn. 1.3. Ứng dụng Gắn thẻ nội dung hoặc sản phẩm: bằng cách sử dụng danh mục như cách để cải thiện trình duyệt hoặc để xác định nội dung liên quan trên các trang web của bạn. Các nền tảng như thương mại điện tử, cơ quan tin tức, người quản lý nội dung, blog hay thư mục có thể sử dụng công nghệ tự động này để phân loại và gắn thẻ nội dung sản phẩm. Sử dụng trong tự động hóa các tác vụ CRM (Customer relationship management). Trình phân loại văn bản có khả năng tùy biến cao và có thể được đào tạo phù hợp. Các nhiệm vụ CRM có thể được chỉ định và phân tích trực tiếp dựa trên tầm quan trọng và mức độ phù hợp. Giúp giảm thiểu công việc thủ công hiệu quả về thời gian. Tối ưu hóa SEO. Tự động hóa gắn thẻ nội dung trên các trang web và giúp người dùng tốt hơn, giúp các nhà tiếp thị nghiên cứu phân tích thẻ nhãn dán giúp tiếp cận người dùng hay nâng cao khả năng cạnh tranh cho các sản phẩm của họ. CHƯƠNG 2: CÁC CÔNG NGHỆ ĐƯỢC SỬ DỤNG 2.1. Python Python là ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do GuiDo và Rossum tạo ra lần đầu vào năm 1991. Python được thiết kế với các ưu điểm mạnh mẽ, dễ học, dễ nhớ. Python là ngôn ngữ lập trình có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới bắt đầu học lập trình được dùng rộng rãi trong năm 2018 và tới bây giờ. Python hoàn toàn tạo kiểu tự động và dùng cơ chế cấp phát bộ nhớ tự động, do đó nó tương tự như Perl, Ruby, Scheme, Smalltalk và TCl. Hiện nay Python được hoạt động trên đa nền tảng từ MSDOS đến MAC OS, Windows, Linux và các hệ điều hành khác thuộc nền tảng Unix. 2.2. Thư viện Python Thư viện được sử dụng trong bài toán: underthesea , regex Thư viện Regex (regular expression) là một chuỗi ký tự đặc biệt dùng để mô tả một mẫu tìm kiếm search pattern. Nó rất hữu dụng không chỉ trong việc tìm kiếm xâu mà còn trong xử lý văn bản. Một regex là một hoặc nhiều nhánh không rỗng được phân cách bởi các kí tự |. Regex sẽ khớp với bất kì một trong các nhánh của nó. Thư viện Underthesea: là thư viện và hướng dẫn mã nguồn mở trong xử lý ngôn ngữ tự nhiên tiếng Việt đo chính chuyên gia trong lĩnh vực Python Việt Nam sáng tạo. Underthesea hỗ trợ người dùng trong việc phân tách từ chuỗi xâu kí tự thành các từ ngữ tự nhiên đúng hoàn cảnh mà không làm mất đi tính đúng đắn của chuỗi xâu đó. 2.3. Thuật toán Naive Bayes Thuật toán Naive Bayes(NBC) là thuật toán dựa trên định lý Bayes về lý thuyết xác suất để đưa ra các phán đoán cũng như phân loại dữ liệu dựa trên các dự liệu được quan sát và thống kê, được ứng dụng rất nhiều trong các lĩnh vực Machine Learning dùng để đưa ra các dự đoán có độ chính xác cao, dựa trên dữ liệu được thu nhập. NBC thuộc nhóm học máy có giám sát. Định lý Bayes. Định lý Bayes cho phép tính xác suất xảy ra của sự kiện ngẫu nhiên A khi biết được sự kiện liên quan B đã xảy ra. Xác suất này được kí hiệu là P(A|B), được hiểu là xác suất của A nếu có B. Đại lượng này được gọi xác suất có điều kiện hay xác suất hậu nghiệm vì nó được rút ra từ các giá trị được cho của B hoặc phụ thuộc vào giá trị nào đó. Theo định lý Bayes, P(A|B) sẽ phụ thuộc vào 3 yếu tố: Xác suất xảy ra A của riêng nó, không quan tâm tới B. Kí hiệu P(A). Xác suất xảy ra B của riêng nó, không quan tâm tới A. Kí hiệu P(B). Xác suất xảy ra B khi biết A xảy ra. Kí hiệu P(B|A). Đại lượng này gọi là khả năng (likelihood) xảy ra B khi biết A xảy ra. Chính vì vậy ta có định lý Bayes mở rộng: Trên thực tế thì ít khi tìm được dữ liệu mà các thành phần của nó độc lập với nhau. Tuy nhiên giả thiết này giúp cách tính toán trở nên đơn giản, train data nhanh. 2.4. Ứng dụng thuật toán Bayes. Thuật toán được sử dụng các ứng dụng sau Text classification Spam Filtering Sentiment Analysis: Phân loại văn bản hay ngôn ngữ tự nhiên. Ngoài ra thì hệ thống chống thư rác cũng rất hay được sử dụng. Recommendation System: Xây dựng hệ thống gợi ý. Real time Prediction: Hệ thống cảnh báo sự cố theo thời gian thực. Multi class Prediction: ứng dụng đa dự đoán dựa trên nhiều giải thiết mục tiêu. 2.5. Google Collab Google Collab là 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, phù hợp với Data analysis, machine learning và giáo dục. Collab không yêu cầu cài đặt cấu hình máy tính mọi thứ đều chạy qua trình duyệt, bạn có thể sử dụng tài nguyên từ CPU, GPU tốc độ cao đều được Google cung cấp cho bạn. Collab cung cấp nhiều loại GPU thường dùng Nvidia K80s, T4s, P4s,.... Tuy có nhiều GPU những người dùng không được lựa chọn sử dụng mà nó thay đổi theo thời gian thực thi. Vì là dịch vụ miễn phí nên Colab sẽ có thứ tự ưu tiên trong việc sử dụng tài nguyên hệ thống hay thời hạn sử dụng tối đa 12hngày. CHƯƠNG 3: DỮ LIỆU VÀ QUY TRÌNH XỬ LÝ. 3.1. Dữ liệu. Dữ liệu là yếu tố quan trọng nhất và cũng là các vấn đề mà chúng ta cần quan tâm tới. Trong bất kỳ xây dựng một mô hình dữ liệu nào bước chuẩn bị dữ liệu đề quan trọng dẫn tới thành bại của quá trình xây dựng. Với bài toán phân loại dán nhãn văn bản tiếng Việt, dữ liệu mà chúng ta cần chuẩn bị là các dữ liệu bài báo tiếng việt kèm theo các chủ đề của nó. Loại dữ liệu này dễ tìm kiếm thông qua việc truy cập các website tin tức của báo chí chính thống sẽ có rất rất nhiều. Trong bài toán này ta sử dụng nguồn dữ liệu từ: Vương Quốc Bình Giảng Viên Đại học Công Nghiệp Hà Nội Github: https:github.combinhvq Cong Duy Vu Hoang Nhà nghiên cứu ứng dụng tại Oracle Github: https:github.comduyvuleo Dữ liệu đã qua xử lý đồng bộ từ thu nhập cá nhân Link: Google Drive. Đây là nguồn dữ liệu có thể dược dùng trong bài toán này. 3.2. Quy trình xử lý ● Download dữ liệu đầu vào ● Xử lý dữ liệu cần được phân loại gắn nhãn ● TrainTest Model bằng thuật toán Naive Bayes ● Xử lý dữ liệu mà người dùng muốn gắn nhãn. 3.2.1. Download và xử lý dữ liệu dành cho traintest Model Bước 1: Giải nén Google Drive trên Colab. Hình 3: Giải nén Google Drive vào Google Colab Bước 2: Tìm kiếm link của dữ liệu trên Colab. Hình 4: Lấy link dữ liệu cần train từ Google Colab. Bước 3: Giải nén dữ liệu Hình 5: Giải nén dữ liệu từ link Google Colab. Bước 4: Xác định xem giải nén thành công và dữ liệu tồn tại trong trường trình Hình 6: Xác định tồn tại dữ liệu. Bước 5: Thống kê số lượng dữ liệu data theo Hình7: Thống kế data theo nhãn. Bước 6: Thống kê các từ (word) tồn tại tất cả các nhãn. Hình 8: Thống kê các từ tổn tại trong tất cả các nhãn Bước 7: Loại bỏ các từ stopword và lưu file. Stopword: là các từ ngữ bị một số công cụ tìm kiếm bỏ qua một phần hoặc hoàn toàn. VD: a, of, many, ... chiếm khoảng 25% trong các bài viết. Bởi vì các từ ngữ này không liên quan gì tới nội dung và ý nghĩa của các bài viết. Hình 9: Loại bỏ các StopWord Bước 8: Chia các tập để TrainTest dữ liệu Hình 10: Chia tập traintest Bước 9: Lưu traintest thành các file traintest Hình 11: Lưu các file TrainTest Bước 10: Khởi tạo đường dẫn Model vào chương trình Hình 12: Khởi tạo đường dẫn Model Bước 11: Khai thác thuật toán Naive Bayes Link hỗ trợ: sklearn.naive_bayes.MultinomialNB — scikitlearn 1.0.1 documentation Hình 13: Thuật toán Naive Bayes Bước 12: Hiển thị kết quả sau khi áp dụng thuật toán vào các tập traintest Hình 14: Kết quả của quá trình TrainTest. 3.2.2. Xử lý dữ liệu cần phân loại gắn nhãn Là dữ liệu mà người dùng muốn phân loại gắn nhãn cho bài viết. Bước 1: Cài đặt thư viện Hình 16: Các thư viện. Bước 2: Khai báo và sử dụng các class. Hình 17: Khai báo class cần được sử dụng. Bước 3: Khai báo các từ ngữ tiếng việt chứa dấu Hình 18: Khai báo các âm tiếng việt có dấu. Bước 4: Hàm Unicode dựng sẵn về Unicode tổ hợp phù hợp tiếng Việt Hình 19: Chuyển về Unicode chuẩn. Bước 5: Khai báo nguyên ấm trong tiếng Việt và chuẩn dấu. Hình 20: Nguyên và dấu của chúng tiếng Việt. Bước 6: Kiểm tra xem có phải tiếng Việt. Hình 21: Check tiếng Việt. Bước 7: Chuẩn hóa dấu câu tiếng Việt Hình 22: Chuẩn hóa dấu câu trong tiếng Việt. Bước 8: Xác định các hàm xử lý chuỗi nhập vào. Hình 23: Hàm Main xử lý chuỗi Bước 9: Xây dựng sự lựa chọn nhập dữ liệu từ bàn phím Hình 24: Nhập dữ liệu từ bàn phím Bước 10: Xây dựng upload dữ liệu Hình 25: Upload dữ liệu Bước 11: Tạo sự lựa chọn giữa việc nhập và upload dữ liệu cần được phân loại Hình 26: Lựa chọn cách phân loại văn bản Insign Bước 12: Nhập dữ liệu cần phân loại gắn nhãn văn bản. Hình 27: Phân loại văn bản CHƯƠNG IV: ĐÁNH GIÁ 4.1. Python. Là một ngôn ngữ lập trình đơn giản, dễ học. Nó giúp việc lập trình trở nên thú vụ và cho phép bạn tập trung nhiều vào giải pháp chứ không phải cú pháp Một mã nguồn mở đáng tin cậy cùng với cộng đồng rộng lớn không ngừng cải thiện và cập nhật Khả năng di động linh hoạt, có thể mở rộng. Chính vì vậy mà Python là một ngôn ngữ thu hút được vô số sự chú ý của các lập trình viên và trở thành con cưng của các lập trình viên hiện tại và tương lai. 4.2. Thư viện Underthesea. Là một thư viện mở rộng và đang phát triển của những lập trình viên Việt Nam giúp ích cho các lập trình viên hiện tại và tương lai có các xử lý dữ liệu, huấn luyện và đánh giá mô hình tiếng Việt một cách hiệu quả và dễ dàng. 4.3. Thuật toán Naive Bayes. Mô hình phân lớp đơn giản dễ cài đặt, có tốc độ xử lý nhanh. Song vẫn có nhược điểm lớn là yêu cầu các đặc trưng phải độc lập mà điều này rất khó xảy ra trong thực tế để giảm chất lượng của mô hình. Dù có điểm rất hạn chế sóng vẫn thích hợp cho mọi người bắt đầu hướng về ngành AI, Machine Learning. Thuật toán này cũng rất hay được sử dụng để phân tích sắc thái học, lọc thư rác, hệ thống gợi ý,.. TÀI LIỆU THAM KHẢO Vương Quốc Bình Giảng Viên Đại học Công Nghiệp Hà Nội Github: https:github.combinhvq Cong Duy Vu Hoang nhà nghiên cứu ứng dụng tải Oracle Github: https:github.comduyvuleo Website Python. Website: Python Tutorial (w3schools.com) Thư viện Underthesea Link: http:undertheseanlp.com Thuật toán Naive Bayes Wiki: Định lý Bayes – Wikipedia tiếng Việt Model học máy Naive Bayes Link: sklearn.naive_bayes.MultinomialNB — scikitlearn 1.0.1 documentation TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ============ BÁO CÁO THỰC NGHIỆM HỌC PHẦN: MỘT SỐ CÔNG NGHỆ PHẦN MỀM Đề tài: PHÂN LOẠI TIẾNG VIỆT SỬ DỤNG MACHINE LEARNING GVHD : TS. Hà Mạnh Đào Lớp : 20221IT6024003 Nhóm : 5 Thành viên : Vũ Trọng Tuấn – 2019601439 Nguyễn Minh Vũ – 2019601491 Nguyễn Văn Thành 2019600414 Hà Nội, 2022 MỤC LỤC MỤC LỤC 1 LỜI NÓI ĐẦU 2 CHƯƠNG 1. TỔNG QUAN 4 1.1. Mục đích nghiên cứu. 4 1.2. Đối tượng hướng tới. 4 1.3. Ứng dụng 4 CHƯƠNG 2: CÁC CÔNG NGHỆ ĐƯỢC SỬ DỤNG 5 2.1. Python 5 2.2. Thư viện Python 5 2.3. Thuật toán Naive Bayes 6 2.5. Google Collab 7 CHƯƠNG 3: DỮ LIỆU VÀ QUY TRÌNH XỬ LÝ. 8 3.1. Dữ liệu. 8 3.2. Quy trình xử lý 8 3.2.1. Download và xử lý dữ liệu dành cho traintest Model 9 3.2.2. Xử lý dữ liệu cần phân loại gắn nhãn 16 CHƯƠNG IV: ĐÁNH GIÁ 21 4.1. Python. 21 4.2. Thư viện Underthesea. 21 4.3. Thuật toán Naive Bayes. 21 TÀI LIỆU THAM KHẢO 22 LỜI NÓI ĐẦU Trong thời đại công nghệ thông tin hiện nay, thông tin có tầm quan trọng đặc biệt trong việc giải quyết các vấn đề của cuộc sống, công việc. V.I.Lênin khẳng định: Không có thông tin thì không có thắng lợi trong bất cứ lĩnh vực nào, cả khoa học kỹ thuật và sản xuất. Muốn ra được quyết định đúng, hay thông tin chính xác nhất thiết phải có đủ thông tin cần thiết, chính xác, khách quan, công việc mới có thể giải quyết được đúng quy định, hợp lý và hiệu quả Nhận thấy điều quan trọng đó nhóm 5 tụi em và sự hướng dẫn nhiệt tình tới từ thầy giáo hướng dẫn Hà Mạnh Đào đã đi vào phân loại các loại gắn nhãn văn bản Tiếng Việt nhằm mục đích gắn nhãn cho chúng đề chúng phù hợp với các thông tin trong bài viết đã được đưa ra. Nhóm em xin chân trọng cảm ơn PHÂN CÔNG CÔNG VIỆCKẾ HOẠCH DỰ KIẾN STT Thành viên Công việc Thời gian Ghi chú 1 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Kết nối sử dụng GG Collab Tìm hiểu về đề tài Đối tượng và lợi ích có thể đạt được Phân tích và lên kế hoạch 2 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Xử lý dữ liệu 3 Vũ Trọng Tuấn Xây dựng mô hình 4 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Nhận nhận xét từ thầy cô và sửa đổi 5 Vũ Trọng Tuấn Nguyễn Minh Vũ Nguyễn Văn Thành Chạy và đánh giá chương trình CHƯƠNG 1. TỔNG QUAN 1.1. Mục đích nghiên cứu. Trong quá trình viết bài của các nhà báo, blogger, nhà sáng tạo nội dung hay đơn giản chỉ là các quản trị viên upload các bài viết lên một trang web hoặc một mạng xã hội nào đó thì việc gắn nhãn cho bài viết đó như thế nào để hướng tới người đọc trong khi có nhiều nội dung được đan xen với nhau trong bài viết được tạo ra. Chính vì thế mà mục đích của đề tài này ra đời nhằm giải quyết việc phân loại dán nhãn cho bài viết trước khi chúng được xuất bản đăng tải. 1.2. Đối tượng hướng tới. Tất cả các loại văn bản được viết sử dụng ngôn ngữ tiếng Việt của chúng ta hiện nay: kinh tế, xã hội, thể thao, ..... Khi đó ứng với mỗi bài viết chúng ta cần gắn nhãn cho chúng với chủ đề nào đó mà đôi khi ta tưởng chừng như đơn giản mà lại khó khăn. 1.3. Ứng dụng Gắn thẻ nội dung hoặc sản phẩm: bằng cách sử dụng danh mục như cách để cải thiện trình duyệt hoặc để xác định nội dung liên quan trên các trang web của bạn. Các nền tảng như thương mại điện tử, cơ quan tin tức, người quản lý nội dung, blog hay thư mục có thể sử dụng công nghệ tự động này để phân loại và gắn thẻ nội dung sản phẩm. Sử dụng trong tự động hóa các tác vụ CRM (Customer relationship management). Trình phân loại văn bản có khả năng tùy biến cao và có thể được đào tạo phù hợp. Các nhiệm vụ CRM có thể được chỉ định và phân tích trực tiếp dựa trên tầm quan trọng và mức độ phù hợp. Giúp giảm thiểu công việc thủ công hiệu quả về thời gian. Tối ưu hóa SEO. Tự động hóa gắn thẻ nội dung trên các trang web và giúp người dùng tốt hơn, giúp các nhà tiếp thị nghiên cứu phân tích thẻ nhãn dán giúp tiếp cận người dùng hay nâng cao khả năng cạnh tranh cho các sản phẩm của họ. CHƯƠNG 2: CÁC CÔNG NGHỆ ĐƯỢC SỬ DỤNG 2.1. Python Python là ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do GuiDo và Rossum tạo ra lần đầu vào năm 1991. Python được thiết kế với các ưu điểm mạnh mẽ, dễ học, dễ nhớ. Python là ngôn ngữ lập trình có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới bắt đầu học lập trình được dùng rộng rãi trong năm 2018 và tới bây giờ. Python hoàn toàn tạo kiểu tự động và dùng cơ chế cấp phát bộ nhớ tự động, do đó nó tương tự như Perl, Ruby, Scheme, Smalltalk và TCl. Hiện nay Python được hoạt động trên đa nền tảng từ MSDOS đến MAC OS, Windows, Linux và các hệ điều hành khác thuộc nền tảng Unix. 2.2. Thư viện Python Thư viện được sử dụng trong bài toán: underthesea , regex Thư viện Regex (regular expression) là một chuỗi ký tự đặc biệt dùng để mô tả một mẫu tìm kiếm search pattern. Nó rất hữu dụng không chỉ trong việc tìm kiếm xâu mà còn trong xử lý văn bản. Một regex là một hoặc nhiều nhánh không rỗng được phân cách bởi các kí tự |. Regex sẽ khớp với bất kì một trong các nhánh của nó. Thư viện Underthesea: là thư viện và hướng dẫn mã nguồn mở trong xử lý ngôn ngữ tự nhiên tiếng Việt đo chính chuyên gia trong lĩnh vực Python Việt Nam sáng tạo. Underthesea hỗ trợ người dùng trong việc phân tách từ chuỗi xâu kí tự thành các từ ngữ tự nhiên đúng hoàn cảnh mà không làm mất đi tính đúng đắn của chuỗi xâu đó. 2.3. Thuật toán Naive Bayes Thuật toán Naive Bayes(NBC) là thuật toán dựa trên định lý Bayes về lý thuyết xác suất để đưa ra các phán đoán cũng như phân loại dữ liệu dựa trên các dự liệu được quan sát và thống kê, được ứng dụng rất nhiều trong các lĩnh vực Machine Learning dùng để đưa ra các dự đoán có độ chính xác cao, dựa trên dữ liệu được thu nhập. NBC thuộc nhóm học máy có giám sát. Định lý Bayes. Định lý Bayes cho phép tính xác suất xảy ra của sự kiện ngẫu nhiên A khi biết được sự kiện liên quan B đã xảy ra. Xác suất này được kí hiệu là P(A|B), được hiểu là xác suất của A nếu có B. Đại lượng này được gọi xác suất có điều kiện hay xác suất hậu nghiệm vì nó được rút ra từ các giá trị được cho của B hoặc phụ thuộc vào giá trị nào đó. Theo định lý Bayes, P(A|B) sẽ phụ thuộc vào 3 yếu tố: Xác suất xảy ra A của riêng nó, không quan tâm tới B. Kí hiệu P(A). Xác suất xảy ra B của riêng nó, không quan tâm tới A. Kí hiệu P(B). Xác suất xảy ra B khi biết A xảy ra. Kí hiệu P(B|A). Đại lượng này gọi là khả năng (likelihood) xảy ra B khi biết A xảy ra. Chính vì vậy ta có định lý Bayes mở rộng: Trên thực tế thì ít khi tìm được dữ liệu mà các thành phần của nó độc lập với nhau. Tuy nhiên giả thiết này giúp cách tính toán trở nên đơn giản, train data nhanh. 2.4. Ứng dụng thuật toán Bayes. Thuật toán được sử dụng các ứng dụng sau Text classification Spam Filtering Sentiment Analysis: Phân loại văn bản hay ngôn ngữ tự nhiên. Ngoài ra thì hệ thống chống thư rác cũng rất hay được sử dụng. Recommendation System: Xây dựng hệ thống gợi ý. Real time Prediction: Hệ thống cảnh báo sự cố theo thời gian thực. Multi class Prediction: ứng dụng đa dự đoán dựa trên nhiều giải thiết mục tiêu. 2.5. Google Collab Google Collab là 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, phù hợp với Data analysis, machine learning và giáo dục. Collab không yêu cầu cài đặt cấu hình máy tính mọi thứ đều chạy qua trình duyệt, bạn có thể sử dụng tài nguyên từ CPU, GPU tốc độ cao đều được Google cung cấp cho bạn.
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
Hà Nội, 2022
Trang 3MỤC LỤC
3
Trang 4LỜI NÓI ĐẦU
Trong thời đại công nghệ thông tin hiện nay, thông tin có tầm quan trọngđặc biệt trong việc giải quyết các vấn đề của cuộc sống, công việc V.I.Lêninkhẳng định: "Không có thông tin thì không có thắng lợi trong bất cứ lĩnh vựcnào, cả khoa học kỹ thuật và sản xuất"
Muốn ra được quyết định đúng, hay thông tin chính xác nhất thiết phải có
đủ thông tin cần thiết, chính xác, khách quan, công việc mới có thể giải quyếtđược đúng quy định, hợp lý và hiệu quả
Nhận thấy điều quan trọng đó nhóm 5 tụi em và sự hướng dẫn nhiệt tìnhtới từ thầy giáo hướng dẫn Hà Mạnh Đào đã đi vào phân loại các loại gắn nhãnvăn bản Tiếng Việt nhằm mục đích gắn nhãn cho chúng đề chúng phù hợp vớicác thông tin trong bài viết đã được đưa ra
Nhóm em xin chân trọng cảm ơn!
Trang 5PHÂN CÔNG CÔNG VIỆC/KẾ HOẠCH DỰ KIẾN
Đối tượng và lợi ích có thể đạt được
Phân tích và lên kế hoạch
Trang 6CHƯƠNG 1 TỔNG QUAN1.1 Mục đích nghiên cứu.
Trong quá trình viết bài của các nhà báo, blogger, nhà sáng tạo nội dunghay đơn giản chỉ là các quản trị viên upload các bài viết lên một trang web hoặcmột mạng xã hội nào đó thì việc gắn nhãn cho bài viết đó như thế nào để hướngtới người đọc trong khi có nhiều nội dung được đan xen với nhau trong bài viếtđược tạo ra
Chính vì thế mà mục đích của đề tài này ra đời nhằm giải quyết việc phânloại dán nhãn cho bài viết trước khi chúng được xuất bản đăng tải
1.2 Đối tượng hướng tới.
Tất cả các loại văn bản được viết sử dụng ngôn ngữ tiếng Việt của chúng
ta hiện nay: kinh tế, xã hội, thể thao, Khi đó ứng với mỗi bài viết chúng tacần gắn nhãn cho chúng với chủ đề nào đó mà đôi khi ta tưởng chừng như đơngiản mà lại khó khăn
1.3 Ứng dụng
Gắn thẻ nội dung hoặc sản phẩm: bằng cách sử dụng danh mục như cách
để cải thiện trình duyệt hoặc để xác định nội dung liên quan trên các trang webcủa bạn Các nền tảng như thương mại điện tử, cơ quan tin tức, người quản lýnội dung, blog hay thư mục có thể sử dụng công nghệ tự động này để phân loại
và gắn thẻ nội dung sản phẩm
Sử dụng trong tự động hóa các tác vụ CRM (Customer relationshipmanagement) Trình phân loại văn bản có khả năng tùy biến cao và có thể đượcđào tạo phù hợp Các nhiệm vụ CRM có thể được chỉ định và phân tích trực tiếpdựa trên tầm quan trọng và mức độ phù hợp Giúp giảm thiểu công việc thủcông hiệu quả về thời gian
Tối ưu hóa SEO Tự động hóa gắn thẻ nội dung trên các trang web và
Trang 7giúp người dùng tốt hơn, giúp các nhà tiếp thị nghiên cứu phân tích thẻ nhãndán giúp tiếp cận người dùng hay nâng cao khả năng cạnh tranh cho các sảnphẩm của họ.
Trang 8CHƯƠNG 2: CÁC CÔNG NGHỆ ĐƯỢC SỬ DỤNG
2.1 Python
Python là ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng,
do GuiDo và Rossum tạo ra lần đầu vào năm 1991 Python được thiết kế với các
ưu điểm mạnh mẽ, dễ học, dễ nhớ
Python là ngôn ngữ lập trình có hình thức rất sáng sủa, cấu trúc rõ ràng,thuận tiện cho người mới bắt đầu học lập trình được dùng rộng rãi trong năm
2018 và tới bây giờ
Python hoàn toàn tạo kiểu tự động và dùng cơ chế cấp phát bộ nhớ tựđộng, do đó nó tương tự như Perl, Ruby, Scheme, Smalltalk và TCl
Hiện nay Python được hoạt động trên đa nền tảng từ MS-DOS đến MAC
OS, Windows, Linux và các hệ điều hành khác thuộc nền tảng Unix
2.2 Thư viện Python
Thư viện được sử dụng trong bài toán: underthesea , regex
Thư viện Regex (regular expression) là một chuỗi ký tự đặc biệt dùng để
mô tả một mẫu tìm kiếm search pattern Nó rất hữu dụng không chỉ trong việctìm kiếm xâu mà còn trong xử lý văn bản
Một regex là một hoặc nhiều nhánh không rỗng được phân cách bởi các kí
tự "|" Regex sẽ khớp với bất kì một trong các nhánh của nó
Thư viện Underthesea: là thư viện và hướng dẫn mã nguồn mở trong xử
lý ngôn ngữ tự nhiên tiếng Việt đo chính chuyên gia trong lĩnh vực Python ViệtNam sáng tạo
Underthesea hỗ trợ người dùng trong việc phân tách từ chuỗi xâu kí tựthành các từ ngữ tự nhiên đúng hoàn cảnh mà không làm mất đi tính đúng đắncủa chuỗi xâu đó
Trang 92.3 Thuật toán Naive Bayes
Thuật toán Naive Bayes(NBC) là thuật toán dựa trên định lý Bayes về lýthuyết xác suất để đưa ra các phán đoán cũng như phân loại dữ liệu dựa trên các
dự liệu được quan sát và thống kê, được ứng dụng rất nhiều trong các lĩnh vựcMachine Learning dùng để đưa ra các dự đoán có độ chính xác cao, dựa trên dữliệu được thu nhập NBC thuộc nhóm học máy có giám sát
Định lý Bayes.
Định lý Bayes cho phép tính xác suất xảy ra của sự kiện ngẫu nhiên A khibiết được sự kiện liên quan B đã xảy ra Xác suất này được kí hiệu là P(A|B),được hiểu là "xác suất của A nếu có B" Đại lượng này được gọi xác suất có điềukiện hay xác suất hậu nghiệm vì nó được rút ra từ các giá trị được cho của Bhoặc phụ thuộc vào giá trị nào đó
Theo định lý Bayes, P(A|B) sẽ phụ thuộc vào 3 yếu tố:
Xác suất xảy ra A của riêng nó, không quan tâm tới B Kí hiệu P(A)
Xác suất xảy ra B của riêng nó, không quan tâm tới A Kí hiệu P(B)
Xác suất xảy ra B khi biết A xảy ra Kí hiệu P(B|A) Đại lượng này gọi làkhả năng (likelihood) xảy ra B khi biết A xảy ra
Chính vì vậy ta có định lý Bayes mở rộng:
Trên thực tế thì ít khi tìm được dữ liệu mà các thành phần của nó độc lậpvới nhau Tuy nhiên giả thiết này giúp cách tính toán trở nên đơn giản, train datanhanh
2.4 Ứng dụng thuật toán Bayes.
Thuật toán được sử dụng các ứng dụng sau
Text classification / Spam Filtering/ Sentiment Analysis: Phân loại vănbản hay ngôn ngữ tự nhiên Ngoài ra thì hệ thống chống thư rác cũng rất hay
Trang 10được sử dụng.
Recommendation System: Xây dựng hệ thống gợi ý
Real time Prediction: Hệ thống cảnh báo sự cố theo thời gian thực
Multi class Prediction: ứng dụng đa dự đoán dựa trên nhiều giải thiết mụctiêu
2.5 Google Collab
Google Collab là sản phẩm từ Google Research, nó cho phép chạy cácdòng code python thông qua trình duyệt, phù hợp với Data analysis, machinelearning và giáo dục Collab không yêu cầu cài đặt cấu hình máy tính mọi thứđều chạy qua trình duyệt, bạn có thể sử dụng tài nguyên từ CPU, GPU tốc độcao đều được Google cung cấp cho bạn
Collab cung cấp nhiều loại GPU thường dùng Nvidia K80s, T4s, P4s, Tuy có nhiều GPU những người dùng không được lựa chọn sử dụng mà nó thayđổi theo thời gian thực thi Vì là dịch vụ miễn phí nên Colab sẽ có thứ tự ưu tiêntrong việc sử dụng tài nguyên hệ thống hay thời hạn sử dụng tối đa 12h/ngày
Trang 11CHƯƠNG 3: DỮ LIỆU VÀ QUY TRÌNH XỬ LÝ.
3.1 Dữ liệu.
Dữ liệu là yếu tố quan trọng nhất và cũng là các vấn đề mà chúng ta cầnquan tâm tới Trong bất kỳ xây dựng một mô hình dữ liệu nào bước chuẩn bị dữliệu đề quan trọng dẫn tới thành bại của quá trình xây dựng
Với bài toán phân loại dán nhãn văn bản tiếng Việt, dữ liệu mà chúng tacần chuẩn bị là các dữ liệu bài báo tiếng việt kèm theo các chủ đề của nó
Loại dữ liệu này dễ tìm kiếm thông qua việc truy cập các website tin tứccủa báo chí chính thống sẽ có rất rất nhiều
Trong bài toán này ta sử dụng nguồn dữ liệu từ:
Vương Quốc Bình - Giảng Viên Đại học Công Nghiệp Hà Nội
Github: https://github.com/binhvq
Cong Duy Vu Hoang - Nhà nghiên cứu ứng dụng tại Oracle
Github: https://github.com/duyvuleo
Dữ liệu đã qua xử lý đồng bộ từ thu nhập cá nhân
Link: Google Drive
Đây là nguồn dữ liệu có thể dược dùng trong bài toán này
3.2 Quy trình xử lý
● Download dữ liệu đầu vào
● Xử lý dữ liệu cần được phân loại gắn nhãn
● Train/Test Model bằng thuật toán Naive Bayes
● Xử lý dữ liệu mà người dùng muốn gắn nhãn
Trang 123.2.1 Download và xử lý dữ liệu dành cho train/test Model
Bước 1: Giải nén Google Drive trên Colab
Hình 3: Giải nén Google Drive vào Google ColabBước 2: Tìm kiếm link của dữ liệu trên Colab
Hình 4: Lấy link dữ liệu cần train từ Google Colab
Trang 13Bước 3: Giải nén dữ liệu
Hình 5: Giải nén dữ liệu từ link Google Colab
Bước 4: Xác định xem giải nén thành công và dữ liệu tồn tại trong trường trình
Hình 6: Xác định tồn tại dữ liệu
Trang 14Bước 5: Thống kê số lượng dữ liệu data theo
Hình7: Thống kế data theo nhãn
Trang 15Bước 6: Thống kê các từ (word) tồn tại tất cả các nhãn.
Hình 8: Thống kê các từ tổn tại trong tất cả các nhãn
Bước 7: Loại bỏ các từ stop-word và lưu file
Stopword: là các từ ngữ bị một số công cụ tìm kiếm bỏ qua một phần hoặc hoàn toàn VD: "a, of, many, " chiếm khoảng 25% trong các bài viết Bởi vì các từ ngữ này không liên quan gì tới nội dung và ý nghĩa của các bài viết
Hình 9: Loại bỏ các StopWord
Trang 16Bước 8: Chia các tập để Train/Test dữ liệu
Hình 10: Chia tập train/testBước 9: Lưu train/test thành các file train/test
Hình 11: Lưu các file Train/Test
Trang 17Bước 10: Khởi tạo đường dẫn Model vào chương trình
Hình 12: Khởi tạo đường dẫn Model
Bước 11: Khai thác thuật toán Naive Bayes
Link hỗ trợ:sklearn.naive_bayes.MultinomialNB — scikit-learn 1.0.1 documentation
Hình 13: Thuật toán Naive Bayes
Trang 18Bước 12: Hiển thị kết quả sau khi áp dụng thuật toán vào các tập train/test
Hình 14: Kết quả của quá trình Train/Test
Trang 193.2.2 Xử lý dữ liệu cần phân loại gắn nhãn
Là dữ liệu mà người dùng muốn phân loại gắn nhãn cho bài viết.Bước 1: Cài đặt thư viện
Hình 16: Các thư viện
Bước 2: Khai báo và sử dụng các class
Hình 17: Khai báo class cần được sử dụng
Bước 3: Khai báo các từ ngữ tiếng việt chứa dấu
Hình 18: Khai báo các âm tiếng việt có dấu
Trang 20Bước 4: Hàm Unicode dựng sẵn về Unicode tổ hợp phù hợp tiếng Việt
Hình 19: Chuyển về Unicode chuẩn
Bước 5: Khai báo nguyên ấm trong tiếng Việt và chuẩn dấu
Hình 20: Nguyên và dấu của chúng tiếng Việt
Bước 6: Kiểm tra xem có phải tiếng Việt
Hình 21: Check tiếng Việt
Trang 21Bước 7: Chuẩn hóa dấu câu tiếng Việt
Hình 22: Chuẩn hóa dấu câu trong tiếng Việt.Bước 8: Xác định các hàm xử lý chuỗi nhập vào
Hình 23: Hàm Main xử lý chuỗi
Trang 22Bước 9: Xây dựng sự lựa chọn nhập dữ liệu từ bàn phím
Hình 24: Nhập dữ liệu từ bàn phímBước 10: Xây dựng upload dữ liệu
Hình 25: Upload dữ liệuBước 11: Tạo sự lựa chọn giữa việc nhập và upload dữ liệu cần được phân loại
Hình 26: Lựa chọn cách phân loại văn bản Insign
Trang 23Bước 12: Nhập dữ liệu cần phân loại gắn nhãn văn bản.
Hình 27: Phân loại văn bản
Trang 24CHƯƠNG IV: ĐÁNH GIÁ
Khả năng di động linh hoạt, có thể mở rộng
Chính vì vậy mà Python là một ngôn ngữ thu hút được vô số sự chú ý củacác lập trình viên và trở thành con cưng của các lập trình viên hiện tại và tươnglai
4.2 Thư viện Underthesea.
Là một thư viện mở rộng và đang phát triển của những lập trình viên ViệtNam giúp ích cho các lập trình viên hiện tại và tương lai có các xử lý dữ liệu,huấn luyện và đánh giá mô hình tiếng Việt một cách hiệu quả và dễ dàng
4.3 Thuật toán Naive Bayes.
Mô hình phân lớp đơn giản dễ cài đặt, có tốc độ xử lý nhanh Song vẫn cónhược điểm lớn là yêu cầu các đặc trưng phải độc lập mà điều này rất khó xảy ratrong thực tế để giảm chất lượng của mô hình
Dù có điểm rất hạn chế sóng vẫn thích hợp cho mọi người bắt đầu hướng
về ngành AI, Machine Learning
Thuật toán này cũng rất hay được sử dụng để phân tích sắc thái học, lọcthư rác, hệ thống gợi ý,
Trang 25TÀI LIỆU THAM KHẢO
Vương Quốc Bình - Giảng Viên Đại học Công Nghiệp Hà Nội
Github: https://github.com/binhvq
Cong Duy Vu Hoang nhà nghiên cứu ứng dụng tải Oracle
Github: https://github.com/duyvuleo
Website Python
Website: Python Tutorial (w3schools.com)
Thư viện Underthesea
Link: http://undertheseanlp.com
Thuật toán Naive Bayes
Wiki: Định lý Bayes – Wikipedia tiếng Việt
Model học máy Naive Bayes
Link: sklearn.naive_bayes.MultinomialNB — scikit-learn 1.0.1 documentation