Phân loại thư rác sử dụng naive bayes

38 142 4
Phân loại thư rác sử dụng naive bayes

Đ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

MỤC LỤC PHIẾU CHẤM ĐIỂM 3 DANH MỤC HÌNH ẢNH 7 LỜI MỞ ĐẦU 8 CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 9 1.1. GIỚI THIỆU VỀ CHUNG VỀ HỌC MÁY ( MACHINE LEARNING) 9 1.1.1. Trí tuệ nhân tạo (AI) là gì ? 9 1.1.2. Học máy (Machine Learning) là gì ? 9 1.1.3. Học sâu (Deep Learning) là gì ? 10 1.1.4. Phân nhóm các kỹ thuật trong Machine Learning 10 1.1.5. Các bước thực hiện Machine Learning 11 1.2. Định lý Bayes (Bayes’ Theorem) là gì ? 14 1.2.1. Xác xuất có điều kiện 14 1.2.2. Định lý Bayes 15 1.2.3. Bài toán Tuesday Child 16 1.3 Naive Bayes Classification (NBC) 18 1.3.1 Định nghĩa 18 1.3.2 Các mô hình thuật toán Naive Bayes 19 1.4. Kết luận 26 CHƯƠNG 2: PHÂN LOẠI THƯ RÁC BẰNG NBC 27 2.1 ĐẶT VẤN ĐỀ 27 2.2 BÀI TOÁN 28 2.3 Chuẩn bị dữ liệu (dataset) 28 2.4 Tiền xử lý dữ liệu (Preprocessing Data) 29 2.5 Trích xuất đặc trưng (Feature Extraction) 30 CHƯƠNG 3: XÂY DỰNG MÔ HÌNH, ĐÁNH GIÁ THỬ NGIỆM 36 3.1 Training and testing sets 36 3.2 Xử lý Bag of Words cho dataset 36 3.3 Thực thi Định lý Bayes 36 3.4 Đánh giá mô hình 37 3.5 Kết luận 38 3.6 Hướng phát triển 38 KẾT LUẬN 39 TÀI LIỆU THAM KHẢO 40   DANH MỤC HÌNH ẢNH Hình 1.1: Cây mô tả thuật toán quay lui 15 Hình 1.2: Hàm gen 16 Hình 1.3: Hàm xuất 16 Hình 1.4: Kết quả chạy chương trình liệt kê dãy nhị phân có đo dài n 17 Hình 1.5: Liệt kê hoán vị với n=3 18 Hình 1.6: Kết quả chạy chương trình liệt kê hoán vị tổ hợp 20 Hình 1.7: Kết quả chạy chương trình bài toán 8 quân hậu 26 Hình 2.1: Vị trí xuất phát của quân Mã trên bàn cờ 28 Hình 2.2: Nước đi của quân Mã 29 Hình 2.3: Mã ở rìa cũng giống như đồ trang trí 30 Hình 2.4: Các nước đi có thể có của ngựa 32 Hình 3.1: Kết quả đạt được với C++ 38 Hình 3.2: Giao diện khi chạy chương trình 44 Hình 3.3: Nhập kích thước bàn cờ và tạo bàn cờ 45 Hình 3.4: Chọn vị trí bắt đầu cho quân mã 46 Hình 3.5: Quân mã có đầy đủ 8 nước có thể đi 47 Hình 3.6: Quân mã ở cạnh bàn cờ có số nước đi ít hơn 48 Hình 3.7: Quân mã đang đi tuần 49 Hình 3.8: Kết quả cuối cùng 50   LỜI MỞ ĐẦU Trong cuộc sống với CNTT phát triển như ngày nay, giải quyết vấn đề thư rác vẫn là một vấn đề nan giải. Với sự nổi lên nhanh chóng của trí tuệ nhân tạo hiện nay, việc tiếp cận bằng học máy (machine learning) đã trở thành một thuật ngữ rất quen thuộc với mọi người. Học máy đã đang và sẽ được ứng dụng trong vô số ứng dụng hiện nay trong nhiều lĩnh vực như việc dự đoán rủi ro trong kinh tế, phân loại tin nhắn trong các công cụ như Gmail hay Yahoo hay gần đây là ứng dụng chẩn đoán bệnh trong y tế ,... Chính vì vậy chúng em đã đi đến việc lựa chọn đề tài “PHÂN LOẠI THƯ RÁC SỬ DỤNG NAIVE BAYES” cho bài tập lớn môn Nhập môn học máy. Chúng em vô cùng biết ơn thầy Đào Nam Anh, người trực tiếp giảng dạy, hướng dẫn nhiệt tình cho chúng em trong quá trình nghiên cứu và thực hiện đề tài. Mặc dù đề tài đã hoàn thành, nhưng chắc chắn vẫn không thể tránh khỏi những thiếu sót, vì vậy chúng em mong muốn nhận được các ý kiến đóng góp của các thầy cô để có thể hoàn thiện hơn nữa.

TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUN ĐỀ HỌC PHẦN NHẬP MƠN TRÍ TUỆ HỌC MÁY ĐỀ TÀI: PHÂN LOẠI THƯ RÁC SỬ DỤNG NAIVE BAYES Giảng viên hướng dẫn : ĐÀO NAM ANH Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : QUẢN TRỊ AN NINH MẠNG Khóa : 2018-2023 Hà Nội, tháng 10 năm 2020 TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN NHẬP MÔN HỌC MÁY ĐỀ TÀI: PHÂN LOẠI THƯ RÁC SỬ DỤNG NAIVE BAYES Giảng viên hướng dẫn : ĐÀO NAM ANH Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : QUẢN TRỊ AN NINH MẠNG Khóa : 2018-2023 Hà Nội, tháng 10 năm 2020 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: PHIẾU CHẤM ĐIỂM ST T Nội dung thực Điểm Chữ ký Giảng viên chấm: Họ tên Giảng viên chấm : Chữ ký Ghi Giảng viên chấm : MỤC LỤC PHIẾU CHẤM ĐIỂM DANH MỤC HÌNH ẢNH .7 LỜI MỞ ĐẦU CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 GIỚI THIỆU VỀ CHUNG VỀ HỌC MÁY ( MACHINE LEARNING) .9 1.1.1 Trí tuệ nhân tạo (AI) ? 1.1.2 Học máy (Machine Learning) ? 1.1.3 Học sâu (Deep Learning) ? 10 1.1.4 Phân nhóm kỹ thuật Machine Learning 10 1.1.5 Các bước thực Machine Learning 11 1.2 Định lý Bayes (Bayes’ Theorem) ? 14 1.2.1 Xác xuất có điều kiện 14 1.2.2 Định lý Bayes .15 1.2.3 Bài toán Tuesday Child 16 1.3 Naive Bayes Classification (NBC) 18 1.3.1 Định nghĩa 18 1.3.2 Các mơ hình thuật tốn Naive Bayes .19 1.4 Kết luận 26 CHƯƠNG 2: PHÂN LOẠI THƯ RÁC BẰNG NBC 27 2.1 ĐẶT VẤN ĐỀ 27 2.2 BÀI TOÁN 28 2.3 Chuẩn bị liệu (dataset) 28 2.4 Tiền xử lý liệu (Preprocessing Data) 29 2.5 Trích xuất đặc trưng (Feature Extraction) .30 CHƯƠNG 3: XÂY DỰNG MƠ HÌNH, ĐÁNH GIÁ THỬ NGIỆM .36 3.1 Training and testing sets 36 3.2 Xử lý Bag of Words cho dataset 36 3.3 Thực thi Định lý Bayes .36 3.4 Đánh giá mơ hình 37 3.5 Kết luận 38 3.6 Hướng phát triển .38 KẾT LUẬN 39 TÀI LIỆU THAM KHẢO 40 DANH MỤC HÌNH ẢNH Hình 1.1: Cây mơ tả thuật toán quay lui .15 Hình 1.2: Hàm gen 16 Hình 1.3: Hàm xuất 16 Hình 1.4: Kết chạy chương trình liệt kê dãy nhị phân có đo dài n 17 Hình 1.5: Liệt kê hốn vị với n=3 18 Hình 1.6: Kết chạy chương trình liệt kê hốn vị tổ hợp .20 Hình 1.7: Kết chạy chương trình tốn qn hậu 26 Hình 2.1: Vị trí xuất phát quân Mã bàn cờ 28 Hình 2.2: Nước quân Mã .29 Hình 2.3: Mã rìa giống đồ trang trí 30 Hình 2.4: Các nước có ngựa .32 Hình 3.1: Kết đạt với C++ .38 Hình 3.2: Giao diện chạy chương trình 44 Hình 3.3: Nhập kích thước bàn cờ tạo bàn cờ 45 Hình 3.4: Chọn vị trí bắt đầu cho quân mã 46 Hình 3.5: Qn mã có đầy đủ nước .47 Hình 3.6: Quân mã cạnh bàn cờ có số nước .48 Hình 3.7: Qn mã tuần 49 Hình 3.8: Kết cuối 50 LỜI MỞ ĐẦU Trong sống với CNTT phát triển ngày nay, giải vấn đề thư rác vấn đề nan giải Với lên nhanh chóng trí tuệ nhân tạo nay, việc tiếp cận học máy (machine learning) trở thành thuật ngữ quen thuộc với người Học máy ứng dụng vô số ứng dụng nhiều lĩnh vực việc dự đoán rủi ro kinh tế, phân loại tin nhắn công cụ Gmail hay Yahoo hay gần ứng dụng chẩn đoán bệnh y tế , Chính vì chúng em đến việc lựa chọn đề tài “PHÂN LOẠI THƯ RÁC SỬ DỤNG NAIVE BAYES” cho tập lớn môn Nhập môn học máy Chúng em vô biết ơn thầy Đào Nam Anh, người trực tiếp giảng dạy, hướng dẫn nhiệt tình cho chúng em trình nghiên cứu thực đề tài Mặc dù đề tài hồn thành, chắn khơng thể tránh khỏi thiếu sót, vì chúng em mong muốn nhận ý kiến đóng góp thầy để hồn thiện Chúng em xin chân thành cảm ơn! CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1.1 GIỚI THIỆU VỀ CHUNG VỀ HỌC MÁY ( MACHINE LEARNING) Biểu đồ cho ta thấy lịch sử phát triển mối quan hệ AI, Machine Learning Deep Learning 1.1.1 Trí tuệ nhân tạo (AI) ? Trí tuệ nhân tạo (AI) hiểu kỹ thuật giúp cho máy tính nói riêng máy móc nói chung có trí thơng minh khả nhận biết tương tác với hành động cụ thể người AI có lịch sử lâu đời, sử dụng rộng rãi sống Gần gũi có lẽ bot chế độ Single Player (chế độ đấu với máy) trò chơi điện tử mà hay chơi thuở bé Các bot thiết kế để nhận biết action người chơi game đưa action đáp trả lại 1.1.2 Học máy (Machine Learning) ? Học máy (Machine Learning - ML) mảng thuộc AI coi bước nâng cấp AI Trước tìm hiểu ML gì, ta nghĩ chút xem Học (Learning)? Học trình bao gồm: ghi nhớ (remembering), áp dụng (adapting), khái quát (generalising) Lấy ví dụ việc ta học Toán cấp 3, bắt đầu việc ghi nhớ công thức, tập mẫu, sau tự giải lại tập mẫu này, cuối dùng kiến thức để giải tập Việc học máy tính tương tự, mục tiêu ML muốn cho máy tính khơng ghi nhớ thực lệnh có sẵn, mà cịn khái qt vấn đề, từ giải tốn khơng lập trình sẵn Vậy máy tính học từ đâu? Học từ data Vì nói ML kỹ thuật thuộc ngành Khoa học liệu (Data Science) Quay trở lại ví dụ bot trị chơi điện tử Nếu bot cài đặt sử dụng ML, giả sử ban đầu ta chiến thắng bot dễ dàng, sau nhiều lần chơi, bot học cách chơi từ ta, từ phát kiến cách chơi để thắng ta, ta khơng thể thắng Chưa hết, bot cịn đem cách chơi học để thắng ta để đấu với người chơi Đó ví dụ việc khái quát 1.1.3 Học sâu (Deep Learning) ? Học sâu (Deep Learning - DL) kỹ thuật nằm Machine Learning, ý năm trở lại vì hiệu tính ứng dụng rộng rãi nhiều lĩnh vực Deep Learning tên gọi khác, bước phát triển Neural Network, kỹ thuật mô hoạt động não người Hầu hết tốn khó sử dụng DL Tuy DL giống não người, hoạt động black box khiến cho ta dễ dàng quan sát chế hoạt động 1.1.4 Phân nhóm kỹ thuật Machine Learning Có nhiều cách để phân nhóm kỹ thuật Machine Learning Các phân nhóm dựa phương pháp học  Học có giám sát (Supervised learning): Là phương pháp học dựa tập liệu có sẵn (gọi tập training) đáp án kết tập liệu (thường người ta hay gọi liệu dán nhãn) Dựa liệu training trên, máy tính khái qt hố thành thuật tốn, từ tìm kết cho đầu vào liệu Trong học có giám sát phân chia tiếp thành loại chính: Phân loại (Classification): nhãn dán liệu số hữu hạn Bài toán phân loại liệu cho nhãn có sẵn Ví dụ tốn phân loại thư rác, ta có nhãn: thư rác không Hồi quy (Regression): nhãn dán không chia thành nhóm mà liệu cụ thể Bài toán cần tìm giá trị cụ thể cho liệu Ví dụ tốn định giá nhà dựa thông số nhà diện tích, địa điểm…  Học khơng giám sát (Unsupervised learning): Là phương pháp học mà tập liệu training không dán nhãn Cách làm chủ yếu tìm điểm tương tự liệu từ phân nhóm liệu, tìm thành phần liệu Ví dụ tốn phân nhóm thư khiếu nại từ khách hàng  Học tăng cường (Reinforcement learning): Là phương pháp học nằm học có giám sát khơng có giám sát Kết đầu thuật toán đánh giá sai nhiên lại khơng có câu trả lời đáp án Máy tính cần thực tìm kiếm tất cách làm có thể, cách làm chấm điểm, từ tìm cách làm có điểm cao Ví dụ tốn máy tính học đánh cờ 1.1.5 Các bước thực Machine Learning Thực Machine Learning bao gồm bước sau:  Thu thập chuẩn bị liệu: Yếu tố ban đầu cần thiết để thực Machine Learning cần có liệu Dữ 10 Do ta phân loại E4 Not Spam (N) 1.4 Kết luận  Naive Bayes Classifiers (NBC) phương pháp cổ điển hữu dụng với toán định phân loại văn bản, email…  NBC với cơng thức tính tốn đơn giản nên dễ cài đặt (hiện dùng thư viện sklearn thì cần gọi vài dòng lệnh mình làm bên trên), thời gian training test nhanh, phù hợp với tốn data lớn  Nếu giả sử tính độc lập thoả mãn (dựa vào chất liệu), NBC cho cho kết tốt so với SVM logistic regression có liệu training  NBC hoạt động với feature vector mà phần liên tục (sử dụng Gaussian Naive Bayes), phần lại dạng rời rạc (sử dụng Multinomial Bernoulli)  Cần ý sử dụng Smoothing để tránh lỗi xác suất tổng xác suất feature thành phần  Độ xác Naive Bayes so với thuật tốn khác thì khơng cao  Trong giới thực, bất khả thi feature liệu test độc lập với 24 CHƯƠNG 2: PHÂN LOẠI THƯ RÁC BẰNG NBC 2.1 ĐẶT VẤN ĐỀ Thư rác bắt đầu gọi "spam" sau chương trình truyền hình có tên "Monty Python’s Flying Circus" Trong show truyền hình này, nhóm cướp biển Vikings vào ăn nhà hàng chuyên phục vụ đồ hộp (spam), hát toáng lên ca khúc lặp lặp lại chữ "quảng cáo" Ý nghĩa ban đầu thư rác rõ ràng: Một thứ lặp lặp lại gây bực tức, khó chịu cho người xung quanh Đó phạm vi hẹp cịn mơi trường internet khơng cịn khoảng cách địa lý thì có nhiều người phải chịu bực tức, cảnh nhàm chán gây ức chế tâm lý thời gian vào Phần lớn thư không mời mà đến, thư chào hàng quảng cáo bị cho thư rác theo nhận xét số đông người dùng thư điện tử Đây vấn đề nan giải mà hệ thống, hòm mail, nhà quản trị mạng phải đối mặt thời điểm mà xã hội thơng tin ngày phát triển với tốc độ chóng mặt Đe lọc phát thư rác, cần có giải pháp lâu dài biện pháp kĩ thuật, quy ước xã hội dùng đến pháp luật Nhưng giải pháp thi hành thì khoảng thời gian ngắn chúng bị phá vỡ spammer, nguyên nhân họ nghĩ bẫy đánh lừa người dùng hay lách luật mà tổ chức chống thư rác quy ước Như giải pháp ngăn chặn thư rác hiệu dùng lâu dài? Một phương pháp tốt để người dùng thư điện tô ngăn chặn thư rác, họ hiểu vấn đề cách tường minh Chúng ta dùng cảm nhận thư rác người để huấn luyện cho lọc thư rác họ Mỗi lọc xử lý thư rác tùy theo phong cách người dùng thư điện tử Và mô hình thống kê Bayes áp dụng để thực thi ý tưởng Từ đặc điểm trên, ta thấy việc xây dựng lọc thư rác thơng minh loại bỏ cách xác nhiệm vụ cịn nhiều thách thức 25 2.2 BÀI TOÁN Thư điện tử phương tiện để giao tiếp đáng tin cậy khơng tốn chi phí sử dụng Phạm vi sử dụng rộng khắp tồn giới dễ dàng truy cập hầu hết phương tiện truyền thông biến thành nạn nhân kẻ spam Hậu đơn giản làm tốn băng thông mạng nghiêm trọng làm thời gian người dùng thư điện tử, làm lan truyền vi rút máy tính Có thời điểm người ta thống kê có đến 60% thư điện tà thư rác ngày người dung thư điện tử phải nhận cú spam Chúng ta đổi địa hòm thư lần bị spam điều không hạn chế thư rác mà có cịn làm cho gia tăng Vậy cần phải tìm giải pháp chống thư rác sử dụng lọc gắn thuật toán phân loại với tính hiệu kĩ thuật đơn giản dễ cài đặt Và yêu cầu thiếu có với thuật tốn kẻ spam hiểu việc chúng cố tình spam vô dụng 2.3 Chuẩn bị liệu (dataset) Dữ liệu yếu tố quan trọng vấn đề mà cần quan tâm Trong trình xây dựng hệ thống phân loại văn bản, bước chuẩn bị tiền xử lý liệu định tới thành bại hệ thống Với toán phân loại thư rác, liệu bạn cần chuẩn bị liệu SMS (English) kèm theo phân loại Loại liệu nhìn chung dễ kiếm, vì có vơ số SMS gửi ngày Dữ liệu sử dụng báo cáo lấy từ kho UCI Machine Learning, nơi tập hợp nhiều tập liệu cho mục đích nghiên cứu thử nghiệm Liên kết liệu trực tiếp Mơ tả liệu: 26 Có tổng cộng 2 cột và các cột chưa hề được đặt tên Cột đầu tiên nhận hai giá trị, 'ham' có nghĩa là khơng phải là thư rác và 'spam' cho biết thư là thư rác Cột thứ hai là nội dung của tin nhắn SMS đang được phân loại 2.4 Tiền xử lý liệu (Preprocessing Data) Bước tiền xử lý liệu bước cần làm, cần làm trước bước feature extractor Việc tiền sử lý liệu trình chuẩn hóa liệu loại bỏ thành phần khơng có ý nghĩa cho việc phân loại thư rác Đây bước quan trọng để có kết tốt Bước tiền xử lý nhìn chung mô tả tóm tắt sau: Các quy tắc xử lý sau: Loại bỏ stop words: Những từ xuất thường xuyên ‘and’, ‘the’, ‘of’, … loại bỏ Nhưng xử lý tin nhắn SMS nguồn văn lớn e-mail, nên không cần làm bước Lemmatization (chuẩn hố từ): Những từ có ‘gốc’ đưa loại Ví dụ, ‘include’, ‘includes’, ‘included’ đưa chung ‘include’ Tất từ đưa dạng ký tự thường (không phải HOA) Loại bỏ non-words: Số, dấu câu, ký tự ‘tabs’, ký tự ‘xuống dòng’ loại bỏ Tách từ: 27 2.5 Trích xuất đặc trưng (Feature Extraction) Ở bước này, đưa liệu dạng văn xử lý dạng vector thuộc tính có dạng số học Dữ liệu chuẩn cần giữ đặc trưng liệu thô ban đầu, cần thiết kế để có phép biến đổi đặc trưng phù hợp Vậy với văn thì feature vector có dạng nào? Làm đưa từ, câu, đoạn văn dạng text văn vector mà phần tử số? Có phương pháp phổ biến giúp ta trả lời câu hỏi Phương pháp có tên Bag of Words (BoW) (Túi đựng Từ) Bag of Words Ta thấy tin có chứa từ khuyến mại, giảm giá, trúng thưởng, miễn phí, quà tặng, tri ân, … thì nhiều khả tin nhắn rác Vậy phương pháp đơn giản đếm xem tin có từ thuộc vào từ trên, nhiều ngưỡng thì ta định tin rác (Tất nhiên toán thực tế phức tạp nhiều từ viết dạng không dấu, bị cố tình viết sai tả, dùng ngơn ngữ teen) Với loại văn khác thì lượng từ liên quan tới chủ đề khác Từ dựa vào số lượng từ loại để làm vector đặc trưng cho văn Giả sử có hai văn đơn giản: (1) John likes to watch movies Mary likes movies too (2) John also likes to watch football games Dựa hai văn này, ta có danh sách từ sử dụng, gọi từ điển với 10 từ sau: 28 ["John", "likes", "to", "watch", "movies", "also", "football", "games", "Mary", "too"] Với văn bản, ta tạo vector đặc trưng có số chiều 10, phần tử đại diện cho số từ tương ứng xuất văn Với hai văn trên, ta có hai vector đặc trưng là: (1) [1, 2, 1, 1, 2, 0, 0, 0, 1, 1] (2) [1, 1, 1, 1, 0, 1, 1, 1, 0, 0] Văn (1) có từ “John”, từ “likes”, từ “also”, từ “football”, … nên ta thu vector tương ứng Có vài điều cần lưu ý BoW:  Với ứng dụng thực tế, từ điền có nhiều 10 từ nhiều, đến trăm nghìn triệu, vector đặc trưng thu dài Một văn có câu, tiểu thuyết nghìn trang biểu diễn vector có số chiều 100 nghìn triệu  Có nhiều từ từ điển khơng xuất văn Như vector đặc trưng thu thường có nhiều phần tử Các vector có nhiều phần tử gọi sparse vector (sparse hiểu theo nghĩa thưa thớt, rải rác, xin phép sử dụng khái niệm tiếng Anh) Để việc lưu trữ hiệu hơn, ta khơng lưu vector mà lưu vị trí phần tử khác giá trị tương ứng Lưu ý: có 50% số phần tử khác 0, việc làm lại phản tác dụng!  Thi thoảng có từ gặp không nằm từ điển, ta làm gì? Một cách thường dùng mở rộng vector đặc trưng thêm phần tử, gọi phẩn tử Mọi từ khơng có từ điền coi  Nghĩ kỹ chút, từ lại mang thông tin qua trọng mà loại văn có Đây nhược điểm BoW Có phương pháp cải tiến khác giúp khắc phục nhược điểm có tên Term Frequency-Inverse Document Frequency (TF-IDF) dùng để xác định tầm quan trọng từ văn dựa toàn văn sở liệu (corpus)  Nhược điểm lớn BoW khơng mang thơng tin thứ tự từ Cũng liên kết câu, đoạn văn văn Ví dụ, ba 29 câu sau đây: “Em yêu anh không?”, “Em không yêu anh”, “Khơng, (nhưng) anh u em” trích chọn đặc trưng BoW cho ba vector giống hệt nhau, ý nghĩa khác hẳn Để làm điều này, sử dụng phương thức count vectorizer :  Mã hoá chuỗi ( tách chuỗi thành từ riêng lẻ) cung cấp ID ( số nguyên ) cho từ  Đếm sơ lượng từ Lưu ý:  Phương thức CountVectorizer tự động chuyển đổi tất từ mã hóa thành dạng chữ thường để khơng xử lý từ 'He' 'he' khác Nó thực điều cách sử dụng tham số chữ thường đặt mặc định True  Nó bỏ qua tất dấu câu (ví dụ: 'xin chào!') nên không xử lý khác với từ tương tự khơng có dấu câu (ví dụ: 'xin chào') Nó thực điều cách sử dụng tham số token_pattern có biểu thức quy mặc định chọn mã thơng báo có nhiều ký tự chữ số  Tham số thứ ba cần lưu ý stop_words Chúng bao gồm từ 'am', 'an', 'và', 'the', v.v Bằng cách đặt giá trị tham số thành English, CountVectorizer tự động bỏ qua tất từ (từ văn đầu) tìm thấy danh sách stop words tiếng anh scikit-learning Điều hữu ích vì stop words làm sai lệch tính tốn Thực Bag of words Trước sử dụng thư viện Bag of Words (BoW) scikit-learning, tự mình thực trước để hiểu gì xảy đằng sau Bước 1: Chuyển đổi tất chuỗi thành dạng chữ thường Giả sử có tài liệu sau: documents = ['Hello, how are you!', 'Win money, win from home.', 'Call me now.', 'Hello, Call hello you tomorrow?'] Hướng dẫn 30 Chuyển đổi tất chuỗi tài liệu đặt thành chữ thường phương thức Lower(). Lưu chúng vào danh sách gọi 'low_case_documents' Bước 2: Xóa tất dấu câu Hướng dẫn: Loại bỏ tất dấu câu khỏi chuỗi tập tài liệu Lưu chúng vào danh sách có tên 'sans_punctuation_documents' Bước 3: Mã hóa Mã hóa câu tập tài liệu có nghĩa tách câu thành từ riêng lẻ cách sử dụng dấu phân cách Dấu phân cách định sử dụng ký tự để xác định phần đầu phần cuối từ (ví dụ: sử dụng khoảng trắng làm dấu phân cách để xác định từ tập tài liệu mình.) Hướng dẫn: Mã hóa chuỗi lưu trữ 'sans_punctuation_documents' cách sử dụng phương thức split (). và lưu trữ kết vào danh sách 'preprocessed_documents' Bước 4: Đếm tần suất Tiến hành đếm xuất từ tài liệu tài liệu Chúng ta sử dụng phương thức Counter từ thư viện collections 31 Counter đếm xuất mục danh sách trả danh sách với key từ đếm, value là số lượng từ danh sách Hướng dẫn: Sử dụng phương thức Counter () với prerocessed_documents làm đầu vào, tạo danh sách với key là từ tài liệu và value tương ứng tần suất xuất từ Lưu từng Counter dưới dạng mục danh sách 'frequency_list' Bây triển khai phương thức sklearn.feature_extraction.text.CountVectorizer thư viên scikit-learn để thực BoW Bước 2.3: Triển khai Bag of Words scikit-learning Chúng ta tiếp tục sử dụng scikit-learning để thực quy trình cách rõ ràng ngắn gọn documents = ['Hello, how are you!', 'Win money, win from home.', 'Call me now.', 'Hello, Call hello you tomorrow?'] Hướng dẫn: Import phương thức sklearn.feature_extraction.text.CountVectorizer và tạo một biến  thay thế'count_vector' CountVectorizer () có số tham số sau: lowercase = True Tham số lowercase có giá trị mặc định True chuyển đổi tất văn thành dạng chữ thường token_pattern = (?u)\\b\\w\\w+\\b Tham số token_pattern bỏ qua tất dấu câu coi chúng dấu phân cách chấp nhận chuỗi chữ số có độ dài >= , dạng individual token hoặc từ 32 stop_words Tham số stop_words , nếu set tiếng Anh xóa tất từ khỏi tài liệu khớp với danh sách stop words tiếng Anh định nghĩa scikit-learning Nhưng xử lý tin nhắn SMS nguồn văn lớn e-mail, nên không đặt giá trị tham số Hướng dẫn: sử dụng fit () và method get_feature_names() Phương thức get_feature_names () trả tên đặc trưng cho tập liệu này, tập hợp từ tạo nên từ vựng cho 'tài liệu' Hướng dẫn: Tạo ma trận với hàng tài liệu số tài liệu cột từ Giá trị (hàng, cột) tương ứng tần suất xuất từ (trong cột) Sử dụng phương thức transform() với đối số truyền vào tập tài liệu trả ma trận gồm số nguyên, chuyển thành mảng = toarray() Chúng ta triển khai thành công Bag of Words 33 CHƯƠNG 3: XÂY DỰNG MƠ HÌNH, ĐÁNH GIÁ THỬ NGIỆM 3.1 Training and testing sets Chia dataset thành training testing Tách dataset thành tập training testing cách sử dụng phương thức train_test_split sklearn Sử dụng biến sau: - X_train liệu training cột 'sms_message’ - y_train liệu training cột 'label’ - X_test liệu testing cột 'sms_message’ - y_test liệu testing cột 'label' 3.2 Xử lý Bag of Words cho dataset  Khớp liệu training (X_train) vào CountVectorizer() và trả ma trận  Chuyển đổi X_test thành ma trận để đưa dự đoán, cuối so sánh với y_test 34 3.3 Thực thi Định lý Bayes Sử dụng phương thức sklearn.naive_bayes để đưa dự đoán tập liệu Cụ thể, sử dụng triển khai Naive Bayes đa thức Bộ phân loại thích hợp để phân loại với tính rời rạc Nó nhận số từ nguyên làm đầu vào Mặt khác Gaussian Naive Bayes phù hợp với liệu liên tục vì giả định liệu đầu vào có phân phối Gaussian (chuẩn) Bây đưa dự đốn liệu testing lưu trữ 'testing_data’ 3.4 Đánh giá mơ hình Accuracy tỷ lệ số dự đoán với tổng số dự đoán Precision cho biết tỷ lệ thư mà phân loại thư rác, thực thư rác: [True Positives/(True Positives + False Positives)] Recall (Sensitivity) cho biết tỷ lệ thư thực thư rác ta phân loại thư rác [True Positives/(True Positives + False Negatives)] Nếu có 100 tin nhắn văn có tin nhắn spam 98 tin nhắn lại thì khơng, thì độ xác khơng phải thước đo tốt Chúng ta phân loại 90 thư thư rác (bao gồm thư thư rác phân loại chúng khơng phải thư rác, false negative) 10 thư thư rác (tất 10 false positive) nhận độ xác cao Đối với trường hợp vậy, Precision Recall hữu ích Hai số liệu kết hợp để có điểm F1, điểm trung bình có trọng số độ xác điểm thu hồi Điểm nằm khoảng từ đến 1, với điểm F1 tốt 35 3.5 Kết luận • Thuật tốn Naïve Bayes đem lại kết bất ngờ, tỉ lệ nhận dạng cao Kết phân loại cao nằm điều kiện, toán cụ thể khơng phải tất mơ hình khác • Mô hình quan tâm tới nội dung sms message Sms message cịn có đặc điểm để phân loại tiêu đề, địa người gửi Để xây dựng mô hình với đầy đủ đặc điểm toán lớn nhiều • Một lý nghĩ đến thư từ hay xuất thư rác từ hay xuất thư hợp lệ có tỷ lệ gần dẫn đến việc tính xác suất bị sai Khi mơ hình bị phân loại sai • Nhìn chung, Naive Bayes 'thực viên ngọc thuật toán! 3.6 Hướng phát triển • Mơ hình phân loại thư rác sử dụng thuật tốn Nạve Bayes, cịn sử dụng thuật tốn khác SVM, mạng Neutron… cho ta kết tốt Khơng có thuật tốn tối ưu nên việc chọn thuật toán cho phù hợp với toán quan trọng • Dựa vào sở liệu ta tìm thêm liệu gán nhãn cho chúng thư rác thư hợp lệ Việc liệu nhiều thì mô hình phân loại xác • Xây dựng mơ hình thư rác hoàn chỉnh, hiệu cao, tạo ứng dụng để người dùng email sử dụng • Deploy mơ hình lên server, xây dựng giao diện web GUI thay vì dùng giao diện CLI 36 KẾT LUẬN Với kiến thức có mình, chúng em hoàn thành yêu cầu tiến hành thực đề tài “PHÂN LOẠI THƯ RÁC BẰNG NAÏVE BAYES” Tuy nhiên, trình làm khơng tránh khỏi thiếu sót, có chỗ cịn vướng mắc, vì vậy, chúng em mong góp ý giúp đỡ thầy giáo, để hoàn thiện ! Chúng em xin gửi lời cảm ơn chân thành tới giảng viên Đào Nam Anh giảng viên giảng dạy mơn Nhập mơn Trí tuệ nhân tạo lớp D13QTANM tận tình hướng dẫn chúng em hoàn thành đề tài này! Chúng em xin chân thành cảm ơn! 37 TÀI LIỆU THAM KHẢO Đào Nam Anh, Giáo trình Nhập môn Học Máy, Đại học Điện Lực Phân loại văn tự động Machine Learning nào? – Nguyễn Thành Hậu Naive Bayes Classifier – Machinelearningcoban.com 38 ... khơng, thì độ xác khơng phải thư? ??c đo tốt Chúng ta phân loại 90 thư khơng phải thư rác (bao gồm thư thư rác phân loại chúng thư rác, false negative) 10 thư thư rác (tất 10 false positive) nhận... cho biết tỷ lệ thư mà phân loại thư rác, thực thư rác: [True Positives/(True Positives + False Positives)] Recall (Sensitivity) cho biết tỷ lệ thư thực thư rác ta phân loại thư rác [True Positives/(True... 3.3 Thực thi Định lý Bayes Sử dụng phương thức sklearn .naive_ bayes để đưa dự đoán tập liệu Cụ thể, sử dụng triển khai Naive Bayes đa thức Bộ phân loại thích hợp để phân loại với tính rời rạc

Ngày đăng: 28/08/2021, 10:43

Tài liệu cùng người dùng

Tài liệu liên quan