1. Trang chủ
  2. » Tất cả

PHÂN LOẠI TIẾNG VIỆT SỬ DỤNG MACHINE LEARNING

25 4 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Phân Loại Tiếng Việt Sử Dụng Machine Learning
Tác giả Vũ Trọng Tuấn, Nguyễn Minh Vũ, Nguyễn Văn Thành
Người hướng dẫn TS. Hà Mạnh Đào
Trường học Trường Đại Học Công Nghiệp Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Báo cáo thực hành
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 25
Dung lượng 446,09 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 2

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN

Hà Nội, 2022

Trang 3

MỤC LỤC

3

Trang 4

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ê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 5

PHÂ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 6

CHƯƠ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 7

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ã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 8

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ừ 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 9

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ự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 11

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ầ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 12

3.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 13

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

Trang 14

Bước 5: Thống kê số lượng dữ liệu data theo

Hình7: Thống kế data theo nhãn

Trang 15

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ừ 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 16

Bướ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 17

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 — scikit-learn 1.0.1 documentation

Hình 13: Thuật toán Naive Bayes

Trang 18

Bướ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 19

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

Trang 20

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

Trang 21

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

Trang 22

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í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 23

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

Trang 24

CHƯƠ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 25

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.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

Ngày đăng: 04/01/2023, 22:02

TÀI LIỆU CÙNG NGƯỜI DÙNG

w