Tải bản đầy đủ (.pdf) (33 trang)

Đồ án phát hiện người xấu trong ứng dụng hẹn hò

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (906.19 KB, 33 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO ĐỒ ÁN 2
PHÁT HIỆN NGƯỜI XẤU TRONG ỨNG DỤNG HẸN HỊ

GVHD: HUỲNH HỒ THỊ MỘNG TRINH

Sinh viên thực hiện:
Lê Hồng Phúc – 19520222
Trương Cơng Hưng – 19521588

TP.Hồ Chí Minh, tháng 6 năm 2022


ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO ĐỒ ÁN 2
PHÁT HIỆN NGƯỜI XẤU TRONG ỨNG DỤNG HẸN HỊ

GVHD: HUỲNH HỒ THỊ MỘNG TRINH

Sinh viên thực hiện:
Lê Hồng Phúc – 19520222
Trương Cơng Hưng – 19521588

TP.Hồ Chí Minh, tháng 6 năm 2022



NHẬN XÉT CỦA GIÁO VIÊN
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................
...............................................................................................................................................


MỤC LỤC

MỤC LỤC ........................................................................................................................... 1
DANH MỤC HÌNH ẢNH ................................................................................................... 3
DANH MỤC BẢNG BIỂU ................................................................................................. 4
LỜI CẢM ƠN ...................................................................................................................... 5
CHƯƠNG I. TỔNG QUAN ................................................................................................ 6
1. Lý do chọn đề tài .......................................................................................................... 6

2. Mục tiêu........................................................................................................................ 6
3. Phạm vi ......................................................................................................................... 6
CHƯƠNG II. CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN CÔNG NGHỆ ........................... 7
1. Machine Learning ........................................................................................................ 7
1.1. Machine Learning là gì? ........................................................................................ 7
1.2. Machine Learning Workflow ................................................................................ 7
1.3. Phân nhóm dựa trên phương thức học ................................................................... 8
2. Tensorflow ................................................................................................................... 9
2.1. Tensorflow là gì? ................................................................................................... 9
2.2. Kiến trúc của Tensorflow ...................................................................................... 9
2.3. Cách hoạt động của Tensorflow .......................................................................... 10
2.4. Tensorflow Lite.................................................................................................... 10
3. Flutter ......................................................................................................................... 11
3.1. Flutter là gì? ......................................................................................................... 11
3.2. Tại sao nên sử dụng Flutter? ................................................................................ 11
3.3. Đặc điểm nổi bật .................................................................................................. 12
1


4. Firebase ...................................................................................................................... 12
4.1. Firebase là gì? ...................................................................................................... 12
4.2. Những tính năng của Firebase ............................................................................. 13
CHƯƠNG III. PHÂN TÍCH THIẾT KẾ VÀ XÂY DỰNG CHỨC NĂNG .................... 15
1. Yêu cầu ....................................................................................................................... 15
2. Xây dựng chức năng .................................................................................................. 15
2.1. Thu thập dữ liệu ................................................................................................... 15
2.2. Khám phá dữ liệu ................................................................................................. 15
2.3. Chọn mơ hình....................................................................................................... 17
2.4. Xây dựng, đào tạo và đánh giá mơ hình .............................................................. 19
2.5. Triển khai mơ hình ............................................................................................... 26

CHƯƠNG 4. TỔNG KẾT ................................................................................................. 30
1. Kết quả ....................................................................................................................... 30
2. Hạn chế ....................................................................................................................... 30
BẢNG PHÂN CÔNG CÔNG VIỆC ................................................................................. 31
TÀI LIỆU THAM KHẢO ................................................................................................. 32

2


DANH MỤC HÌNH ẢNH
Hình 1. Lưu đồ lựa chọn thuật tốn ................................................................................... 18
Hình 2. Xếp chồng tuyến tình của các lớp ........................................................................ 20
Hình 3. Lớp cuối cùng ....................................................................................................... 21
Hình 4. Minh họa việc nhắn tin ......................................................................................... 27
Hình 5. Minh họa việc phân tích ....................................................................................... 27

3


DANH MỤC BẢNG BIỂU
Bảng 1. Các thông số học tập ............................................................................................ 23
Bảng 2. Các siêu tham số học tập ...................................................................................... 24

4


LỜI CẢM ƠN
Trước tiên với tình cảm sâu sắc và chân thành nhất, cho phép chúng em được bày tỏ lịng
biết ơn đến cơ Huỳnh Hồ Thị Mộng Trinh – giáo viên hướng dẫn môn Đồ án 2 đã tận tình
giúp đỡ, trực tiếp chỉ bảo, hướng dẫn nhóm trong suốt q trình làm đồ án mơn học. Cơ đã

truyền đạt vốn kiến thức quý báu bằng những lời hướng dẫn, dạy bảo thì tụi em mới có thể
hồn thành đồ án. Bước đầu đi vào thực tế của chúng em cịn hạn chế và cịn nhiều bỡ ngỡ
nên khơng tránh khỏi những thiếu sót, nhóm rất mong nhận được những ý kiến đóng góp
q báu của cơ để kiến thức của nhóm trong lĩnh vực này được hồn thiện hơn đồng thời
có điều kiện bổ sung, nâng cao ý thức của mình. Lời cuối, nhóm xin kính chúc cơ thật dồi
dào sức khỏe, niềm tin để tiếp tục thực hiện sứ mệnh cao đẹp là truyền đạt kiến thức cho
các bạn sinh viên.

Thủ Đức, ngày 16 tháng 6 năm 2022
Sinh viên

Lê Hồng Phúc
Trương Cơng Hưng

5


CHƯƠNG I. TỔNG QUAN
1. Lý do chọn đề tài
Xã hội ngày càng phát triển, với tính chất cơng việc và cuộc sống ngày càng bận rộn.
Chính điều này đã vơ tình khiến cho chúng ta im lặng, thụ động trong giao tiếp hay cũng
khơng có thời gian để ra ngồi đi chơi, tìm kiếm những mối quan hệ. Từ đó khiến cho các
mối quan hệ của chúng ta ngày càng thu hẹp. Nắm bắt được tình hình này cùng với việc
điện thoại, mạng xã hội và internet phát triển mạnh mẽ thì nhóm chúng em đã lên một ý
tưởng tạo ra một ứng dụng hẹn hò online và được thực hiện ở mơn học Đồ án 1. Nhưng
sau đó, dựa trên tìm hiểu của nhóm, đa số người dùng ngại sử dụng các ứng dụng hẹn hị
là vì sợ gặp người xấu, lừa đảo,.. Do đó đa phần mang tâm lý chung là không sử dụng hoặc
chỉ sử dụng cho vui, viết thời gian, khơng thực sự muốn tìm người u qua ứng dụng hẹn
hị. Nắm bắt được tình hình đó, nhóm chúng em quyết định xây dựng tính năng phát hiện
người dùng xấu trên ứng dụng hẹn hò để người dùng có thể an tâm hơn khi sử dụng cũng

như giúp mọi người tìm được một nửa yêu thương phù hợp nhất với mình.
2. Mục tiêu
Sau khi tìm hiểu và lên ý tưởng, nhóm chúng em đã đề xuất tính năng phát hiện người
dùng xấu qua những dịng tin nhắn. Hệ thống sẽ phân tích và sau đó đưa ra đánh giá người
dùng, dựa vào đó sẽ giới thiệu đến mọi người những người bạn phù hợp nhất. Hơn hết mục
đích chính vẫn là đảm bảo sự uy tính của ứng dụng, giúp người dùng an tâm hơn khi sử
dụng, sẽ không phải lo sợ gặp người xấu, lừa đảo…
3. Phạm vi
• Phạm vi kiến thức: trong giới hạn mơn Đồ án 2.
• Phạm vi thiết bị: sử dụng trên các thiết bị di động android và ios.
• Phạm vi ngơn ngữ: tiếng Việt.
• Phạm vi người dùng: dành cho người dùng ứng dụng iLove (ứng dụng được thực
hiện ở môn học Đồ án 1).
6


CHƯƠNG II. CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN CÔNG NGHỆ
1. Machine Learning
1.1. Machine Learning là gì?
Machine Learning là một thuật ngữ rộng để chỉ hành động bạn dạy máy tính cải thiện
một nhiệm vụ mà nó đang thực hiện. Cụ thể hơn, machine learning đề cập tới bất kỳ hệ
thống mà hiệu suất của máy tính khi thực hiện một nhiệm vụ sẽ trở nên tốt hơn sau khi
hoàn thành nhiệm vụ đó nhiều lần.
Nói cách khác, khả năng cơ bản nhất của machine learning là sử dụng thuật tốn để
phân tích những thơng tin có sẵn, học hỏi từ nó rồi đưa ra quyết định hoặc dự đốn về một
thứ gì đó có liên quan. Thay vì tạo ra một phần mềm với những hành động, hướng dẫn chi
tiết để thực hiện một nhiệm vụ cụ thể, máy tính được “huấn luyện” bằng cách sử dụng
lượng dữ liệu và các thuật toán để học cách thực hiện nhiệm vụ.
1.2. Machine Learning Workflow
Cụ thể từng bước trong machine learning workflow như sau như sau:

• Data collection – thu thập dữ liệu: để máy tính có thể học được bạn cần có một bộ dữ
liệu (dataset), bạn có thể tự thu thập chúng hoặc lấy các bộ dữ liệu đã được cơng bố
trước đó. Lưu ý là bạn phải thu thập từ nguồn chính thống, có như vậy dữ liệu mới
chính xác và máy có thể học một cách đúng đắng và đạt hiệu quả cao hơn.
• Preprocessing – tiền xử lý: bước này dùng để chuẩn hóa dữ liệu, loại bỏ các thuộc tính
khơng cần thiết, gán nhãn dữ liệu, mã hóa một số đặc trưng, trích xuất đặc trưng, rút
gọn dữ liệu nhưng vẫn đảm bảo kết quả… Bước này tốn thời gian nhất tỉ lệ thuận với
số lượng dữ liệu bạn có. Bước 1 và 2 thường chiếm hơn 70% tổng thời gian thực hiện.
• Training model – huấn luyện mơ hình: bước này là bước bạn huấn luyện cho mơ hình
hay chính là cho nó học trên dữ liệu bạn đã thu thập và xử lý ở hai bước đầu.
• Evaluating model – đánh giá mơ hình: sau khi đã huấn luyện mơ hình xong, chúng ta
cần dùng các độ đo để đánh giá mơ hình, tùy vào từng độ đo khác nhau mà mơ hình
7


cũng được đánh giá tốt hay không khác nhau. Độ chính xác của mơ hình đạt trên 80%
được cho là tốt.
• Improve – cải thiện: sau khi đã đánh giá mơ hình, các mơ hình đạt độ chính xác khơng
tốt thì cần được train lại, chúng ta sẽ lặp lại từ bước 3, cho đến khi đạt độ chính xác như
kỳ vọng. Tổng thời gian của 3 bước cuối rơi vào khoảng 30% tổng thời gian thực hiện.
1.3. Phân nhóm dựa trên phương thức học
Supervised Learning (Học có giám sát):
Về cơ bản, trong thuật toán được giám sát này, dữ liệu đầu vào được gọi là dữ liệu huấn
luyện và có nhãn hoặc kết quả đã biết như thư rác / không phải thư rác hoặc giá cổ phiếu
tại một thời điểm. Trong đó, một mơ hình được chuẩn bị thơng qua một q trình đào tạo.
Ngồi ra, điều này cần thiết để đưa ra dự đoán. Và được sửa chữa khi những dự đốn đó là
sai. Q trình đào tạo tiếp tục cho đến khi mơ hình đạt được mức độ mong muốn.
• Các vấn đề ví dụ là phân loại và hồi quy.
• Các thuật tốn ví dụ bao gồm hồi quy logistic và lan truyền ngược Mạng thần kinh.
Unsupervised Learning (Học không giám sát):

Trong cách học không giám sát này, dữ liệu đầu vào không được dán nhãn và khơng
có kết quả đã biết. Chúng ta phải chuẩn bị một mơ hình bằng cách suy ra các cấu trúc có
trong dữ liệu đầu vào. Điều này có thể là để trích xuất các quy tắc chung. Nó có thể thơng
qua một q trình tốn học để giảm sự dư thừa.
• Các vấn đề ví dụ là phân cụm, giảm kích thước và học quy tắc kết hợp
• Các thuật tốn ví dụ bao gồm thuật tốn Apriori và k-Means.
Semi-Supervised Learning (Học bán giám sát):
Dữ liệu đầu vào là một hỗn hợp của các ví dụ được dán nhãn và khơng nhãn. Có một
vấn đề dự đốn mong muốn. Nhưng mơ hình phải học các cấu trúc để tổ chức dữ liệu cũng
như đưa ra dự đoán.
8


• Các vấn đề ví dụ là phân loại và hồi quy.
• Các thuật tốn ví dụ là phần mở rộng cho các phương thức linh hoạt khác. Điều đó
đưa ra các giả định về cách mơ hình hóa dữ liệu chưa được gắn nhãn.
Reinforcement Learning (Học Củng Cố):
Reinforcement learning là các bài toán giúp cho một hệ thống tự động xác định hành
vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất (maximizing the performance). Hiện tại,
Reinforcement learning chủ yếu được áp dụng vào Lý Thuyết Trò Chơi (Game Theory),
các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất.
Ví dụ: Huấn luyện máy tính chơi game Tetris.
2. Tensorflow
2.1. Tensorflow là gì?
Tensorflow cơ bản là một thư viện dạng nguồn mở được sử dụng rất phổ biến trong
lĩnh vực học máy - Machine Learning giúp gia tăng tốc độ nhanh chóng và dễ dàng hơn.
Một khi trí tuệ nhân tạo được đưa vào trong giảng dạy tại các trường đại học thì sẽ trở nên
nổi tiếng và được dùng phổ biến trong giáo dục.
Tensorflow được tạo ra và phát triển bởi đội ngũ chuyên viên của Google mà cụ thể là
Google Brain. Nó được tạo ra với mục đích chính là sử dụng cho các nhu cầu nghiên cứu

và áp dụng trong sản xuất sao cho hiệu quả nhất. Tensorflow được cấp phép hoạt động vào
tháng 11 năm 2015.
2.2. Kiến trúc của Tensorflow
Kiến trúc của Tensorflow cơ bản bao gồm 3 phần chính là:
• Tiền xử lý dữ liệu.
• Dựng model.
• Train và ước tính model.

9


2.3. Cách hoạt động của Tensorflow
Khi Tensorflow hoạt động sẽ cho phép các lập trình viên có thể tạo ra dataflow graph,
cũng như cấu trúc mô tả làm sao để cho dữ liệu có thể di chuyển qua 1 biểu đồ hoặc di
chuyển qua 1 seri mà các node đang xử lý. Mỗi một node có trong đồ thị thường đại diện
cho 1 operation toán hoặc và mỗi kết nối thường hay edge giữa các node với nhau.
Từ đó, mỗi kết nối hoặc edge giữa các node được xem là mảng dữ liệu đa chiều.
Tensorflow sẽ cung cấp tất cả mọi điều đến cho lập trình viên dựa theo phương thức của
ngôn ngữ Python. Ngôn ngữ này sẽ cung cấp nhiều cách tiện lợi để ta có thể hiểu được nên
làm thế nào cho các high-level abstractions có thể kết hợp được với nhau. Node cũng như
tensor có trong Tensorflow chính là đối tượng của Python. Và, mọi ứng dụng Tensorflow
bản thân chúng chính là một ứng dụng Python.
Các operation tốn học thực sự thì thường khơng được thi hành bằng Python. Những
thư viện biến đổi thường khơng có sẵn thơng qua TensorFlow được viết bằng các binary
C++ có hiệu suất cao.
Ngoài ra, Python chỉ điều hướng cho các lưu lượng giữa các phần cũng như cung cấp
các high-level abstraction lập trình để có thể nối chúng lại với nhau. Train thường phân tán
dễ chạy hơn nhờ vào API mới và sự hỗ trợ cho TensorFlow Lite để cho phép việc triển
khai các mơ hình trên với nhiều nền tảng khác nhau.
2.4. Tensorflow Lite

TensorFlow Lite là giải pháp gọn nhẹ của TensorFlow cho thiết bị di động và thiết bị
nhúng. Nó cho phép suy luận học máy trên thiết bị với độ trễ thấp và kích thước nhị phân
nhỏ. TensorFlow Lite cũng hỗ trợ tăng tốc phần cứng với API Mạng thần kinh Android .
Nó được thiết kế để có độ trễ thấp, với các hạt nhân được tối ưu hóa cho các ứng dụng
di động, kích hoạt được hợp nhất trước và nhiều hơn nữa. Nó cũng thực sự dễ sử dụng và
có một ứng dụng demo tuyệt vời sẽ giúp bạn hoạt động với phân loại hình ảnh từ camera
của thiết bị trên cả Android và iOS.
10


Nó có hai phần:
• Một bộ cơng cụ mà bạn có thể sử dụng để chuẩn bị các mơ hình của mình để sử dụng
trên thiết bị di động. Những thứ này cho phép bạn đóng băng mơ hình của mình để
làm cho nó nhỏ hơn, sau đó tối ưu hóa và chuyển đổi nó trong một quy trình cịn được
gọi là làm phẳng mơ hình để nó sẽ chạy hạnh phúc trên thiết bị di động.
• Thời gian chạy di động với API dễ dàng cho phép bạn truyền dữ liệu cho mơ hình và
lấy lại phân loại.
3. Flutter
3.1. Flutter là gì?
Flutter là mobile UI framework của Google để tạo ra các giao diện chất lượng cao trên
iOS và Android trong khoảng thời gian ngắn. Flutter hoạt động với những code sẵn có
được sử dụng bởi các lập trình viên, các tổ chức. Flutter hồn tồn miễn phí và cũng là mã
nguồn mở.
3.2. Tại sao nên sử dụng Flutter?
Nếu bạn đang tìm kiếm các phương pháp thay thế để phát triển ứng dụng Android, bạn
nên cân nhắc thử Flutter của Google, một framework dựa trên ngơn ngữ lập trình Dart.
Các ứng dụng được xây dựng với Flutter hầu như không thể phân biệt với những ứng
dụng được xây dựng bằng cách sử dụng Android SDK, cả về giao diện và hiệu suất. Hơn
nữa, với những tinh chỉnh nhỏ, chúng có thể chạy trên thiết bị iOS.
Chạy ở 60 fps, giao diện người dùng được tạo ra với Flutter thực thi tốt hơn nhiều so

với những ứng dụng được tạo ra với các framework phát triển đa nền tảng khác chẳng hạn
như React Native và Ionic. Một số lí do khiến bạn có thể hứng thú với Flutter:
• Flutter sử dụng Dart, một ngôn ngữ nhanh, hướng đối tượng với nhiều tính năng
hữu ích như mixin, generic, isolate, và static type.
11


• Flutter có các thành phần UI của riêng nó, cùng với một cơ chế để kết xuất chúng
trên nền tảng Android và iOS. Hầu hết các thành phần giao diện người dùng, đều
sẵn dùng, phù hợp với các nguyên tắc của Material Design.
• Các ứng dụng Flutter có thể được phát triển bằng cách sử dụng IntelliJ IDEA, một
IDE rất giống với Android Studio.
3.3. Đặc điểm nổi bật
Fast Development: Tíng năng Hot Reload hoạt động trong milliseconds để hiện thị
giao diện tới bạn. Sử dụng tập hợp các widget có thể customizable để xây dựng giao diện
trong vài phút. Ngồi ra Hot Reload cịn giúp bạn thêm các tính năng, fix bug tiết kiệm thời
gian hơn mà không cần phải thông qua máy ảo, máy android hoặc iOS.
Expressive and Flexible UI: Có rất nhiều các thành phần để xây dựng giao diện của
Flutter vô cùng đẹp mắt theo phong cách Material Design và Cupertino, hỗ trợ nhiều các
APIs chuyển động, smooth scrolling...
Native Performance: Các widget của fluter kết hợp các sự khác biệt của các nền tảng
ví dụ như scrolling, navigation, icons, font để cung cấp một hiệu năng tốt nhất tới iOS và
Android.
4. Firebase
4.1. Firebase là gì?
Firebase là một nền tảng sở hữu bởi google giúp chúng ta phát triển các ứng dụng di
động và web. Họ cung cấp rất nhiều cơng cụ và dịch vụ tiện ích để phát triển ứng dụng nên
một ứng dụng chất lượng. Điều đó rút ngắn thời gian phát triển và giúp ứng dụng sớm ra
mắt với người dùng.
Firebase cung cấp cho người dùng các dịch vụ cơ sở dữ liệu hoạt động trên nền tảng

đám mây với hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính của firebase

12


là giúp người dùng lập trình ứng dụng, phần mềm trên các nền tảng web, di động bằng cách
đơn giản hóa các thao tác với cơ sở dữ liệu.
Với firebase, bạn có thể tạo ra những ứng dụng real-time như app chat, cùng nhiều
tính năng như xác thực người dùng, Cloud Messaging,... Bạn có thể dùng firebase giống
như phần backend của app.
Các dịch vụ của firebase hồn tồn miễn phí, tuy nhiên bạn cần phải trả thêm tiền
nếu muốn nâng cấp lên. Điều này bạn nên cân nhắc nếu muốn xây dựng một ứng dụng lớn
sử dụng phần backend là firebase, vì cái giá khi muốn nâng cấp cịn khá đắt đỏ so với việc
xây dựng backend truyền thống.
4.2. Những tính năng của Firebase
Firebase Realtime Database: là một cơ sở dữ liệu thời gian thực, NoSQL được lưu
trữ đám mây cho phép bạn lưu trữ và đồng bộ dữ liệu. Dữ liệu được lưu trữ dưới dạng cây
Json, và được đồng bộ theo thời gian thực đối với mọi kết nối.
Firebase có các tính năng bảo mật hàng đầu: tất cả dữ liệu được truyền qua một
kết nối an toàn SSL, việc truy vấn cơ sở dữ liệu truy vấn và việc xác nhận thông tin được
điều khiển theo một số các quy tắc security rules language. Các logic bảo mật dữ liệu của
bạn được tập trung ở một nơi để dễ dàng cho việc sửa đổi, cập nhật và kiểm thử.
Làm việc offline: ứng dụng của bạn sẽ duy trì tương tác mặc dù có các vấn đề về kết
nối internet như mạng chậm chờn, mất mạng hay mạng yếu. Trước khi bất kỳ dữ liệu được
ghi đến firebase thì tất cả dữ liệu lập tức sẽ được ghi tạm vào một cơ sử dữ liệu ở local.
Firebase Authentication: là chức năng xác thực người dùng.Hiểu một cách đơn
giản, app của bạn cần phải đăng nhập/ đăng ký tài khoản để sử dụng, Firebase cung cấp
cho chúng ta chức năng xác thực người dùng bằng email, số điện thoại, hay tài khoản
Facebook, Google,...


13


Firebase Cloud Storage: là một không gian lưu trữ dữ liệu, nó giống như một chiếc
ổ cứng. Bạn có thể upload và download các loại file bạn muốn. Đó có thể là một file ảnh,
hay file văn bản, .zip, …
Firebase Cloud Function: phép chúng ta viết những câu truy vấn database lưu trữ
trên cloud. Code của bạn được lưu trữ trong cloud của Google và chạy trong một môi
trường bảo mật, được quản lý. Bạn không cần quan tâm đến vấn đề mở rộng các máy
chủ.Với firebase, khi bạn muốn lấy dữ liệu bạn cần phải viết các câu truy vấn trực tiếp từ
client.
Firebase Analytics: là tính năng giúp bạn phân tích hành vi của người sử dụng trên
ứng dụng của bạn. Cuối cùng nó sẽ đưa ra lời khuyên về lộ trình xây dựng ứng dụng.Để
làm việc này bạn cần cài đặt SDK (Software Development Kit, cụ thể hơn là
FirebaseAnalytics.unitypackage), chức năng phân tích sẽ trở nên khả dụng.
Machine Learning Kit: với Machine Learning Kit bạn có thể làm một số việc:
• Text recognition (nhận dạng văn bản viết tay/ máy).
• Barcode scanning (quét mã vạch).
• Landmark recognition (nhận diện mốc).
• Image labeling (ghi nhãn hình ảnh).
• Face detection (nhận diện khuôn mặt).

14


CHƯƠNG III. PHÂN TÍCH THIẾT KẾ VÀ XÂY DỰNG CHỨC NĂNG
1. Yêu cầu
Xây dựng được chức năng nhận diện được người xấu đảm bảo:
• Độ chính xác phân tích được người xấu > 70%.
• Tính tồn vẹn dữ liệu vẫn được giữa ngun.

• Tích hợp được vào app iLove (ứng dụng được thực hiện ở môn học Đồ án 1).
2. Xây dựng chức năng
2.1. Thu thập dữ liệu
Thu thập dữ liệu là bước quan trọng nhất để giải quyết bất kỳ vấn đề máy học nào. Bộ
phân loại từ ngữ chỉ có thể tốt là dựa vào tập dữ liệu mà nó được xây dựng từ đó.
Điều lưu ý khi thu thập dữ liệu:
• Nếu đang sử dụng API cơng khai, hãy hiểu các giới hạn của API trước khi sử dụng
chúng. Ví dụ: một số API đặt giới hạn về tốc độ thực hiện các truy vấn.
• Càng có nhiều ví dụ đào tạo (mẫu) thì càng tốt. Điều này sẽ giúp mơ hình khái qt
tốt hơn.
• Đảm bảo số lượng mẫu cho mỗi lớp hoặc mỗi chủ đề khơng bị mất cân đối q mức.
Có nghĩa là nên có số lượng mẫu tương đương trong mỗi lớp.
• Đảm bảo rằng các mẫu bao phủ đầy đủ không gian của các đầu vào có thể có, khơng
chỉ các trường hợp thông thường.
2.2. Khám phá dữ liệu
Xây dựng và đào tạo một mơ hình chỉ là một phần của quy trình. Hiểu trước các đặc
điểm của dữ liệu sẽ cho phép xây dựng một mơ hình tốt hơn, có được độ chính xác cao
hơn, yêu cầu ít dữ liệu hơn để đào tạo hoặc ít tài ngun tính tốn hơn.
Đầu tiên, tải tập dữ liệu vào Python:
15


def load_imdb_sentiment_analysis_dataset(data_path, seed=123):

imdb_data_path = os.path.join(data_path, 'aclImdb')

# Load the training data
train_texts = []
train_labels = []
for category in ['pos', 'neg']:

train_path = os.path.join(imdb_data_path, 'train', category)
for fname in sorted(os.listdir(train_path)):
if fname.endswith('.txt'):
with open(os.path.join(train_path, fname)) as f:
train_texts.append(f.read())
train_labels.append(0 if category == 'neg' else 1)

# Load the validation data.
test_texts = []
test_labels = []
for category in ['pos', 'neg']:
test_path = os.path.join(imdb_data_path, 'test', category)
for fname in sorted(os.listdir(test_path)):
if fname.endswith('.txt'):
with open(os.path.join(test_path, fname)) as f:
test_texts.append(f.read())
test_labels.append(0 if category == 'neg' else 1)

# Shuffle the training data and labels.
random.seed(seed)
random.shuffle(train_texts)
random.seed(seed)
random.shuffle(train_labels)
16


return ((train_texts, np.array(train_labels)),
(test_texts, np.array(test_labels)))

Sau khi tải dữ liệu, chọn một vài mẫu và kiểm tra thủ cơng xem chúng có phù hợp với

mong đợi khơng. Ví dụ: in một vài mẫu ngẫu nhiên để xem nhãn cảm xúc có tương ứng
với cảm xúc của bài đánh giá hay không.
Sau khi đã xác minh dữ liệu, hãy thu thập các chỉ số quan trọng sau đây có thể giúp mơ
tả vấn đề phân loại từ ngữ:
• Số lượng mẫu: tổng số ví dụ có trong dữ liệu.
• Số lớp: tổng số chủ đề hoặc danh mục trong dữ liệu.
• Số lượng mẫu mỗi lớp (chủ đề/danh mục): trong một tập dữ liệu cân bằng, tất cả các
lớp sẽ có số lượng mẫu giống nhau. Trong một tập dữ liệu không cân bằng, số lượng
mẫu trong mỗi lớp sẽ rất khác nhau.
• Số từ trên mỗi mẫu: số từ trung bình trong một mẫu.
• Phân phối tần suất của các từ: phân phối hiển thị tần suất (số lần xuất hiện) của mỗi
từ trong tập dữ liệu.
• Phân phối độ dài mẫu: phân phối hiển thị số lượng từ trên mỗi mẫu trong tập dữ
liệu.
2.3. Chọn mơ hình
Sau khi đã tập hợp tập dữ liệu và hiểu rõ hơn về các đặc điểm chính của dữ liệu, tiếp
theo, điều cần làm tiếp theo là suy nghĩ xem nên sử dụng mơ hình phân loại nào? Đối với
một tập dữ liệu nhất định, mục tiêu là tìm ra thuật tốn đạt được độ chính xác gần với độ
chính xác tối đa trong khi giảm thiểu thời gian tính tốn cần thiết để đào tạo. Chúng em đã
tham khảo thuật tốn lựa chọn mơ hình và lưu đồ dưới đây:

17


Hình 1. Lưu đồ lựa chọn thuật tốn
18


Trong sơ đồ bên trên, các hộp màu vàng biểu thị dữ liệu và q trình chuẩn bị mơ hình.
Hộp màu xám và hộp màu xanh lá cây cho biết các lựa chọn mà tác giả đã cân nhắc cho

mỗi quy trình. Các hộp màu xanh lá cây cho biết lựa chọn được đề xuất của tác giả cho
mỗi quy trình.
Từ các thí nghiệm của thuật tốn trên, cho thấy rằng tỷ lệ giữa “số lượng mẫu” (S) với
“số từ trên mỗi mẫu” (W) liên quan với mơ hình nào hoạt động tốt. Khi giá trị cho tỷ lệ này
nhỏ (<1500), các perceptron nhỏ nhiều lớp lấy n-gam làm đầu vào (mà chúng ta sẽ gọi là
Tùy chọn A) hoạt động tốt hơn hoặc ít nhất cũng như các mơ hình trình tự. MLP rất đơn
giản để xác định và hiểu, và chúng mất ít thời gian tính tốn hơn nhiều so với các mơ hình
tuần tự. Trong trường hợp tập dữ liệu này, tỷ lệ mẫu/từ trên mỗi mẫu là ~ 144. Điều này có
nghĩa là mơ hình MLP sẽ được chọn.
2.4. Xây dựng, đào tạo và đánh giá mơ hình
Nhóm sẽ sử dụng TensorFlow với API TF.Keras cho việc xây dựng, đào tạo và đánh
giá mơ hình. Việc xây dựng các mơ hình học máy với Keras là việc lắp ráp các lớp cùng
nhau, các khối xây dựng xử lý dữ liệu, giống như cách bạn sẽ lắp ráp các viên gạch LEGO.
Các lớp này cho phép chỉ định chuỗi các phép biến đổi khi muốn thực hiện trên đầu vào
của dữ liệu.
Lớp đầu vào và các lớp trung gian sẽ được xây dựng khác nhau, tùy thuộc vào việc
đang xây dựng một N-Gram hay mơ hình trình tự (ở đây nhóm xậy dựng N-Gram). Nhưng
khơng phân biệt loại mơ hình, lớp cuối cùng sẽ giống nhau cho một vấn đề nhất định.

19


Hình 2. Xếp chồng tuyến tình của các lớp
Xây dựng lớp cuối cùng
Do chỉ có 2 lớp nên mơ hình sẽ xuất ra một điểm xác suất duy nhất. Chẳng hạn, xuất ra
0,2 cho một mẫu đầu vào đã cho có nghĩa là " dự đốn rằng 20% mẫu này nằm trong lớp
đầu tiên (lớp 1), 80% rằng nó nằm trong lớp thứ hai (lớp 2)." Để tạo điểm xác suất như
vậy, chức năng kích hoạt của lớp cuối cùng phải là hàm sigmoid và hàm loss được sử dụng
để đào tạo mơ hình phải là mục tiêu chéo nhị phân.


20


Hình 3. Lớp cuối cùng
Khi tỷ lệ S/W nhỏ, mơ hình N-gram hoạt động tốt hơn các mơ hình trình tự. Các mơ
hình trình tự tốt hơn khi có một số lượng lớn các vectơ nhỏ, dày đặc. Điều này là do các
mối quan hệ nhúng được học trong không gian dày đặc, và xảy ra tốt nhất so với nhiều
mẫu.
Xây dựng mơ hình N-Gram
Mơ hình xử lý các mã thơng báo một cách độc lập (khơng tính đến thứ tự từ) dưới dạng
các mơ hình N-Gram. Các perceprons nhiều lớp đơn giản (bao gồm hồi quy logistic), máy
tăng gradient và các mơ hình máy vector hỗ trợ đều thuộc danh mục này. Chúng không thể
tận dụng bất kỳ thông tin nào về đặt hàng văn bản.
Nhóm đã tiến hành so sánh hiệu suất của một số mơ hình N-Gram được đề cập ở trên
và quan sát thấy rằng các perceprons nhiều lớp (MLP) thường hoạt động tốt hơn các tùy
chọn khác. MLP rất đơn giản để xác định và hiểu, cung cấp độ chính xác tốt và yêu cầu
tính tốn tương đối ít.
Đoạn code sau đây xác định mơ hình MLP hai lớp trong tf.keras, thêm một vài lớp bỏ
học để chính quy hóa (để ngăn chặn q mức đào tạo mẫu).

21


from tensorflow.python.keras import models
from tensorflow.python.keras.layers import Dense
from tensorflow.python.keras.layers import Dropout
def mlp_model(layers, units, dropout_rate, input_shape, num_classes):
"""Creates an instance of a multi-layer perceptron model.
# Arguments
layers: int, number of `Dense` layers in the model.

units: int, output dimension of the layers.
dropout_rate: float, percentage of input to drop at Dropout
layers.
input_shape: tuple, shape of input to the model.
num_classes: int, number of output classes.
# Returns
An MLP model instance.
"""
op_units, op_activation =
_get_last_layer_units_and_activation(num_classes)
model = models.Sequential()
model.add(Dropout(rate=dropout_rate, input_shape=input_shape))
for _ in range(layers-1):
model.add(Dense(units=units, activation='relu'))
model.add(Dropout(rate=dropout_rate))
model.add(Dense(units=op_units, activation=op_activation))
return model

Đào tạo mơ hình model
Sau khi đã xây dựng được kiến trúc mơ hình nhưng cần đào tạo mơ hình. Đào tạo liên
quan đến việc đưa ra dự đốn dựa trên trạng thái hiện tại của mơ hình, tính tốn mức độ
khơng chính xác của dự đốn và cập nhật các trọng số hoặc tham số của mạng để giảm
thiểu lỗi này và làm cho mơ hình dự đốn tốt hơn. Nhóm sẽ lặp lại q trình này cho đến

22


×