1. Trang chủ
  2. » Công Nghệ Thông Tin

Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động

74 171 0

Đ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

Định dạng
Số trang 74
Dung lượng 2,79 MB

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

Nội dung

Tuy nhiên ngoài sự tiện lợi trong trao đổi thông tin, dịch vụ tin nhắn còn mang lại cho người dùng những phiền toái, điển hình ở đây chính là người dùng phải nhận những tin nhắn mà họ kh

Trang 1

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 1

LỜI CAM ĐOAN

Tôi – Nguyễn Minh Đức, học viên lớp Cao học CLC2016A Trường Đại học Bách Khoa Hà Nội – cam kết luận văn này là công trình nghiên cứu của bản thân tôi dưới sự hướng dẫn của TS Trịnh Anh Phúc – Viện Công Nghệ Thông Tin và Truyền Thông – Đại học Bách Khoa Hà Nội Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác

Tác giả luận văn xin chịu trách nhiệm về nghiên cứu của mình

Hà Nội, ngày 25 tháng 10 năm 2016

Trang 2

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 2

DANH MỤC HÌNH VẼ

Hình 1: Quy trình xây dựng ứng dụng học máy 13

Hình 2: Tổng quan về hệ điều hành Android 15

Hình 3: Khối tiền xử lý 19

Hình 4: Ví dụ về một tinh nhắn quảng cáo 19

Hình 5: Tin nhắn sau khi qua bước lọc bỏ ký tự đặc biệt 21

Hình 6: Một phần của bộ từ điển các từ và trọng số 22

Hình 7: một phần bộ từ điển tin thường và tin quảng cáo cho phương pháp Bayes 23

Hình 8: Một tin nhắn được chuyển sang không gian vector 25

Hình 9: Khối xử lý tin nhắn 26

Hình 10: Sơ đồ khối phân lớp tin nhắn của học máy 26

Hình 11: Minh họa chi tiết khối 4 hình 10 28

Hình 12: Ví dụ cho thuật toán K-NN 33

Hình 13:Một đường thẳng tuyến tính phân chia 2 lớp điểm (hình vuông và hình tròn) trong không gian hai chiều 38

Hình 14: Lề lớn nhất được tính toán bởi một SVM tuyến tính 39

Hình 15: bên trái, biên quyết định cho một SVM với một giá trị rất cao của C mà bắt chước hành vi của SVM biên cứng và do đó dẫn tới lỗi huấn luyện Một giá trị C nhỏ hơn (bên phải) cho phép bỏ qua điểm gần ranh giới, và làm lề lớn hơn 45

Hình 16:Mức độ tác động của kernel đa thức Kernel đa thức dẫn đến một sự phân tách tuyến tính (A) Kernel đa thức cho phép một ranh giới quyết định linh hoạt hơn (B - C) 47 Hình 17:Ảnh hưởng của số chiều Gaussian kernel (σ) cho một giá trị cố định của các hằng số biên mềm Đối với giá trị của σ (A) lớn quyết định ranh giới là gần như tuyến

Trang 3

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khĩa CLC2016 Trang 3

tính Khi giảm σ tính linh hoạt của ranh giới quyết định tăng (B) Giá trị σ nhỏ dẫn

đến học quá (overfitting) (C) 48

Hình 18: Ví dụ phân lớp sử dụng chiến lược OAR 49

Hình 19: Ví dụ phân lớp sử dụng chiến lược OAO 50

Hình 20: Ví dụ về đầu vào của LibSVM 53

Hình 21: Huấn luyện SVM 54

Hình 22: Độ chính xác khi phân lớp bằng LibSVM 54

Hình 23: Kết quả của Nạve Bayes 56

Hình 24: Thời gian thực thi của Nạve Bayes 57

Hình 25: Kết quả của thuật tốn K-NN 58

Hình 26: Thời gian thực thi của KNN 59

Hình 27: Kết quả của thuật tốn SVM với các nhân khác nhau 60

Hình 28: Thời gian thực thi của thuật tốn SVM 60

Hình 29: UseCace Diagram 65

Hình 30Giao diện cuộc hội thoại tin nhắn và trả lời nhanh 66

Hình 31: Giao diện cài đặt 67

Hình 32: Giao diện quản lý tin nhắn cá nhân 68

Hình 33Sản phẩm BK SMS Pro trên Google play 69

Hình 34: Giao diện Go SMS Pro và các tính năng lọc rác 70

Hình 35: Giao diện chặn rác của Bkav Mobile Security 73

Trang 4

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 4

CÁC THUẬT NGỮ VIẾT TẮT

Trang 5

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 5

MỤC LỤC

DANH MỤC HÌNH VẼ 2

CÁC THUẬT NGỮ VIẾT TẮT 4

TÓM TẮT NỘI DUNG LUẬN VĂN TỐT NGHIỆP 7

ABSTRACT OF THESIS 9

CHƯƠNG 1: ĐẶT VẤN ĐỀ 11

1.1 Nhiệm vụ luận văn 11

1.1.1 Tổng quan 11

1.1.2 Chi tiết nhiệm vụ 12

1.2 Mô hình bài toán phân loại tin nhắn rác 12

CHƯƠNG 2: NỀN TẢNG ANDROID VÀ CƠ CHẾ GỬI NHẬN TIN NHẮN SMS 14

2.1 Nền tảng Android 14

2.2 Cơ chế gửi nhận tin nhắn 16

2.3 Cơ chế lưu trữ các tin nhắn của hệ thống 17

CHƯƠNG 3: CÁC BƯỚC TIỀN XỬ LÝ VĂN BẢN 19

3.1 Biểu diễn tin nhắn 19

3.2 Phương pháp tách từ để tạo bộ từ điển 20

3.2.1 Phương pháp tách từ dựa trên khoảng trắng 20

3.2.2 Phương pháp tách từ theo n-gram 21

3.3 Tạo từ điển, trọng số và không gian vector cho tập học 22

CHƯƠNG 4: CÁC THUẬT TOÁN VÀ CÀI ĐẶT TRÊN THIẾT BỊ ANDROID 26

4.1 Bài toán phân lớp tổng quát 27

4.2 Các thuật toán 29

4.2.1 Thuật toán Naive Bayes 29

4.2.2 Thuật toán K-Người láng giềng gần nhất (K-Nearest-Neigbour) 33

4.2.3 Support Vector Machine 37

Trang 6

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 6

CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC 55

5.1 Thuật toán Naive Bayes 56

5.1.1 Độ chính xác 56

5.1.2 Thời gian thực thi 57

5.2 Thuật toán KNN 58

5.2.1 Độ chính xác 58

5.2.2 Thời gian thực thi 59

5.3 Thuật toán SVM 60

5.3.1 Độ chính xác 60

5.3.2 Thời gian thực thi 60

KẾT LUẬN 62

TÀI LIỆU THAM KHẢO 63

PHỤ LỤC: GIAO DIỆN CHƯƠNG TRÌNH VÀ SO SÁNH VỚI CÁC ỨNG DỤNG TƯƠNG TỰ 64

1 Các Usecase 65

2 Kết quả cài đặt và thử nghiệm hệ thống 66

3 So sánh với những sản phẩm hiện có trên thị trường 69

Trang 7

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 7

TÓM TẮT NỘI DUNG LUẬN VĂN TỐT NGHIỆP

Hiện nay, các thiết bị hỗ trợ cá nhân nói chung và điện thoại di động nói riêng đang ngày càng trở lên phổ biến Với xu thế của xã hội ngày càng tiến bộ thì những thiết bị thông minh trở nên thông dụng hơn, đặc biệt là các thiết bị di động sử dụng hệ điều hành Android với tính mở cao và đơn giản trong sử dụng đang làm mưa làm gió trên thị trường di động Dịch vụ tin nhắn là một trong dịch vụ rất cơ bản của người dùng sử dụng điện thoại Tuy nhiên ngoài sự tiện lợi trong trao đổi thông tin, dịch vụ tin nhắn còn mang lại cho người dùng những phiền toái, điển hình ở đây chính là người dùng phải nhận những tin nhắn mà họ không mong muốn hay còn gọi là tin nhắn rác với nội dung chào mời giới thiệu sản phẩm dịch vụ

Nhận thấy tính cần thiết đem lại tiện ích cho người sử dụng, đề tài “Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động” có nhiệm vụ nghiên cứu và triển khai phương án lọc tin nhắn rác dựa trên những thuật toán phân lớp văn bản đã được nghiên cứu từ trước và cụ thể hóa thành một ứng dụng trên các điện thoại

di động sử dụng hệ điều hành Android

Bố cục luận văn tốt nghiệp gồm 5 chương :

Chương 1: Đặt vấn đề

Nội dung chính là phân tích yêu cầu bài toán tìm hướng giải quyết

Chương2: Nền tảng android và cơ chế gửi nhận tin nhắn SMS

Trình bày về kiến trúc của nền tảng android, cơ chế gửi nhận tin nhắn SMS và xử

lý như thế nào

Chương3: Các bước tiền xử lý văn bản

Chương này sẽ trình bày cách tiền xử lý văn bản làm đầu vào cho việc huấn luyện cũng như phân lớp

Trang 8

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 8

Chương4: Các thuật toán và cài đặt trên thiết bị android

Trình bày về nội dung các thuật toán và triển khai các thuật toán trên thiết bị di động

Chương5: Kết quả đạt được

Các kết quả thử nghiệm và đánh giá độ chính xác của các thuật toán đã triển khai

Trang 9

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 9

ABSTRACT OF THESIS

Today,Smart Phone is more and more popular.The trend of increasingly progressive society, these smart devices become more common Especially, mobile devices using the Android operating system is storming on the market Short Messaging Services (SMS) is one of basis services on mobile phone Besides the convenience of communication, SMS is bringing nuisance that users unwanted In this case the user is getting the message that they don‟t want to get, it was called spam message with promotional content of products and services introduced

Recognizing the necessity and utility provides for users I decided to choose the topic "Intelligent filtering spam messages, advertising messages on mobile devices" for my thesis It will responsible for researching and implementing spam filtering options based on text classification algorithms have been studied before and concretized into an application on the mobile phone using the operating system Android

Thesis presented consists of 5 chapters:

Chapter 1: Introduction

Content is analysis require of thesis

Chapter2: Android Platform and Sent Receiver SMS

Introduce about android platform, send and receiver SMS method How to catch SMS and classify?

Chapter3: The text pre-processing

Trang 10

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 10

Processing SMS content and preparing input data for machine learning

Chapter4: The algorithms and setup on Android devices

Introduce about Machine Learning and how to setup on Android

Chapter5: Results

Test results and assess the accuracy of the algorithm implemented

Trang 11

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 11

rẻ và hiệu quả Tuy nhiên, chính vì những lợi ích của dịch vụ tin nhắn mang lại mà số lượng tin nhắn trao đổi ngày càng tăng và một số không nhỏ trong số đó là tin nhắn rác (spam) Tin nhắn rác thường được gửi với số lượng nhiều, người dùng không mong đợi, thường với mục đích quảng cáo, gây phiền toái khó chịu cho người dùng Có nhiều phương pháp đưa ra để hạn chế tin nhắn rác như là việc đưa ra các luật lệ để hạn chế việc gửi tin nhắn rác đưa ra các phương pháp kỹ thuật lọc tin nhắn rác như lọc trên danh tính người gửi, lọc trên nội dung gửi

Mỗi phương pháp đều có ưu và nhược điểm riêng mà không có phương pháp nào

là hoàn hảo, vì vây để có bộ lọc tốt ta cần kết hợp các phương pháp với nhau Trong các phương pháp lọc tin nhắn rác thì phương pháp lọc theo nội dung là phương pháp được quan tâm nhiều, được đánh giá là có triển vọng và đưa ra kết quả cao vì phương pháp lọc nội dung dựa trên việc phân tích nội dung của tin nhắn để phân biệt tin nhắn

là rác hay không là rác đây là cách thức nhận diện thông minh và tự động cho tất cả các tin nhắn đến máy mà không cần quan tâm nó đến từ đâu

Thêm vào đó đối với từng đối tượng thì nội dung tin nhắn mang ý nghĩa khác nhau Ví dụ với những người có mối quan tâm đến tin tức về tài chính, bất động sản hoặc tin nhắn về mua bán simcard những tin nhắn đó với họ lại là những tin nhắn quan trọng Đó cũng là nội dung mà luận văn hướng đến ngoài việc tạo ra một bộ lọc cho tin nhắn rác Bộ lọc còn biết phân biệt nội dung tin nhắn nằm trong lĩnh vực nào để phục

vụ cho từng đối tượng người dùng khác nhau Luận văn sẽ xây dựng phương thức lọc thông minh theo những nội dung mà người dùng quan tâm

Trang 12

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 12

1.1.2 Chi tiết nhiệm vụ

Luận văn sẽ xây dựng hoàn thiện một ứng dụng dành cho thiết bị di động sử dụng hệ điều hành Android Ứng dụng này sẽ có khả năng lọc những tin nhắn và phân loại những tin nhắn ra thành nhiều lớp tin nhắn khác nhau tùy theo các lĩnh vực mà người dùng quan tâm bên cạnh đó ứng dụng còn cũng cấp thêm nhiều phương thức lọc

có thể tự cấu hình Ví dụ như người dùng có thể chọn chặn những số đăng ký trước, chặn tin nhắn gửi đến mà không rõ người gửi, lựa chọn phương thức chặn theo nội dung, quản lý những tin nhắn cá nhân bằng mật khẩu Ứng dụng được xây dựng như một sản phẩm thực tế hướng tới người sử dụng với đầy đủ chức năng của một chương trình quản lý tin nhắn (chức năng hiển thị các cuộc hội thoại, hiển thị nội dung cuộc hội thoại, chức năng gửi nhận tin nhắn, chức năng trả lời nhanh…)

1.2 Mô hình bài toán phân loại tin nhắn rác

Để thực hiện luận văn này cần giải quyết một số vấn đề sau :

Cơ chế gửi nhận tin nhắn:

Làm sao khi một tin nhắn đến ta có thể đón bắt và xử lý tin nhắn đó trước chương trình tin nhắn của hệ thống, từ đó có thể đưa ra các quyết định (giữ lại, loại bỏ, trả về cho chương trình của hệ thống)

Cơ chế lưu trữ các tin nhắn của hệ thống:

Mục đích của vấn đề này trả lời cho câu hỏi làm thế nào đồng bộ được tin nhắn của chương trình với tin nhắn của hệ thống, nghĩa là chương trình và hệ thống sẽ sử dụng chung một cơ sở dữ liệu, giảm nhẹ mức độ lưu trữ dữ liệu và linh hoạt hơn Ngoài ra, khi chương trình gửi tin nhắn đi thì tin nhắn này cũng phải có mặt trong hộp thư đi của

hệ thống Vì luận văn xây dựng ứng dụng hướng tới người dùng nên sẽ được thiết kế với đầy đủ chức năng của một chương trình quản lý tin nhắn cơ bản Ngoài ra còn tích hợp thêm một số chức năng hỗ trợ người dùng, vì vậy chương trình sẽ vừa có cơ sở dữ liệu lưu trữ tin nhắn của riêng nó vừa có phần dữ liệu dùng chung với hệ thống

Trang 13

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 13

Về cơ chế của tin nhắn ta cần hiểu rõ về cấu trúc hệ điều hành android nói chung và

cách hệ điều hành đối xử với tin nhắn nói riêng Nội dung chi tiết của phần này sẽ

được trình bày trong chương 2

Cơ chế nhận diện và phân loại tự động tin nhắn

Ta đưa ra mô hình gồm có 4 module như sau :

Hình 1: Quy trình xây dựng ứng dụng học máy

Dữ liệu tin nhắn: Bao gồm tập mẫu, tập test cũng như dữ liệu đầu vào là các tin nhắn

trong quá trình chương trình hoạt động Tập mẫu và tập test được lọc ra từ điện thoại

cá nhân của người dùng, sưu tầm từ các nguồn trên mạng

Tiền xử lý: Từ tập mẫu thu thập được ta tiến hành tạo ta bộ từ điển nhằm tạo ra tập dữ

liệu cho việc phân loại văn bản về sau Phương thức thực hiện sẽ được trình bày chi

tiết trong chương 3

Phân loại: Dữ liệu sẽ được phân loại ra các lớp tương ứng với yêu cầu của bài toán

(lớp nhà đất, lớp quảng cáo, lớp nhà mạng, lớp bán sim) Máy học sẽ được xây dựng

dựa trên các thuật toán phân lớp Trong luận văn này ta nghiên cứu 3 phương pháp học

máy: phương pháp xác suất Bayes vàhai phương pháp sử dụng không gian vector K

Láng giềng gần nhất, Máy vector hỗ trợ (Support Vector Machine) Chi tiết về cách

triển khai các thuật toán này được trình bày trong chương 4

Đi vào chương 2 dưới đây ta sẽ biết được cấu trúc của hệ điều hành android và cách xử

lý các tin nhắn SMS

Dữ liệu tin

nhắn Tiền xử lý

Phân loại Bayes KNN SVM

Kết Quả

Trang 14

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 14

CHƯƠNG 2: NỀN TẢNG ANDROID VÀ CƠ CHẾ GỬI

NHẬN TIN NHẮN SMS

2.1 Nền tảng Android

Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ trợ tài chính

từ Google và sau này được chính Google mua lại vào năm 2005 Android ra mắt vào năm 2007 cùng với tuyên bố thành lập Liên minh thiết bị cầm tay mở: một hiệp hội gồm các công ty phần cứng, phần mềm, và viễn thông với mục tiêu đẩy mạnh các tiêu chuẩn mở cho các thiết bị di động Chiếc điện thoại đầu tiên chạy Android được bán vào tháng 10 năm 2008

Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi

Những yếu tố này đã giúp Android trở thành nền tảng điện thoại thông minh phổ biến nhất thế giới được các công ty công nghệ lựa chọn khi họ cần một hệ điều hành không nặng nề, có khả năng tinh chỉnh, và giá rẻ chạy trên các thiết bị công nghệ cao

Giao diện người dùng của Android dựa trên nguyên tắc tương tác trực tiếp, sử dụng cảm ứng chạm tương tự như những động tác ngoài đời thực như vuốt, chạm, kéo dãn và thu lại để xử lý các đối tượng trên màn hình Sự phản ứng với tác động của người dùng diễn ra gần như ngay lập tức, nhằm tạo ra giao diện cảm ứng mượt mà, thường dùng tính năng rung của thiết bị để tạo phản hồi rung cho người dùng Những thiết bị phần cứng bên trong như gia tốc kế, con quay hồi chuyển và cảm biến khoảng cách được một số ứng dụng sử dụng để phản hồi một số hành động khác của người

Trang 15

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 15

dùng, ví dụ như điều chỉnh màn hình từ chế độ hiển thị dọc sang chế độ hiển thị ngang tùy theo vị trí của thiết bị, hoặc cho phép người dùng lái xe đua bằng xoay thiết bị, giống như đang điều khiển vô-lăng

Với tính mở cũng như khả năng tùy biến cao Android là một nền tảng thu hút rất nhiều lập trình viên làm việc trên nền tảng này Các ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử dụng Bộ phát triển phần mềm Android (SDK) SDK bao gồm một bộ đầy đủ các công cụ dùng để phát triển, gồm có công cụ gỡ lỗi, thư viện phần mềm, bộ giả lập điện thoại dựa trên QEMU, tài liệu hướng dẫn, mã nguồn mẫu, và hướng dẫn từng bước Môi trường phát triển tích hợp (IDE) được hỗ trợ chính thức là Eclipse sử dụng phần bổ sung Android Development Tools (ADT) Các công

cụ phát triển khác cũng có sẵn, gồm có Bộ phát triển gốc dành cho các ứng dụng hoặc phần mở rộng viết bằng C hoặc C++, Google App Inventor, một môi trường đồ họa cho những nhà lập trình mới bắt đầu, và nhiều nền tảng ứng dụng web di động đa nền tảng phong phú

Hình 2: Tổng quan về hệ điều hành Android

Hình 2 cho ta thấy kiến trúc của hệ điều hành Android gồm 4 tầng:

Trang 16

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 16

Tầng application cung cấp toàn bộ các ứng dụng bao gồm của cả ứng dụng hệ thống cũng như những ứng dụng được phát triển bởi bên thứ ba

Tầng Application Framework cung cấp các gói và những công cụ để truy cập quản lý dữ liệu, quản lý các thông báo …

Tầng Librares cung cấp các thư viện cho tầng Framework Ngoài ra trình máy

ảo biên dịch từ mã chương trình ra mã thực thi Linux

Tầng Linux Kenel chứa toàn bộ các driver cho các thành phần phần cứng bên dưới Tầng này chính là nhân của hệ điều hành android tương tác trực tiếp với phần cứng bên dưới

2.2 Cơ chế gửi nhận tin nhắn

Luận văn xây dựng trên các thiết bị sử dụng hệ điều hành Android nên để giải quyết vấn đề này ta đi vào tìm hiểu cơ chế gửi nhận tin nhắn của hệ thống Android Ứng dụng trong luận văn thao tác với hai tầng trên là Application và Application Framework

Tầng Application chính là môi trường triển khai ứng dụng tương tác với người dùng, trên tầng này ta sẽ xây dựng giao diện giao tiếp với người dùng, các chức năng

Android là một hệ điều hành mã nguồn mở cho phép người phát triển khi viết chương trình có thể can thiệp sâu vào hệ thống và cấp quyền cho chương trình của mình (các quyền này nằm trong file manifest), do đó khái niệm phần mềm hệ thống và phần mềm thông thường chỉ mang tính chất tương đối Bất cứ một ứng dụng hệ thống

cơ bản nào (như ứng dụng gọi điện, nhắn tin, trình duyệt v.v…) cũng có thể bị thay thế bằng các ứng dụng khác tương tự Tuy nhiên với người dùng thông thường lại ít khi để

ý tới những quyền của ứng dụng và thường chấp nhận hết để cài đặt cho nhanh, điều này có thể gây thiệt hại cho người sử dụng nếu kẻ xấu muốn lợi dụng

Trang 17

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 17

Khi tin nhắn đến nếu không có can thiệp gì từ phía các ứng dụng khác thì tin nhắn đó sẽ được lưu trữ vào cơ sở dữ liệu quản lý tin nhắn của hệ thống Vấn đề cần giải quyết là làm thế nào bắt được và xử lý tin nhắn trước chương trình quản lý tin nhắn của hệ thống? Với ứng dụng thực hiện trong luận văn để gửi nhận tin nhắn ta cấp cho ứng dụng hai quyền “SEND” và “RECEIVE”

Câu hỏi tiếp theo là làm cách nào chương trình có thể nhận biết có tin nhắn đến

và xử lý nó trước khi đến hệ thống ?

Để làm được điều này ta phải đăng ký một tiến trình lắng nghe (được gọi là BroadcastReceiver) sự kiện tin nhắn đến BroadcastReceiver là phương thức mà hệ điều hành Android cung cấp, phương thức này sẽ lắng nghe những sự kiện mà hệ thống phát ra (như tin nhắn đến, cuộc gọi đến, các cảm biến …) hoặc do chính người phát triển tạo ra Và để BroadcastReceiver này có thể nhận được sự kiện tin nhắn đến trước hệ thống thì ta phải thiết lập quyền ưu tiên cho nó cao hơn của hệ thống Quyền

ưu tiên này đặt trong file manifest

Sau khi đã bắt được tin nhắn để xử lý được tin nhắn cần phải biết khi tin nhắn đến gồm những dữ liệu gì Tuy nhiên chương trình chỉ cần bắt được nội dung tin nhắn, địa chỉ của người gửi để xử lý lọc theo số và lọc theo nội dung vì vậy ta chỉ cần lấy hai trường này Trong android các trường dữ liệu của tin nhắn được quản lý bởi lớp SmsMessage

2.3 Cơ chế lưu trữ các tin nhắn của hệ thống

Để truy xuất được dữ liệu đã lưu trữ ta cần biết cơ chế lưu trữ và làm cách nào lấy được dữ liệu Android cung cấp một kiểu truy xuất dữ liệu dùng chung là ContentProvider.Khi có tin nhắn gửi đến các thông tin của tin nhắn đó sẽ được lưu trữ trong hệ thống và có thể truy xuất bởi một phương thức được gọi là ContentProvider.Tin nhắn hiện tại trong mỗi phiên bản hệ điều hành khác nhau được lưu trữ với thứ tự các trường khác nhau, tuy nhiên với chương trình ta chỉ cần lấy một

Trang 18

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 18

số trường cần thiết như: mã lưu trữ, nội dung tin nhắn, tin nhắn là tin đến hay tin gửi

đi, số điện thoại, mã cuộc hội thoại…

Tất cả các trường này người phát triển đều có thể truy xuất và để làm được điều này thì chương trình phải được cấp quyền đọc tin nhắn

Khi muốn lưu trữ tin nhắn (sử dụng khi gửi tin nhắn đi từ chương trình cần đồng bộ với máy) chúng ta cũng cần cung cấp quyền được phép ghi dữ liệu tin nhắn như vậy qua bước này ta đã có thể có được nội dung của tin nhắn SMS làm đầu vào cho việc phân loại

Kết thúc chương 2 ta đã hiểu được làm như thế nào để có nội dung tin nhắn làm đầu vào cho máy học Ở chương 3 cũng là bước đầu tiên của mô hình luận văn sẽ trình bày về tiền xử lý văn bản làm sao đưa văn bản về cùng định dạng mà máy học có thể hiểu và phân loại được

Trang 19

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 19

CHƯƠNG 3: CÁC BƯỚC TIỀN XỬ LÝ VĂN BẢN

Trong chương 3 nội dung chính là các phương pháp tiền xử lý văn bản làm đầu vào cho module phân loại Luận văn sử dụng các phương pháp học máy để phân lớp các tin nhắn

Hình 3: Khối tiền xử lý

Ở hình trên khối tiền xử lý chính là bước đầu tiên trong mô hình bài toán được nghiên cứu trong luận văn

Lấy ví dụ một tin nhắn mẫu với nội dung là tin nhắn của nhà mạng:

Hình 4: Ví dụ về một tinh nhắn quảng cáo

Ở chương này luận văn sẽ trình bày làm thế nào để máy học có thể sử dụng được văn bản này làm nội dung huấn luyện cũng như kiểm thử Trong nội dung luận văn sử dụng 2 phương pháp học máy là xác xuất thống kê và không gian vector vì vậy nên nội dung tin nhắn cũng được phân tích theo hai hướng này

3.1 Biểu diễn tin nhắn

Thông thường, một tin nhắn được biểu diễn bằng một vector gồm các từ sẽ được đánh trọng số, độ dài của vector là số các từ khóa (keyword / term) xuất hiện trong ít

[QC] Viettel kinh moi quy khach goi tong dai 1068 de cap nhat

thong tin moi nhat ve giao thong di lai, dia diem vui choi giai tri, cac chuong trinh bieu dien nghe thuat tren toan quoc trong dip nghi le 30/4 va 1/5 Cuoc phi: 2.000d/phut Tu choi tin 197, soan TC gui 197

Trang 20

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 20

nhất một mẫu dữ liệu huấn luyện Biểu diễn trọng số có thể là nhị phân (từ khóa đó có hay không xuất hiện trong văn bản tương ứng) hoặc không nhị phân (từ khóa đó đóng góp tỷ trọng bao nhiêu cho ngữ nghĩa văn bản)

3.2 Phương pháp tách từ để tạo bộ từ điển

3.2.1 Phương pháp tách từ dựa trên khoảng trắng

Tiền xử lý loại bỏ các từ dừng và lấy từ gốc

Với lý thuyết xử lý văn bản thông thường trước khi đánh trọng số cho các từ khoá cần sẽ tiến hành loại bỏ các từ dừng (stop-word) Từ dừng là những từ xuất hiện thường xuyên nhưng lại không có ích trong đánh chỉ mục cũng như sử dụng trong các máy tìm kiếm hoặc các chỉ mục tìm kiếm khác Thông thường, các trạng từ, giới từ, liên từ là các từ dừng Trong tiếng Anh, người ta đã liệt kê ra danh sách các từ dừng nhưng với tiếng Việt thì chưa có một danh sách từ dừng như vậy Việc lấy từ gốc và lưu lại các từ phát sinh từ mỗi từ gốc để nâng cao khả năng tìm kiếm được áp dụng cho các ngôn ngữ tự nhiên có chia từ, chẳng hạn như tiếng Anh Tuy nhiên trong giới hạn luận văn này, phương án loại bỏ từ dừng là không khả thi bởi vì chương trình xử

lý với những tin nhắn tiếng việt và những tin nhắn đó không có cú pháp rõ ràng, đôi khi những từ viết tắt lại rất có ý nghĩa trong việc phát hiện tin nhắn rác hay không phải tin rác Ví dụ: LH, L/H là liên hệ, QC là quảng cáo, KM là khuyến mại Một lợi thế khi phân lớp tin nhắn là số lượng từ trong tin nhắn là ít, trang đầu tiên có tối đa 160 ký tự

Do đó việc phân tích và khối lượng tính toán là tương đối nhỏ có thể làm trên thiết bị

di động có hạn chế về tốc độ với các model khác nhau Tuy nhiên nội dung tin nhắn ngắn cũng là 1 bất lợi khi phân loại do nội dung này có thể bị nhầm lẫn sang tin nhắn khác khi nội dung quá ngắn và không đủ cơ sở để phân loại

Tách từ dựa trên khoảng trắng

Mỗi từ trong bộ từ điển sẽ tạo thành một đặc trưng cho không gian vector hoặc xác suất nên ta cần có phương pháp tách từ để tạo bộ từ điển Cách đơn giản để lọc được từ tiếng việt là sử dụng cách tách từ dựa trên khoảng trắng hay còn gọi là dấu cách Cứ khi nào gặp khoảng trắng được xem là kết thúc một từ Một chú ý đặc biệt đối với việc tiền xử lý cho nội dung tin nhắn trước khi phân lớp là tin nhắn thường

Trang 21

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 21

không có cấu trúc ngữ pháp rõ ràng, chính vì vậy có thể gặp những ký tự đặc biệt như

>,<,?,!,@,#,$,% những ký tự này nếu nằm độc lập không có ý nghĩa nhiều nhưng nó

có thể thay cho các dấu Ta có thể lấy ví dụ ký tự „.‟ Thay cho dấu “nặng” , „`‟ thay dấu “huyền”, “~” thay dấu “ngã”, „?‟ thay đấu “hỏi” Khi xử lý ta có thể bỏ những dấu này đi hoặc có thể nhận diện chính xác các từ bằng việc xây dựng một bộ từ điển ánh

xạ từ những từ đó sang từ tiếng việt chuẩn Việc thống kê đóng góp của các từ trong tin nhắn có thể dùng thay thế việc loại bỏ từ dừng, bằng việc loại bỏ những từ có trọng

số thấp hay những từ có tần số xuất hiện ít trong văn bản (việc này chủ yếu làm giảm

số trường vector biểu diễn làm tăng tốc độ tính toán) Tin nhắn ở hình 2 sau khi qua bước này ta được kết quả như sau:

Hình 5: Tin nhắn sau khi qua bước lọc bỏ ký tự đặc biệt

Và ta được các từ : QC, Viettel, kinh, moi, quy, khach, goi, tong, dai …

3.2.2 Phương pháp tách từ theo n-gram

Khái niệm về n-gram [1] : là tần suất xuất hiện của n kí tự ( hoặc từ ) liên tiếp nhau

có trong dữ liệu của tin nhắn

Với n = 1 và tính trên kí tự, ta có thông tin về tần suất xuất hiện nhiều nhất của các chữ cái Điều này ứng dụng để làm keyboard : các phím hay xuất hiện nhất sẽ ở những vị trí dễ sử dụng nhất

Vi dụ: Với tin nhắn hình 5 khi tách với n-gram = 1 ta được các giá trị :[,Q,C,],

,V,i,e,t,t,e,l…

Với n = 2, ta có khái niệm bi-gram

QC Viettel kinh moi quy khach goi tong dai 1068 de cap nhat

thong tin moi nhat ve giao thong di lai dia diem vui choi giai tri cac chuong trinh bieu dien nghe thuat tren toan quoc trong dip nghi le 30 4 va 1 5 Cuoc phi 2 000d phut Tu choi tin 197 soan TC gui 197

Trang 22

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 22

3.3 Tạo từ điển, trọng số và không gian vector cho tập học

Sau khi đã có bộ từ đƣợc tách ở phía trên đầu tiên ta sẽ tạo ra bộ từ điển bằng hai cách dành cho xác suất và không gian vector các tin nhắn Với bộ từ điển xác suất cần ghi nhận trọng số của mỗi từ trong tin nhắn:

Ví dụ: một phần của bộ từ điển đƣợc trình bày trong hình 6

Hình 6: Một phần của bộ từ điển các từ và trọng số

… ban 121 dep 31 http 26

qc 18

da 43 nhan 58 duoc 46 loi 18 chuc 31

Trang 23

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 23

Với bộ từ điển dành cho không gian vector thì đơn giản hơn ta chỉ cần xây dựng bộ từ điển có chứa tất cả các từ nằm trong tập huấn luyện

Sau khi đã có bộ từ điển ta sẽ tiến hành xây dựng giá trị đặc trưng cho từng tin nhắn trong tập huấn luyện làm đầu vào cho bộ huấn luyện của máy học

Mô hình xác suất:

Với mỗi tin nhắn trong tập học sẽ đều được gán nhãn sẵn là tin rác hay không phải tin rác Để phục vụ cho việc tính toán về sau bước này sẽ tạo ra 5 bộ từ điển có trọng số theo quy tắc:

o Nếu các từ là chưa có sẵn trong bảng sẽ được chèn vào bảng và có quantity=1

o Nếu các từ là có sẵn trong bảng sẽ cập nhật trọng số của từ đó thêm 1 đơn vị (điều này nâng trọng số của từ này lên đóng vai trò quan trọng khi nhận diện spam)

o Cập nhật cho bộ từ điển chung trọng số của các từ (minh họa hình 7)

Hình 7: một phần bộ từ điển tin thường và tin quảng cáo cho phương pháp Bayes

Tin Thường

… len 18 gap 11

ko 54 tren 7 lab 3 chi 17

co 63

Quảng cáo

… ban 121 http 26

qc 18

da 43 nhan 58 duoc 46 loi 18

Trang 24

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 24

Mô hình hoá không gian véc tơ:

Chúng ta sẽ biểu diễn mỗi tin nhắn như một vector trong không gian vector chung có số chiều bằng với số lượng từ trong từ điển mà chúng ta đã xây dựng ở bước trước

Mỗi tệp dữ liệu dj trong tập dữ liệu D sẽ được biểu diễn thành một vector

W = {wij} trong đó wij là trọng số của từ ti trong từ điển đã xây dựng

Trọng số wij sẽ được xác định theo phương pháp sau đây :

Kiểm tra sự xuất hiện của từ khoá trong một văn bản cụ thể Các chiều của vectorbiểu diễn văn bản sẽ có duy nhất hai giá trị 0 và 1 Chiều sẽ có giá trị 1 nếu

từ khoá k xuất hiện trong văn bản và nhận giá trị 0 cho trường hợp ngược lại

Giả sử có một tập các m văn bản D={d1, d2, …., dm} Mỗi văn bản được biểu diễn dưới dạng một vectorgồm n từ khoá T={t1, t2, …., tn} Gọi W={wij} là ma trận trọng số, trong đó wij là giá trị trọng số của từ khoá ti trong văn bản dj

Trang 25

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 25

Hình 8: Một tin nhắn được chuyển sang không gian vector

Trong Ví Dụ 1ta sẽ ánh xạ từ bộ từ điển vào tin nhắn cần chuyển sang không gian vector Nếu từ đó tồn tại trong tin nhắn mẫu ta hiểu là không gian vector tại vị trí đó có giá trị bằng một Ví Dụ 1 khi quét tới vị trí số 31 của từ điển ta thấy từ “Viettel” và biểu diễn là 31:1, tuy nhiên để đơn giản chỉ cần lưu lại giá trị của vị trí đó là 31 Tương

tự cho tới khi quét hết bộ từ điển ta có tin nhắn được biểu diễn dưới dạng vector như hình 6

Kết thúc chương 3 ta đã được dữ liệu đầu vào cho máy học Chương 4 sẽ trình bày về nội dung các thuật toán được nghiên cứu và cách triển khai các thuật toán

[QC] Viettel kinh moi quy khach goi tong dai 1068 de cap

nhat thong tin moi nhat ve giao thong di lai, dia diem

vui choi giai tri, cac chuong trinh bieu dien nghe thuat

tren toan quoc trong dip nghi le 30/4 va 1/5 Cuoc phi:

2.000d/phut Tu choi tin 197, soan TC gui 197

31 43 62 73 75 105 122 125 144 145 148 166 190 192 196 198

199 265 267 278 287 289 291 300 313 316 319 352 388 397 431

472 494 519 522 549 556 595 598 599 601 602 603 604 607 623

753 755 817 858 1095 1312 1570 1585

Trang 26

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 26

CHƯƠNG 4: CÁC THUẬT TOÁN VÀ CÀI ĐẶT TRÊN

THIẾT BỊ ANDROID

Kết thúc chương 3 ta đã có dữ liệu dành cho việc phân loại theo cả hai dạng xác

suất thống kê và không gian vector Chương 4 sẽ trình bày về cách triển khai các thuật

toán và cách thức áp dụng cho phân lớp tin nhắn Đây chính là bước thứ 2 trong mô

hình bài toán:

Hình 9: Khối xử lý tin nhắn

Dưới đây là sơ đồ khối tổng quan các bước khi xây dựng ứng dụng của học máy[2]

Hình 10: Sơ đồ khối phân lớp tin nhắn của học máy

Trang 27

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 27

Sơ đồ khối được chia làm hai phần là “Phần học” và “Phần dự đoán”

Phần Học:Ban đầu ta có một tập dữ liệu gọi là dữ liệu huấn luyện,tập dữ liệu này sẽ là

những tin nhắn đã được phân lớptrước, có năm lớp được gán nhãn từ đầu là lớp tin thường, tin nhà đất, tin nhà mạng, tin quảng cáo và tin bán sim Những thành phần này nằm trong khối 1 của hình 10 Các tin nhắn sẽ được biến đổi về dạng dữ liệu chung như đã trình bày ở chương 3 Khối 2 sẽ tiến hành tạo ra các bộ tham số dựa trên các thuật toán và tạo thành nhân cho bộ phân lớp

Phần dự đoán: khối 3 trong sơ đồ khối là tin nhắn tới thiết bị Tin nhắn này sẽ đưa về

dạng dữ liệu chung mà bộ phân loại có thể hiểu được như đã trình bày trong chương 3 Khối 4 sẽ thực hiện phân lớp tin nhắn đầu vào Cuối cùng ta được dữ liệu đã gán nhãn

ở khối 5

Nếu mức độ tin tưởng của tập học lớn ta có thể tiến hành cho máy học chính những

dữ liệu mà nó đã phân lớp được Việc học này làm tăng số lượng bộ mẫu huấn luyện mục đích làm tăng thêm độ chính xác cho máy học Tuy vậy nó có thể gây kết quả không tốt khi máy học nhận diện sai mẫu và nó học lại chính mẫu sai này, dẫn tới một loạt các sai lầm về sau và làm cho máy học mất độ chính xác của nó

4.1 Bài toán phân lớp tổng quát

Quá trình phân lớp còn được gọi là quá trình gán nhãn cho các tập dữ liệu cụ thể đây là các tin nhắn theo các nhãn được định nghĩa trước Nhiệm vụ của bài toán phân lớp tin nhắn là cần xây dựng mô hình phân lớp để khi có một tin nhắn mới tới thì mô hình phân lớp sẽ cho biết tin nhắn đó thuộc lớp nào

Cho trước một tập các nhãn (các lớp) C = {c1, , cn}và một tập các dữ liệu

D = {d1, d2, } là những tin nhắn cần phân loại, một bộ phân lớp là một hàm K ánh xạ từ D tới tập của tất cả các tập con của C Hoạt động của khối 4 hình 10 được minh họa ở hình 11

Trang 28

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 28

Hình 11: Minh họa chi tiết khối 4 hình 10

Đối với bài toán được nghiên cứu trong luận văn, tập D trong hình 11 là các tin nhắn cần phân loại Tập các nhãn C được xây dựng dựa trên các tiêu chí phân loại của các tin nhắn Trong bài toán của luận văn là năm nhãn được định nghĩa trước : tin nhà đất, tin nhà mạng, tin quảng cáo, tin bán sim và tin thường

Hàm K (xem hình 11) sẽ được xây dựng bằng phương pháp phân loại sử dụng học máy và hàm này được sử dụng để dự doán một tin nhắn di được phân loại vào một lớp

cj trong C

Trong cách phân loại truyền thống dựa vào con người, việc phân loại dữ liệu đòi hỏi phải xây dựng một ngưỡng phân loại để xác định điều kiện quyết định dữ liệu thuộc về lớp nào

Trong kĩ thuật học máy, các hàm phân loại được xây dựng dựa trên một tập tin nhắn huấn luyện T được tập hợp, lọc lựa và gán nhãn từ nhiều nguồn như người dùng, mạng internet Các giải thuật sau đó có thể được phát triển để tạo ra các sự tổng quát hoá về quan hệ giữa nội dung tin nhắn và các nhãn, mã hoá các sự tổng quát hoá đó trong hàm học K

Có nhiều cách để biểu diễn m ột mô hình phân lớp và có rất nhiều thu ật toán giải quyết nó Các thuật toán phân lớp tiêu biểu bao gồm: Cây quyết định (Decision Tree), Naive Bayes, Support vector machine (SVM), K Láng giềng gần nhất …

Trang 29

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khĩa CLC2016 Trang 29

Trong nội dung khuơn khổ của luận văn sẽ đi sâu vào nghiên cứu và đánh giá về hiệu năng của 3 thuật tốn :

NB : Xác suất Bayes(Naive Bayes)

KNN : K láng giềng gần nhất (K Nearest Neigbour)

SVM :Máy vector hỗ trợ (Support Vector Machine)

4.2 Các thuật tốn

4.2.1 Thuật tốn Naive Bayes

Giới thiệu phương pháp Nạve Bayes:

Nạve Bayes (NB)[3] là phương pháp phân loại dựa vào xác suất được sử dụng rộng rãi trong lĩnh vực học máy và đem lại kết quả khả quan cho việc phân lớp dữ liệu Các đặc trưng của dữ liệu trong tập học là độc lập với nhau.Ý tưởng cơ bản của cách tiếp cận Nạve Bayes là sử dụng xác suất cĩ điều kiện giữa đặc trưng và nhãn để dự đốn xác suất nhãn của một tin nhắn cần phân loại Điểm quan trọng của phương pháp này chính là ở chỗ giả định rằng sự xuất hiện của tất cả các đặc trưng trong tin nhắn đều độc lập với nhau Giả định đĩ làm cho việc tính tốn NB hiệu quả và nhanh chĩng hơn các phương pháp khác vì khơng sử dụng việc kết hợp các đặc trưng để đưa ra phán đốn nhãn Kết quả dự đốn bị ảnh hưởng bởi kích thước tập tin nhắn, chất lượng

của khơng gian đặc trưng…

Thuật tốn Nạve Bayes:

Thuật tốn Nạve Bayes dựa trên định lý Bayes được phát biểu như sau:

Trang 30

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 30

p(y|x): xác suất của sự kiện y khi biết trước sự kiện x

p(x): xác suất của sự kiện x

p(x,y): là tích xác suất của sự kiện x và sự kiện y

p(y): xác suất của sự kiện y

Áp dụng trong bài toán phân loại, các dữ kiện gồm có:

X là tin nhắn cần phân lớp, tin nhắn này được chuyển thành tập các đặc trưng X(𝑥1, 𝑥2, 𝑥3… , 𝑥𝑚) với xm là các từ trọng số của mỗi từ của tin nhắn X trong từ điển

C(𝐶1, 𝐶2, 𝐶3, 𝐶4, 𝐶5) : là tập năm nhãn được định nghĩa trước trong yêu cầu của bài toán

Theo công thức (1.1) có:

𝑃 𝐶𝑖 𝑋 = 𝑃(𝑋|𝐶𝑖)𝑃(𝐶𝑖)

 𝑃 𝐶𝑖 𝑋 : xác suất tin nhắn X thuộc lớp 𝐶𝑖

 𝑃(𝑋|𝐶𝑖) : xác suất của phân lớp 𝐶𝑖 khi biết trước dữ liệu X

 𝑃(𝐶𝑖) : xác suất là phân lớp 𝐶𝑖trong tập dữ liệu 𝑃(𝐶𝑖) được tính bằng :

Trang 31

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 31

𝑁(𝐶𝑖): là tổng trọng số của tất cả các thuộc tính trong Ci

Với giả thiết Bayes sẽ có trường hợp đặc trưng xk không có trong tập học Ci.Khi đó 𝑃(𝑥𝑘|𝐶𝑖)=0 và

𝑃 𝐶𝑖 𝑋 = 0 làm cho xác suất cũng bằng không làm sai kết quả bài toán Để giải quyết vấn đề này cần sử dụng công thức làm trơn Laplace để tính 𝑃 𝑥𝑘 𝐶𝑖 Công thức làm trơn laplace được trình bày bên dưới

Trong đó V là tổng số đặc trưng trong tất cả các lớp (ở đây là số từ vựng)

Vì P(X) là như nhau nên ta có một tin nhắn thuộc lớp nào chính là giá trị lớn nhất của xác suất tính bởi công thức (1.4)

Trang 32

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 32

X5 Viettel Viettel Viettel Toi Ban ?

P(Viettel |Tin thường)=(1+1)/(3+6)=2/9

P(Toi| Tin thường)=(1+1)/(3+6)=2/9

P(Ban| Tin thường)=(1+1)/(3+6)=2/9

Trang 33

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 33

4.2.2 Thuật toán K-Người láng giềng gần nhất (K-Nearest-Neigbour)

Giới thiệu thuật toán K-NN:

Trong nhận dạng tin nhắn thuật toán K-NN[4] là một phương pháp để phân loại các tin nhắn dựa trên một tập tin nhắn đã được gán nhãn từ trước, các tin nhắn này sẽ được biểu diễn trên một không gian vector đặc trưng n chiều, ý tưởng của thuật toán KNN vẫn dựa trên thống kê và khoảng cách tới các tin nhắn Từ kết quả tính toán ta tìm ra K tin nhắn có khoảng cách đến tin nhắn nhận dạng là nhỏ nhất

Thuật toán K-NN:

Một tin nhắn sẽ được biểu diễn là một điểm trong không gian vector n chiều lưu

trữ tất cả các tin nhắntrong tập huấn luyện Để phân lớp một điểm dữ liệu mới X, trước hết bộ phân lớp sẽ tính khoảng cách từ điểm dữ liệu X tới tất cả những tin nhắn trong tập huấn luyện, qua đó tìm được tập N(X,D,K) gồm K điểm dữ liệu có khoảng cách tới

X gần nhất Vì các điểm dữ liệu đều được biểu diễn dưới dạng không gian vector nên

ta có thể dùng khoảng cách hình học để tính khoảng cách giữa hai điểm với nhau Sau

khi xác định được N(X,D,K) bộ phân lớp sẽ gán nhãn cho điểm dữ liệu x bằng lớp chiếm đại đa số trong tập N(X,D,K) Mặc dù rất đơn giản nhưng thuật toán K người

láng giềng gần nhất đã cho kết quả tốt trong nhiều ứng dụng thực tế

Hình 12: Ví dụ cho thuật toán K-NN

Ở hình 12 ta có tập học là các hình vuông và các hình tam giác tượng trưng cho hai lớp đã được gán nhãn Điểm dữ liệu X hình tròn là điểm dữ liệu cần được phân

Trang 34

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 34

lớp Từ x ta tính khoảng cách tới các điểm dữ liệu học được tập D, trong tâp D này ta chọn K điểm có khoảng cách tới X nhỏ nhất Trường hợp trên nếu chọn K=3 thì X sẽ được phân vào lớp tam giác do có 2 hình tam giác trong khi chỉ có 1 hình vuông Còn nếu chọn K=5 thì X được phân vào lớp hình vuông Đây cũng là lý do tại sao mà K luôn chọn là số lẻ Với trường hợp phân lớp có nhiều hơn 2 lớp ta có thể sử dụng chiến lược OAO Chia bài toán ra làm nhiều bài toán con về phân lớp 2 lớp Như đã trình bày ở trên việc chọn K hợp lý là rất quan trọng đối với kết quả của thuật toán này

Áp dụng cho bài toán phân loại văn bản:

Văn bản được phân lớp sẽ biểu diễn dưới dạng vector khi đó văn bản này sẽ là một điểm Tất cả những văn bản khác cũng được biểu diễn như vậy và công thức tính khoảng cách:

Trang 35

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 35

Vector đặc trưng của K-NN sẽ lấy từ bảng bộ từ điển thành lập ra vector gồm các tọa độ chính là việc từ đó có xuất hiện trong văn bản hay không (Chi tiết trình bày ở chương 3)

Như vậy vector đặc trưng là Xn=( X1,X2,….,Xn)

Khi một tin nhắn đến nó sẽ được phân tích ra dưới dạng vector như sau:

Ta xây dựng một ánh xạ từ từ điểu sang tin nhắn Nếu đặc trưng thứ i có trong tin nhắn thì tọa độ Xi của vector đặc trưng biểu diễn tin nhắn có giá trị là 1 Nếu đặc

trưng đó không có trong tin nhắn thì tọa độ của nó là 0 Đồng thời cũng xây dựng các vector cho những tin nhắn mẫu ban đầu theo phương pháp tương tự Qua đó ta được các điểm biểu diễn trên một không gian vector n chiều Bước tiếp theo ta tiến hành

tính khoảng cách từ tin nhắn đang xét tới tất cả các tin nhắn mẫu bằng công thức tính khoảng cách vector đơn giản (công thức 2.1):

Sau khi có được khoảng cách đến toàn bộ mẫu ta chọn ra K mẫu có khoảng cách tới điểm cần phân lớp là gần nhất

X5 Viettel Viettel Viettel Toi Ban ?

Trang 36

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 36

Ta sẽ có tập từ điển : Viettel, KhachHang, QC, KM, Toi, Ban

X1 =(1,1, 1, 0,0,0) X2 = (1,0,1, 0,0,0) X3 = (1,0,0,1,0,0) X4 = (1,0,0,0,1,1) X5 = (1,0,0,0,1,1) Lần lượt có khoảng cách từ X5 -> (X1,X2,X3,X4) là : X51 = 0+1+1+0+1+1 = 4

X52 = 0+0+1+0 +1+1 = 3 X53 = 0+0+0+1+1+1 = 3 X54 = 0+0+0+0+0+0 = 0 Nếu lấy K = 1 ta có láng giềng gần nhất với X5 là X4 với khỏang cách là 0 vậy X5 thuộc lớp “Tin thường” Tuy nhiên nếu chọn K = 3 ta có 3 láng giềng gần nhất với X5 là X4, X3, X2 trong đó X3 và X2 thuộc lớp “Nhà mạng” Như vậy tin nhắn đc phân vào lớp “Nhà mạng” Vậy ta thấy K có ảnh hưởng rất lớn tới kết quả của bài toán.

Trong bài toán trên khái ta thấy công thức khoảng cách nếu tính toán đầy đủ sẽ chiếm thời gian tính toán tương đối lớn vì mẫu tính toán là 1000 vector Tuy nhiên khi triển khai vào chương trình thực tế ta sẽ chỉ phải tính tại những điểm có tọa độ khác nhau Những điểm này là không nhiều so với toàn bộ không gian vector Kết quả thực

tế khi test với bộ dữ liệu test lớn tốc độ tính toán của K-NN thực sự là một trở ngại lớn

Phân lớp đa lớp trong KNN: Ta sử dụng chiến lược phân lớp OAO dược trình bày trong phần phân lớp đa lớp của thuật toán SVM Lần lượt chia bài toán ra thành

Trang 37

Học viên thực hiện: Nguyễn Minh Đức – CAC16010 Khóa CLC2016 Trang 37

n(n-2)/2 bài toán phân lớp hai lớp Tổng hợp từ các bài toán này ta phân được tin nhắn cần phân lớp vào lớp tương ứng

4.2.3 Support Vector Machine

Giới thiệu thuật toán SVM:

Thuật toán SVM[5] ban đầu được đề xuất bởi Vladimir N.Vapnik và dạng chuẩn hiện nay sử dụng lề mềm được đề xuất bởi Vapnik và Corinna Cortes năm 1995 Máy vectơ hỗ trợ (SVM - viết tắt tên tiếng Anh Support Vector Machine) là một khái niệm trong thống kê và khoa học máy tính cho một tập hợp các phương pháp học có giám sát liên quan đến nhau để phân loại và phân tích hồi quy SVM dạng chuẩn nhận

dữ liệu vào và phân loại chúng vào hai lớp khác nhau Do đó SVM là một thuật toán phân loại nhị phân Với một bộ các ví dụ luyện tập thuộc hai thể loại cho trước, thuật toán luyện tập SVM xây dựng một mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó Một mô hình SVM là một cách biểu diễn các điểm trong không gian đặc trưng giống với KNN và lựa chọn ranh giới giữa hai thể loại sao cho khoảng cách từ các tin nhắn luyện tập tới ranh giới là xa nhất có thể Các tin nhắn mới cũng được biểu diễn trong cùng một không gian đặc trưng và được thuật toán dự đoán thuộc một trong hai thể loại tùy vào tin nhắn đó nằm ở phía nào của ranh giới

Thuật toán SVM:

SVM cho bài toán phân lớp tuyến tính: Hình thức đơn giản của việc phân lớp là

phân lớp nhị phân: phân biệt giữa các đối tượng thuộc về một trong hai lớp: dương (+1) hoặc âm (-1) trong bài toán có thể là lớp quảng cáo và lớp tin nhắn thường Để giải quyết vấn đề này, ý tưởng của phương pháp SVM đưa ra là sử dụng một đường thẳng để phân tách các điểm nằm ở một bên là dương và nằm ở bên kia là âm Ý tưởng này có thể được minh họa bởi sự phân lớp của các điểm trong không gian 2 chiều như hình dưới đây:

Ngày đăng: 25/07/2017, 21:39

HÌNH ẢNH LIÊN QUAN

Hình 2: Tổng quan về hệ điều hành Android - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 2 Tổng quan về hệ điều hành Android (Trang 15)
Hình 9: Khối xử lý tin nhắn - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 9 Khối xử lý tin nhắn (Trang 26)
Hình 11: Minh họa chi tiết khối 4 hình 10 - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 11 Minh họa chi tiết khối 4 hình 10 (Trang 28)
Hình 13:Một đường thẳng tuyến tính phân chia 2 lớp điểm (hình vuông và hình tròn) - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 13 Một đường thẳng tuyến tính phân chia 2 lớp điểm (hình vuông và hình tròn) (Trang 38)
Hình 14: Lề lớn nhất được tính toán bởi một SVM  tuyến tính - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 14 Lề lớn nhất được tính toán bởi một SVM tuyến tính (Trang 39)
Hình 19: Ví dụ phân lớp sử dụng chiến lược OAO - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 19 Ví dụ phân lớp sử dụng chiến lược OAO (Trang 50)
Hình 24: Thời gian thực thi của Nạve Bayes - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 24 Thời gian thực thi của Nạve Bayes (Trang 57)
Hình 25: Kết quả của thuật toán K-NN - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 25 Kết quả của thuật toán K-NN (Trang 58)
Hình 26: Thời gian thực thi của KNN - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 26 Thời gian thực thi của KNN (Trang 59)
Hình 27: Kết quả của thuật toán SVM với các nhân khác nhau - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 27 Kết quả của thuật toán SVM với các nhân khác nhau (Trang 60)
Hình 29: UseCace Diagram - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 29 UseCace Diagram (Trang 65)
Hình 30Giao diện cuộc hội thoại tin nhắn và trả lời nhanh - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 30 Giao diện cuộc hội thoại tin nhắn và trả lời nhanh (Trang 66)
Hình 31: Giao diện cài đặt - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 31 Giao diện cài đặt (Trang 67)
Hình 32: Giao diện quản lý tin nhắn cá nhân - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 32 Giao diện quản lý tin nhắn cá nhân (Trang 68)
Hình 35: Giao diện chặn rác của Bkav Mobile Security - Lọc thông minh tin nhắn rác, tin nhắn quảng cáo trên thiết bị di động
Hình 35 Giao diện chặn rác của Bkav Mobile Security (Trang 73)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w