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

đồ án nhận dạng chủ đề bài viết và ứng dụng (2)

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 (1.19 MB, 28 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN

Báo Cáo Đồ Án Mơn Học

ĐỀ TÀI: NHẬN DẠNG CHỦ ĐỀ BÀI VIẾT VÀ ỨNG DỤNG

Giảng viên hướng dẫn: ThS. Mai Trọng Khang
Lớp: SE122.M21
Môn Học: Đồ án 2

Nhóm sinh viên thực hiện:
Dương Bình Trọng

MSSV: 19521056

Phạm Đức Hồng

MSSV: 19521542

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

Báo Cáo Đồ Án Mơn Học

ĐỀ TÀI: NHẬN DẠNG CHỦ ĐỀ BÀI VIẾT VÀ ỨNG DỤNG

Giảng viên hướng dẫn: ThS. Mai Trọng Khang


Lớp: SE122.M21
Môn Học: Đồ án 2

Nhóm sinh viên thực hiện:
Dương Bình Trọng

MSSV: 19521056

Phạm Đức Hồng

MSSV: 19521542

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


Lời Cảm ơn
Đầu tiên, nhóm chúng em xin gửi lời cảm ơn đến tập thể quý thầy cô của Trường
Đại học Công nghệ Thông tin – Đại học Quốc gia Thành phố Hồ Chí Minh và q
thầy cơ của Khoa Cơng nghệ Phần mềm đã giúp chúng em có những kiến thức nền
tảng để thực hiện đề tài này.
Nhóm chúng em xin gửi lời cảm ơn tới thầy Mai Trọng Khang, là người đã trực
tiếp hướng dẫn nhóm thực hiện đồ án, hướng dẫn tận tình và đóng góp nhiều ý kiến
quý báu giúp chúng em hoàn thành tốt báo cáo của mình.
Trong thời gian thực hiện đề tài, nhóm đã vận dụng những kiến thức nền tảng đã
tích lũy đồng thời kết hợp với việc học hỏi và tiếp thu những kiến thức mới. Chúng
em đã cố gắng vận dụng những gì đã thu thập được để hồn thành đồ án tốt nhất có
thể. Tuy nhiên, trong q trình thực hiện, vẫn khơng tránh khỏi những thiếu sót, chúng
em mong nhận được sự thơng cảm và góp ý chân thành từ các q thầy cơ. Nhóm
chúng em xin trân trọng cảm ơn ạ.


3


Nhận Xét Của Giảng Viên
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................

4



MỤC LỤC
1

TỔNG QUAN ĐỀ TÀI ..................................................................................... 7
1.1

1.1.1

Sơ bộ về xử lí ngơn ngữ tự nhiên ........................................................ 7

1.1.2

Về đề tài đồ án ..................................................................................... 8

1.2
2

Hướng đi..................................................................................................... 9

CƠ SỞ LÍ THUYẾT ....................................................................................... 10
2.1

Phương pháp giải quyết các bài toán trong Machine Learning ............... 10

2.1.1

Supervised Learning – Học có giám sát ............................................ 10

2.1.2


Unsupervised Learning – Học khơng giám sát ................................. 10

2.2

Một số bài tốn áp dụng Máy học để giải quyết trong đồ án ................... 10

2.2.1

Nhận dạng chủ đề bài viết ................................................................. 10

2.2.2

Lọc ra các bài viết tương tự nhau ...................................................... 11

2.2.3

Đánh nhãn bài viết tự động ............................................................... 12

2.2.4

Hệ thống gợi ý tin tức ........................................................................ 14

2.3

3

Giới thiệu .................................................................................................... 7

Google Cloud Platform ............................................................................ 15


2.3.1

Cloud Function .................................................................................. 16

2.3.2

Cloud Run .......................................................................................... 16

2.3.3

Cloud Build ....................................................................................... 16

2.3.4

Cloud Scheduler ................................................................................ 16

XÂY DỰNG ỨNG DỤNG ............................................................................. 17
3.1

Tổng quan ................................................................................................. 17

3.1.1

Mô tả chung ....................................................................................... 17

3.1.2

Tính năng ........................................................................................... 17


3.2

Backend .................................................................................................... 17

3.2.1

Sơ đồ tổnq quan ................................................................................. 17

3.2.2

Giải thích các thành phần .................................................................. 18

3.2.3

Luồng chạy ........................................................................................ 19

3.3

Mobile app................................................................................................ 20

3.3.1

Màn hình Splash ................................................................................ 20

3.3.2

Màn hình Đăng nhập ......................................................................... 21

3.3.3


Màn hình Onboarding ....................................................................... 22

3.3.4

Màn hình Trang chủ .......................................................................... 23
5


4

5

3.3.5

Màn hình Xem bài chi tiết (bài viết gốc)........................................... 24

3.3.6

Màn hình Tìm kiếm ........................................................................... 25

3.3.7

Màn hình Hồ sơ người dùng .............................................................. 26

KẾT LUẬN ..................................................................................................... 27
4.1

Nhận xét ................................................................................................... 27

4.2


Hướng phát triển ...................................................................................... 27

DANH MỤC TÀI LIỆU THAM KHẢO ........................................................ 28

6


1 TỔNG QUAN ĐỀ TÀI
1.1 Giới thiệu
1.1.1 Sơ bộ về xử lí ngơn ngữ tự nhiên
Xử lý ngơn ngữ tự nhiên là một nhánh của Trí tuệ nhân tạo, tập trung vào việc
nghiên cứu sự tương tác giữa máy tính và ngôn ngữ tự nhiên của con người, dưới dạng
tiếng nói (speech) hoặc văn bản (text). Mục tiêu của lĩnh vực này là giúp máy tính
hiểu và thực hiện hiệu quả những nhiệm vụ liên quan đến ngôn ngữ của con người
như: tương tác giữa người và máy, cải thiện hiệu quả giao tiếp giữa con người với con
người, hoặc đơn giản là nâng cao hiệu quả xử lý văn bản và lời nói.
Xử lý ngơn ngữ tự nhiên ra đời từ những năm 40 của thế kỷ 20, trải qua các giai
đoạn phát triển với nhiều phương pháp và mơ hình xử lý khác nhau. Có thể kể tới các
phương pháp sử dụng ơ-tơ-mát và mơ hình xác suất (những năm 50), các phương pháp
dựa trên ký hiệu, các phương pháp ngẫu nhiên (những năm 70), các phương pháp sử
dụng học máy truyền thống (những năm đầu thế kỷ 21), và đặc biệt là sự bùng nổ của
học sâu trong thập kỷ vừa qua.
Xử lý ngôn ngữ tự nhiên có thể được chia ra thành hai nhánh lớn, khơng hồn tồn
độc lập, bao gồm xử lý tiếng nói (speech processing) và xử lý văn bản (text
processing). Xử lý tiếng nói tập trung nghiên cứu, phát triển các thuật tốn, chương
trình máy tính xử lý ngơn ngữ của con người ở dạng tiếng nói (dữ liệu âm thanh). Các
ứng dụng quan trọng của xử lý tiếng nói bao gồm nhận dạng tiếng nói và tổng hợp
tiếng nói. Nếu như nhận dạng tiếng nói là chuyển ngơn ngữ từ dạng tiếng nói sang
dạng văn bản thì ngược lại, tổng hợp tiếng nói chuyển ngơn ngữ từ dạng văn bản

thành tiếng nói. Xử lý văn bản tập trung vào phân tích dữ liệu văn bản. Các ứng dụng
quan trọng của xử lý văn bản bao gồm tìm kiếm và truy xuất thơng tin, dịch máy, tóm
tắt văn bản tự động, hay kiểm lỗi chính tả tự động. Xử lý văn bản đơi khi được chia
tiếp thành hai nhánh nhỏ hơn bao gồm hiểu văn bản và sinh văn bản. Nếu như hiểu
liên quan tới các bài tốn phân tích văn bản thì sinh liên quan tới nhiệm vụ tạo ra văn
bản mới như trong các ứng dụng về dịch máy hoặc tóm tắt văn bản tự động.
Xử lý văn bản bao gồm 4 bước chính sau:
a. Phân tích hình vị: là sự nhận biết, phân tích, và miêu tả cấu trúc của hình vị trong
một ngơn ngữ cho trước và các đơn vị ngôn ngữ khác, như từ gốc, biên từ, phụ tố,
từ loại, v.v. Trong xử lý tiếng Việt, hai bài tốn điển hình trong phần này là tách từ
(word segmentation) và gán nhãn từ loại (part-of-speech tagging).
b. Phân tích cú pháp: là quy trình phân tích một chuỗi các biểu tượng, ở dạng ngôn
ngữ tự nhiên hoặc ngôn ngữ máy tính, tn theo văn phạm hình thức. Văn phạm
hình thức thường dùng trong phân tích cú pháp của ngơn ngữ tự nhiên bao gồm
Văn phạm phi ngữ cảnh (Context-free grammar – CFG), Văn phạm danh mục kết
nối (Combinatory categorial grammar – CCG), và Văn phạm phụ thuộc
(Dependency grammar – DG). Đầu vào của q trình phân tích là một câu gồm
7


một chuỗi từ và nhãn từ loại của chúng, và đầu ra là một cây phân tích thể hiện cấu
trúc cú pháp của câu đó.
c. Phân tích ngữ nghĩa: là quá trình liên hệ cấu trúc ngữ nghĩa, từ cấp độ cụm từ,
mệnh đề, câu và đoạn đến cấp độ toàn bài viết, với ý nghĩa độc lập của chúng. Nói
cách khác, việc này nhằm tìm ra ngữ nghĩa của đầu vào ngơn từ. Phân tích ngữ
nghĩa bao gồm hai mức độ: Ngữ nghĩa từ vựng biểu hiện các ý nghĩa của những từ
thành phần, và phân biệt nghĩa của từ; Ngữ nghĩa thành phần liên quan đến cách
thức các từ liên kết để hình thành những nghĩa rộng hơn.
d. Phân tích diễn ngơn: là phân tích văn bản có xét tới mối quan hệ giữa ngôn ngữ
và ngữ cảnh sử dụng (context-of-use). Phân tích diễn ngơn, do đó, được thực hiện

ở mức độ đoạn văn hoặc toàn bộ văn bản thay vì chỉ phân tích riêng ở mức câu.
1.1.2 Về đề tài đồ án
Xem tin tức luôn là một trong những nhu cầu không thể thiếu của mỗi con người
chúng ta. Hiện nay, có rất nhiều trang báo mạng cung cấp dịch vụ này, tuy nhiên có
một vấn đề, khi ta truy cập vào một trang khó mà biết được tin tức nào phù hợp với
chúng ta, hay thậm chí là đọc tin nào trước, điều này có thể gây ra sự phiền tối khi
chúng ta buộc phải tìm chủ đề nội dung phù hợp với mình
Chính vì lẽ đó, nhóm tụi em đã quyết định nảy ra ý tưởng làm ứng dụng
Hedlines, một ứng dụng gợi ý tin tức phù hợp với người dùng.

8


1.2 Hướng đi
Về hướng áp dụng trí tuệ nhân tạo, đồ án mở rộng bài tốn ra khơng chỉ sử dụng
riêng nhận dạng chủ đề bài viết mà còn sử dụng các kĩ thuật khác như là: lọc các bài
viết tương tự nhau, đánh nhãn bài viết tự động cũng như hiện thực hoá một hệ thống
gợi ý tin tức.
Tự tìm hiểu và xây dựng hệ thống backend hồn tồn bằng các dịch vụ đám mây
(cloud service).
Ứng dụng (mobile app) được xây dựng bằng framework Flutter, một trong những
framework xây dựng các ứng dụng đa nền tảng thịnh hành hiện nay.
Mỗi ngày hệ thống sẽ tiến hành cào (crawl) các bài viết từ nhiều nguồn báo uy tín
về, sau đó qua một số q trình xử lí (gán nhãn, lọc trùng..) rồi tiến hành lưu vào cơ sở
dữ liệu phục vụ cho ứng dụng đầu cuối.
Trong cuốn báo cáo này sẽ gồm 3 phần chính:
• Phần 1: Tổng quan đề tài – nếu khái quát về nội dung cũng như định hướng
sẽ thực hiện đề tài.
• Phần 2: Cơ sở lý thuyết – sẽ tổng hợp các phần kiến thức lý thuyết mà nhóm
đã tìm hiểu khi thực hiện đề tài.

• Phần 3: Xây dựng ứng dụng – mơ tả chi tiết q trình nhóm đã xây dựng nên
ứng dụng thực tế

9


2 CƠ SỞ LÍ THUYẾT
2.1 Phương pháp giải quyết các bài tốn trong Machine Learning
2.1.1 Supervised Learning – Học có giám sát
Trong học tập có giám sát, máy tính được cung cấp các ví dụ đầuvào được gắn
nhãn với đầu ra mong muốn của chúng. Mục đích của phương pháp này là để thuật
tốn có thể học được dạy học bằng cách so sánh kết quả đầu ra thực tế của nó với các
kết quả đầu ra đã được dạy để tìm lỗi và sửa đổi mơ hình cho phù hợp. Do đó, việc
học được giám sát sử dụng các mẫu để dự đoán giá trị nhãn trên dữ liệu khơng được
gắn nhãn bổ sung.
Ví dụ, với việc học có giám sát, một thuật tốn có thể được cung cấp dữ liệu với
văn bản về nghệ thuật được dán nhãn là “arts” và văn bản về Covid-19 được dán nhãn
là “covid-19”. Bằng cách được đào tạo về dữ liệu này, thuật tốn học có giám sát sẽ có
thể sau đó xác định các văn bản mới về nghệ thuật có nhãn là “arts”, các văn bản liên
quan đến Covid-19 có nhãn là “covid-19".
Phương pháp này thường được sử dụng cho các bài toán phân lớp (classification).
2.1.2 Unsupervised Learning – Học không giám sát
Trong học tập không giám sát, dữ liệu khơng được gắn nhãn, vì vậy thuật tốn học
được để lại điểm chung giữa các dữ liệu đầu vào. Vì dữ liệu không được gắn nhãn
phong phú hơn dữ liệu được dán nhãn, các phương pháp machine learning tạo điều
kiện cho việc học tập khơng giám sát đặc biệt có giá trị. Không giám sát thường được
sử dụng cho dữ liệu giao dịch.

2.2 Một số bài toán áp dụng Máy học để giải quyết trong đồ án
2.2.1 Nhận dạng chủ đề bài viết

Nhóm quyết định sẽ thực hiện đồ án sử dụng dữ liệu thuộc 6 chủ đề đưới đây:







Kinh doanh (bussiness)
Giải trí (entertainment)
Thời sự (news)
Du lịch (travel)
Thể thao (sport)
Cơng nghệ (technology)

Vì hầu hết các dữ liệu trên các trang web đều đã được phân loại chủ đề khá rõ ràng
và với bài tốn này cũng rất ít có ứng dụng thực tế, vì thế nhóm đã tiến hành giải
quyết thêm những bài tốn khác mục đích cuối cùng chính là làm cho ứng dụng (sẽ
được trình bày ở phần mục lớn kế tiếp) hấp dẫn, thu hút người dùng hơn.

10


2.2.2 Lọc ra các bài viết tương tự nhau
Vấn đề
Vì các bài viết (tin tức) được lấy từ nhiều nguồn báo khác nhau nên sẽ có khả năng
cao cùng một nội dung sẽ được nhiều báo khác nhau đăng lại. Nhóm chúng em muốn
có khả năng có thể biết được những bài viết nào tương tự nhau, từ đó có thể cho phép
người dùng biết được những bài viết tương tự như bài viết hiện tại (đang xem) nhưng
được đăng ở các nguồn báo khác thì nó sẽ như thế nào. Hơn nữa, việc biết được mối

quan hệ giữa những bài viết tương tự nhau sẽ giúp ích cho việc mở rộng về sau rất
nhiều, từ hệ thống đề xuất (recommendation system) cho đến việc tìm kiếm bài viết.
Phương pháp giải quyết
Nhóm sẽ quyết định tái sử dụng các kiến thức từ mơn Đồ Án 1 về mơ hình
doc2vec và sử dụng mơ hình doc2vec để giải quyết bài tốn.
Nhắc lại thì doc2vec có khả năng vec-tơ hố văn bản thành vec-tơ n-chiều mang
theo cả ngữ nghĩa của văn bản đó. Tận dụng điều này mà nhóm đã có thể lọc ra những
bài viết gần giống nhau về mặt ngữ nghĩa từ đó giải quyết được bài tốn đặt ra.
Cụ thể thì sau khi đã lấy được dữ liệu là các bài viết đã được phân loại theo 6 chủ
đề như đã nói ở những phần trước. Với mỗi chủ đề sẽ tiến hành huấn luyện (train) một
model doc2vec cho chủ đề đó. Sau đó sử dụng từng model để tiến hành nối kết các bài
viết có nội dung tương tự nhau thông qua chỉ số similarity với ngưỡng mà nhóm quyết
định chọn là 0.85.

Về phần huấn luyện mơ hình, nhóm có tiến hành một số bước tiền xử lí dữ liệu
như: tách từ (tokenize), loại bỏ các từ thông dụng (stopwords), loại bỏ số, chuẩn hố.
Sau đó tiến hành huấn luyện với các thơng số:






vector_size = 60 (số chiều của vecto văn bản)
window = 4 (khung cửa sổ số từ xung quanh từ mục tiêu)
min_count =10 (tần suất tối thiểu để một từ được dùng trong vecto văn bản)
epochs = 100 (số lần lặp cho bộ dữ liệu huấn luyện)
worker = 4 (số luồng sử dụng cho việc huấn luyện)
11



2.2.3 Đánh nhãn bài viết tự động
Vấn đề
Nhóm muốn hiển thị một số nhãn (tag) hay từ khoá (keyword) cho bài viết (tin
tức), nhưng việc đánh nhãn thủ công cho từng bài viết được lấy về từ các nguồn báo là
điều không tưởng và tốn rất nhiều công sức, chi phí. Vì thế nhóm cần một giải pháp
đánh nhãn/từ khố tự động.
Phương pháp giải quyết
Đầu tiên, nhóm tiến hành nghiên cứu một số phương pháp rút trích từ khố tự động
(keyword extraction) được trình bày thành các hướng tiếp cận như sau:
• Rake – hướng tiếp cận giữa trên trên tần số (frequency) xuất hiện của từ:
Rake cho kết quả khá nhanh nhưng chưa thật sự chính xác (liên quan) đến
bài viết gốc vì các từ xuất hiện nhiều chưa chắc đã là từ khố của bài viết.

• KeyBERT – hướng tiếp cận sử dụng Máy học: KeyBERT sử dụng các mơ
hình pre-trained để rút trích ra các từ khố, có kết quả rất tốt với tiếng Anh.
Tuy nhiên với ngữ liệu tiếng Việt chưa thật sự chưa cho ra những kết quả
chấp nhận được vì vẫn chưa có mơ hình pre-trained nào đủ tốt cho ngữ liệu
tiếng Việt.

12


• TextRank – tương tự với Rake, cũng dựa vào tần số xuất hiện của từ: Tuy
nhiên TextRank chỉ phục vụ cho ngữ liệu tiếng Anh hoặc các ngôn ngữ hồ
kết nói chung.

• Yake – hướng tiếp cận dựa vào các đặc trưng của từ: Yake sử dụng 5 đặc
trưng để đánh giá xem từ có phải là từ khố hay không gồm: Casing,
Frequency in document, Position, Context Relevance, Frequency in

different sentences. Yake cho kết quả khả quan nhất dù vẫn cịn nhiều hạn
chế (có thể khắc phục).

13


Nhóm quyết định triển khai theo phương pháp Yake. Tuy nhiên, Yake có hạn chế
chính là từ khố đơi khi vơ nghĩa (not makesense) với con người. Chúng ta có thể hạn
chế việc nay thông qua việc xây dựng bộ từ khố/nhãn có sẵn, và tiến hành ghép nối
các vơ nghĩa được Yake rút trích vào trong bộ từ khố/nhãn sẵn có đã xây dựng.

2.2.4 Hệ thống gợi ý tin tức
Vấn đề
App cần hiển thị các bài viết (tin tức) theo một thứ tự nào đó phù hợp nhất với sở
thích người dùng tuy nhiên vẫn phải đảm bảo ưu tiên cho các bài viết mới, nổi bật. Vì
đặc thù của dữ liệu tin tức nên việc áp dụng các bài báo liên quan có phần hơi khơng
phù hợp, vì nhiều khi sẽ gợi ý những tin đã cũ.
Phương pháp giải quyết
Nhóm tự đề xuất một phương pháp gợi ý dựa trên trọng số được đánh giá theo:
• Các chủ đề người dùng ưa thích (preferences)
• Độ mới (newest first)
• Nổi bật (hot news)
Trọng số sẽ được đánh cho từng chủ đề, từ trọng số ta sẽ suy ra được số lượt mỗi
bài viết trả về từ backend cho client.
Mỗi chủ đề sẽ có:
• Base score (10) – trọng số cơ bản
• Bonus score – trọng số thêm, cho phép mình kiểm sốt độ ưu tiên của các
chủ đề
• Piority factor – hệ số ưu tiên được tính dựa trên chủ đề người dùng thích,
thống kế hành vi người dùng…

• Hate factor – hệ số các bài viết thuộc chủ đề nào đó người dùng khơng hứng
thú
• Like factor – hệ số các bài viết thuộc chủ đề nào đó người dùng hứng thú
14


Từ đó ta có cơng thức tính trọng số cho từng chủ đề:


topic_weight = base_score * (piority_factor – hate_factor + like_factor) + bonus_score

Từ trọng số cho từng chủ đề ta sẽ tính được các bài viết sẽ trả về:


article_count = topic_weight / total_weights * MAX_ARTICLE_COUNT

Sau đó ta sẽ lầy lần lượt mỗi chủ đề article_count bài viết lần lượt từ mới nhất
trước, với các bài nổi bật ta đẩy nó lên đầu. Cuối cùng là trộn mảng kết quả còn lại
một cách ngẫu nhiên.
Sau cùng tiến hành điều chỉnh lại piority_factor một cách đơn giản bằng cách giảm
piority_factor ở các chủ đề lớn nhất và tăng piority_factor ở các chủ đề thấp nhất.

2.3 Google Cloud Platform

Google Cloud Platform (GCP) là một nền tảng của kỹ thuật điện toán đám mây
cho phép các cá nhân, tổ chức, các doanh nghiệp, các cơ quan có thể xây dựng, phát
triển, và hoạt động các ứng dụng của mình trên hệ thống phần mềm do google tạo ra.
Các ứng dụng rất phổ biến hiện nay được mọi người sử dụng rất nhiều như: Trình
duyệt Chrome, ứng dụng bản đồ Google Map, Google Apps, kênh Youtube…
Google Cloud cung cấp tất cả các giải pháp quản lý cho doanh nghiệp, giúp doanh

nghiệp có thể phát triển hệ thống cơng nghệ của mình một cách chính xác, hiện đại.
Bên cạnh đó, GC cịn giúp người dùng và doanh nghiệp giải quyết các vấn đề như:
Development (phát triển), Management (Quản lý), Computer Engine, Mobile, Storage,
Big Data…
Một điểm khác biệt nữa mà Google Cloud Platform mang lại so với các dịch vụ
đám mây khác đó chính là hệ thống DataCenter ln ổn định và có độ bảo mật dữ liệu
cực cao, giúp bảo vệ dữ liệu người dùng và khách hàng trước sự dịm ngó và xâm
nhập trái phép của các hacker công nghệ.

15


2.3.1 Cloud Function
Là một trong những dịch vụ của Google Cloud, Cloud Functions cho phép bạn
chạy code backend tự động trigger các event được kích hoạt bởi tính năng của
Firebase (Google).
Ví dụ như khi chúng ta upload 1 ảnh lên Google Storage thì Cloud Functions sẽ tự
động trigger sự kiện đó để xử lí 1 tác vụ nào đó. Ví dụ như resize ảnh chẳng hạn …
2.3.2 Cloud Run
Cloud Run là một môi trường quản lý máy chủ dành cho triển khai và phát triển
trên những serverless HTTP containers mà khơng cần lo lắng về việc cung
cấp machines,, cấu hình cluster hoặc autoscaling.
2.3.3 Cloud Build
Đây là một sản phẩm của GCP nhằm build mã nguồn của tất cả ngôn ngữ lập trình.
Tăng tơc độ build với VMs trên Cloud và không tốn tài nguyên của máy cá nhân.
Cloud Build hỗ trợ nhiều sự lựa chọn để build mã nguồn: Docker container,Maven,
Gradle, webpack, Go hoặc Bazel.
2.3.4 Cloud Scheduler
Là một công cụ lên lịch trình cho các cơng việc nhằm mục đích cho các công việc
này tự động thực hiện vào đúng thời điểm mong muốn. Giảm thiểu các bước lặp lại

thủ công, Cloud Scheduler cho phép chúng ta chạy các công việc này mỗi tuần, ngày,
giờ, hoặc một khoảng thời gian nào đó tuỳ theo người sử dụng.

16


3 XÂY DỰNG ỨNG DỤNG
3.1 Tổng quan
3.1.1 Mô tả chung

Tên ứng dụng: Hedlines
Ngơn ngữ lập trình sử dụng: Python, Dart (Flutter)
Cơng nghệ sử dụng: Google Cloud Platform, Flutter, Flask.
3.1.2 Tính năng





Đăng nhập/đăng xuất
Xem tin tức mới (theo dạng lướt dọc từng tin)
Tìm kiếm tin tức
Cập nhật chủ đề ưa thích

3.2 Backend
3.2.1 Sơ đồ tổnq quan

17



Toàn bộ hệ thống backend đều được triển khai bằng các dịch vụ đám mây của
Google Cloud Platform và dữ liệu phục vụ tìm kiếm được lưu vào Redis.
3.2.2 Giải thích các thành phần
• Cloud Scheduler: có nhiệm vụ khởi chạy các crawler (bộ cào dữ liệu) bằng
cách bắn tín hiệu vào Cloud Pub/Sub start_crawl.

• news_crawler: là một Cloud Fucntions có nhiệm vụ lấy dữ liệu từ các trang
báo thơng qua RSS (Really Simple Syndication).

• articles_handler: là một Cloud Run có nhiệm vụ xử lí các bài viết đã được
lấy về. Phần xử lí bao gồm lọc trùng, đánh nhãn, thêm thời gian đọc ước
tính...

18


• hedlines: sau đó các bài viết đã được xử lí, các nhãn/từ khố sẽ được lưu
vào Firestore cũng như Redis để phục vụ các mục đích sử dụng

Ngồi ra cịn có 1 số Cloud Functions khác:
• articles_recommender: phục vụ việc trả về các bài viết ở trang chủ cho
app mobile
• articles_searcher: phục vụ việc tìm kiếm tin tức.

3.2.3 Luồng chạy
Mỗi ngày vào 7h và 19h (có thể điều chỉnh), Cloud Scheduler sẽ kích hoạt khởi
chạy news_crawler tiến hành cào các bài viết. Sau đó, news_crawler sẽ gửi dữ liệu
cào được cho articles_handler tiến hành xử lí. Sau q trình xử lí, articles_handler
lưu các bài viết cũng như nhãn/từ khố vào cơ sở dữ liệu.
Ngồi ra, hệ thống có sử dụng CI/CD để tự động deploy lại các dịch vụ khi có sự

thay đổi thơng qua Cloud Build.
19


3.3 Mobile app
3.3.1 Màn hình Splash

20


3.3.2 Màn hình Đăng nhập

21


3.3.3 Màn hình Onboarding

22


3.3.4 Màn hình Trang chủ

23


3.3.5 Màn hình Xem bài chi tiết (bài viết gốc)

24



3.3.6 Màn hình Tìm kiếm

25


×