LỜI CAM ĐOANTôi xin cam đoan luận văn thạc sĩ “Xây dựng ứng dụng Phân loại bình luận thời gian thực sử dụng phân tích dữ liệu lớn trong thương mại điện tử” là công trình nghiên cứu của r
Trang 1ĐẠI HỌC QUOC GIA THÀNH PHO HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan luận văn thạc sĩ “Xây dựng ứng dụng Phân loại bình luận thời
gian thực sử dụng phân tích dữ liệu lớn trong thương mại điện tử” là công trình nghiên
cứu của riêng tôi.
Tôi cam đoan rằng các số liệu được sử dụng trong luận văn là trung thực và khôngxuất hiện trong bat kỳ công trình nghiên cứu nào trước đây Luận văn có kế thừa phươngpháp từ một số công trình trước, và sẽ trích dẫn nguồn tham khảo đầy đủ
Tất cả các nguồn tài liệu tham khảo, bộ dé liệu chuẩn đề huấn luyện mô hình,
nếu được tham khảo hoặc sử dụng, đều đã có thư xin phép tác giả và trích dẫn phù hợp
Học viên
Trần Bình Hậu
Trang 3LỜI CẢM ƠN
Để hoàn thành khóa luận này, ngoài sự nỗ lực của bản thân, tôi cũng nhờ sự hỗ trợrất nhiệt thành từ quý Thay/C6, ban học, đồng nghiệp trong khoa, Trường và gia đình
đã tạo điều kiện dé tôi có thời gian thực hiện công việc
Tôi xin chân thành cám ơn đến:
© Quý Thay/Cé trong trường Dh Công nghệ Thông tin- ĐHQG TP HCM đã truyền
đạt kiến thức trong quá trình học tập
e Xin chân thành cám ơn sâu sắc đến TS Đỗ Trọng Hợp đã tư van, định hướng
trong việc tìm kiếm đề tài Thầy đã thâm định chuyên môn và hỗ trợ rất nhiềutrong quá trình thực nghiệm, cũng như dành thời gian trau chuốt nội dung bài viết
này.
e Tôi cũng muốn gửi lời tri ân tới các bạn đồng học, đã cho tôi cơ hội cộng tác
trong suốt khóa học, nhắc nhở nhau trong quá trình làm khóa luận
Tôi xin chân thành tri ân quý Thầy/Cô, bạn bè và gia đình những lời chúc tốt đẹp
và thành công trong cuộc sống,
TP Hồ Chí Minh, ngày tháng năm 2023
Học viên
Trần Bình Hậu
Trang 4CHƯƠNG 1: TONG QUAN VE DE TÀI àoi eecccccccrrrrrrrrrrrrrre 11
1 Giới thiệu đề tài 2 HH eeeiiie 111.1 Đặt vấn A ooo cccccccssseesssseesssvesssseessssecsssvesssseessssesssssesssseesessvesssseesssseessnvesssseessee ial
1.2 Mục tiêu nghiên cứu
1.3 Đối tượng và phạm vi nghiên cứu :¿222222222++++tttttEEvrvrrvrrrrrrrre 14
1.4 Phương pháp nghiên CỨU -¿- 5+ + St ềvEEErErrkexerrrrrkrrrrrrrrrerrrk 14 1.5 Câu hỏi khi nghiên cứu -¿- ¿5:5 st2x2t‡*t2teEtextrkerrrrrrrerirrerrrrrrrrrrrree 14
1.6 Công việc cần làm -:-222222¿+22221112122221111222211122217111221211112210111 E1 15
2 Tình hình nghiên CỨU St 52t St tt EEKEE E11 rrrrey 15 2.1 Tinh hình nghiên cứu trong nƯỚC oo ceeesesceeseseeeeseseseseerencsceeseseeneneensesseneaeeneees 15
2.2 Tình hình nghiên cứu trên thé giới ¿+22EE++¿+22EEE+2+t2222222+tzrrrkcee 172.3 Nhận định về các TnighiÊn CỨU - 5c + tt Eétekererrkeksrerirkrrkerrrkrkrree 18CHUONG 2: KIÊN THỨC NEN TANG
8 Các chỉ số đánh giá thuật toán -:-¿-2222222+222221122212111 22111 1c 27
9 Các bước xây dựng bộ dit liệu - 6 S2 Sx+téxeEEEtErEkekerkrrtrrrrirrrrkrrree 29
CHƯƠNG 3: THU THẬP VÀ XÂY DỰNG BO DỮ LIỆU - 32
1 Thu thập dit liệu cho mô hình - - - + 5t E#EvEvEvEEeEerererkrtrtsrerrrkrkrrerrre 32
2 Xây dựng bộ dữ liệu huấn ID 3 44
CHƯƠNG 4: THỰC NGHIỆNM 5< 5< 5< server 47
1 Các công cụ sử dung trong đề tài -. 22222222 2222222222211 2222111222 crrrkk 47
Trang 52 Môi trường huấn luyện mô hình 2:+22222EEE22222++rtttttEEEExvvrrrrrrree 56
3 Phân tích thiết kế hệ thống 222222E222+2222232222222312222211122222112 ccrrkk 57
4 Mô hình luận lý phân loại bình luận - ¿+ + 5++cv+xeE+xerxerrxererrree 59
5 Áp dụng Big Data vào mô hình cccccssssssessssssssessssssseesssssnsesessssiseesssssiesessssseeeeess 60
6 Thực nghiệm với kỹ thuật Machine Learning - - +5 s+scecvrer+x 60
7 Thực nghiệm với kỹ thuật Deep Learning - - 5+5 St+xscsrvxvrtsvskerrrrrrvee 62
8 Triển khai với công cụ Kafka, Sparlk .-2-:2222 22 2222211222222112 2212112 eetre 66
9 Triển khai xây dựng nguồn gia lập dữ liệu web tiki :-::55ccccccvvcccez 67
Trang 6Danh mục các bảng
Bang 1 - Tình hình nghiên cứu trong nưỚC ¿+ cv s+tsxexererertrtsrererrrxee 17
Bảng 2 - Tình hình nghiên cứu thế giới
Bảng 3 - Kết quả thực nghiệm theo Machine Learning
Bảng 5 - Thực hiện với thuật toán Machine Learning có áp dụng Spark
Bảng 4 - Thực hiện với kỹ thuật Deep Learning
Trang 7Danh mục các hình vẽ, đồ thị
Hình | - Một số dang bình luận trên inf€rnet + scsccsrsrtrxetsrsrrrrtsrerrrer 12
Hình 2 - Mô tả bài toán dạng tông quát
Hình 3 - Mô hình hệ thống cần xây dựng
Hình 4 - Một số giai đoạn phát triển của Deep Learning
Hình 5 - Quá trình "học sâu"
Hình 6 - Áp dụng ML/DL vào bài toán phân loại bình luận
Hình 8 - Một số nền tang trong hệ sinh thái Big Dat
Hình 9 - Bài toán phân loại bình luận
Hình 16 - Lấy đánh giá sản phẩm từ một công cụ khác dé kiểm tra chéo kết quả
Hình 17 - Lấy kết quả bình luận một sản pham từ công cụ khác dé so sánh
Hình 18 - Hiển thị kết quả đưới dang JSON dé tường minh hơn
Hình 19 - Kết quả JSON, tập trung yếu tố cần quan tâm là content và rating
Hình 20 - Phân bó dữ liệu tính cực - tiêu cực
Hình 21 - Cấu hình JAVA_HOME
Hình 22 - Các folders và files khi giải nén zookeeper
Hình 23 - Cầu hình biến môi trường Zookeeper
Hình 24 - Kết quả "start" thành công zookeeper
Hình 25 - Kết quả "start" kafka thành công
Hình 26 - Lược sử phát triển của Spark
Hình 27 - Spark Streaming sẽ chia nhỏ các luồng thành các lô nhỏ dé xử lý
Hình 28 - Cơ chế hoạt động của Flask
Hình 29 - Bản vẽ Use Case
Hình 30 - Mô hình thiết kế logic hệ thốn;
Hình 31 - Lưu đỗ chỉ tiết thực hiện theo mô hình thiết kế
Hình 32 - Mô hình phân loại bình luận
Hình 33 - Mô hình thiết kế hệ thống áp dụng Big Data (Spark, Kafka
Hình 34 - Confusion matrix
Hình 35- Dashboard hién thị bình luận - Flas!
Hình 36 - Mô hình giả lập web cung cấp đữ liệu bình luận
Hình 37 - Cầu trúc database trang gia lập dữ liệu
Hình 38 - Giao diện trang giả lập bình luận
Hình 39 - Giao diện hiển thị màn hình phân loại bình s
Hình 40 - Bài báo gửi hội thảo ICOIN20214 +5 + c+sstztersrerrrrrrrrrrrrr
Trang 8MỞ DAU
Sự bùng nỗ thông tin, cuộc cách mạng công nghiệp 4.0, và gần đây là xu hướngchuyển đổi số, đã thúc day các tổ chức, doanh nghiệp ứng dung công nghệ thông tin vàocác hoạt động hàng ngày của mình Các doanh chủ, nhà điều hành, nhà quản lý ngàycàng quan tâm nhiều tới việc khai thác thông tin từ đữ liệu phần mềm, mạng xã hội,nhằm gia tăng mức cạnh tranh của đơn vị mình
Nếu hiểu được trải nghiệm khách hàng, xu hướng, thị hiếu thị trường, sẽ là mộtđiểm lợi cực kỳ to lớn để doanh nghiệp có những chiến lược phù hợp Các cuộc khảo sáttruyền thông mặc dù vẫn có giá trị nhất định, nhưng vẫn tồn tại các rủi ro về cảm tính vàchuyên môn của những người thực hiện khảo sát, cũng như đối tượng được khảo sát
Một hướng quản trị mới là dựa vào dữ liệu đề khai thác thông tin từ chúng
Phân loại bình luận (Sentiment Analysis) có 3 hướng lớn để thực hiện: Machine
Learning based, Lexicon-based va Hybrid Trong hướng Machine Learning, sẽ được chia
ra supervised leanring, unsupervised learning va semi-supervised learning, Deep
Learning sẽ là một ngách nói tiếp phía sau
Luận van này thực hiện phân loại bình luận (tích cực/tiêu cực) dựa trên bộ dữ liệu
thu thập được từ trang thương mại điện tử tiki trong mặt hàng sách kinh tế tiếng Việt,dùng các thuật toán Machine Learning, Deep Learning và áp dụng một số kỹ thuật trong
Big Data vào các thuật toán này, nhằm so sánh và lựa chọn thuật toán phù hợp
Trang 9CHƯƠNG 1: TONG QUAN VE DE TÀI
1 Giới thiệu đề tài
1.1 Đặt vấn đề
Chúng ta thường lựa chọn dựa trên quan điểm và kinh nghiệm, nên cảm xúc đóng
một vài trò quan trọng trong hành vi của con người Sự quan tâm của dư luận về một vấn
đề xã hội nào đó có thê trở thành một xu hướng trong tương lai Ý kiến của công chúng
về một sản phẩm, dịch vụ nào đó đối với các nhãn hàng là rất quan trọng, giúp các doanhchủ có chiến lược tiếp thị, sản xuất, kinh doanh, điều hành được tốt hơn
Nếu như trước kia việc lay y kiến khảo sát được thực hiện dựa trên các phiếu giấy,
vừa tốn nhân lực thu thập, cách đặt câu hỏi nếu không khéo cũng không lại kết qua phản
ánh đúng điều mà các tô chức, doanh nghiệp cần Ngoài ra việc làm thủ công sẽ matnhiều thời gian, dẫn đến chỉ phí cơ hội bị bỏ lỡ
Thời đại bùng nỗ thông tin, tất cả các ngành nghề gần như đều sử dụng công nghệ
dé tương tác và tiếp cận khách hàng, hành vi của người dùng cũng vì thé thay đổi rấtnhiều Vì thế việc thu thập các ý kiến khách hàng, các bình luận công chúng được thực
hiện thông qua sự hỗ trợ của các phần mềm, công cụ tin học.
Trang 10You're ana*s.
e
(nguồn ảnh từ:
hps:⁄/writingcooperative.com/how-not-to-take-hate-comments-personally-as-a-creator-5750086181ae )
Mục tiêu chính của đề tài này là xây dựng một công cụ hỗ trợ nhận diện các bình
luận tích cực và tiêu cực liên quan tới sản phẩm/dịch vụ, tần suất thu thập dữ liệu mới là
mỗi 5 phút, đối với dang bài toán này với khoảng thời gian đó xem như phù hợp Ngoài
ra, mục tiêu phụ của dé tài là áp dụng các kỹ thuật có thể xử lý được dữ liệu tăng lênnhanh chóng (dữ liệu trong đề tài không nhất thiết phải là đữ liệu lớn vì hạn chế của việctiếp cận dữ liệu) và thời gian nhận hồi đáp nhanh chóng
Trang 111.2 Mục tiêu nghiên cứu
Mục tiêu nghiên cứu của luận văn này là xây dựng công cụ phân loại bình luận trên
trang thương mại điện tử ứng dụng thuật toán Machine Learning và Deep Learning.
Các bước xây dựng hệ thống:
- Thu thập dé liệu: dữ liệu được thu thập trực tuyến thông qua kết nói tới hệ thong
thương mại điện tử.
- _ Tiền xử lý dữ liệu: kiểm tra, chuẩn hóa đữ liệu, loại bỏ những thông tin ít giá
trị trong dữ liệu.
- Xây dựng mô hình phân loại: sử dụng kỹ thuật xử lý dữ liệu lớn kết hợp xử lý
ngôn ngữ tự nhiên dé đưa ra nhận định phi hợp
- Hiển thị dữ liệu: kết qua phân loại được hién thị dưới dang biểu đồ, trên nền
tảng web.
Cập nhật dữ liệu: dit liệu được cập nhật tự động khi hệ thống được vận hành
Phân tích và đưa ra phân loại: dựa trên các loại bình luận cùng với số lượng bình
luận để các bên liên quan, bao gồm cả khách hàng và chủ nhãn hàng có những hành động
phù hợp với chiến lược của mình.
Trang 121.3 Đối tượng và phạm vi nghiên cứu
Đối tượng nghiên cứu của luận văn là kỹ thuật phân loại bình luận và cách tạo ra
công cụ để hiện thực kỹ thuật phân loại bình luận này
Phạm vi nghiên cứu là một số thuật toán phân loại bình luận Machine Learning
(Logistic Regression, Support Vector Machine, Naive Bayes, Decision Tree) và Deep Learning (LSTM, CNN), kỹ thuật trong hệ sinh thai Big Data (Spark, Kafka, PySpark),
trên tập dữ liệu thu thập từ website thương mai điện tử Tiki, với mặt hang là sách tiếngViệt thuộc lĩnh vực kinh tế
1.4 Phương pháp nghiên cứu
Phương pháp nghiên cứu của luận văn là dựa trên khảo sát các công trình, bài báo
nghiên cứu trước đó để tìm các thuật toán và độ chính xác mà các tác giả đạt được Thựcnghiệm khảo sát trên thị trường thông qua internet đề tìm kiếm sản phẩm tương tự từ cácdoanh nghiệp để học hỏi Sau đó thử nghiệm các thuật toán với bộ dữ liệu thu thập, tiến
hành tinh chỉnh các tham số trong thuật toán, dé đánh giá và lựa chọn thuật toán phù
hợp Cuối cùng là xây dựng công cụ xử lý bài toán
1.5 Câu hỏi khi nghiên cứu
Câu hỏi 1: Tại sao phải làm luận văn này trong khi có rất nhiều nghiên cứu, ứngdụng trước đó và bài này đã có rất nhiều năm?
Trả lời 1: Các ứng dụng được các doanh nghiệp phát triển dé phục vụ nhu cầu nội
bộ, họ không chia sẻ phương pháp làm, nên minh cần làm dé giải quyết bài toán củamình Các nghiên cứu khoa học về mảng này có rất nhiều, nhưng phan lớn tập trung vàocải tiến mô hình để tăng độ chính xác, và tập dữ liệu luận văn làm khác với của họ
Câu hói 2: Tiêu đề luận văn đề cập tới thời gian thực và dữ liệu lớn, vậy nó théhiện như thế nào trong luận văn?
Trả lời 2: Thời gian thực theo cách hiểu của em khi làm đề tài, không phải là đữ
liệu phát sinh liên tục như trong dữ liệu chứng khoán, mà thực ở đây là khi có phát sinh
Trang 13trên hệ thống đích, sau một khoảng thời gian ngắn, cĩ thể là vài phút đến vài chục phút,cơng cụ cĩ thé quét lại dé cập nhật vào bảng kết quả Van đề dữ liệu lớn, trong luận vănđang sử dụng là ý muốn dùng kỹ thuật dành cho xử ly dé liệu lớn, chứ khơng phải dữliệu của luận văn đủ tiêu chuân lớn, điều này do hạn chế khơng phải là chủ trang nênkhơng thể kéo nhiều được.
Câu hỏi 3: Đĩng gĩp của luận văn này là gì?
Trả lời 3: mặc dù luận văn khơng mang lại điểm mới trong học thuật, nhưng hướng
tới kỹ thuật xây dựng bài tốn và giải quyết bài tốn, đồng thời thực nghiệm trên một số
thuật tốn để đưa ra nhận định lựa chọn thuật tốn phù hợp cho dạng bài tốn này
1.6 Cơng việc cần làm
e Phân tích yêu cầu, khảo sát tình hình thị trường, tình hình nghiên cứu và hệ thống
các nghiên cứu đĩ.
e Thu thập, làm sạch, xử lý dữ liệu.
e Xây dựng model phân loại, thiết kế mơ hình phần mềm/cơng cụ
e Thử nghiệm bộ di liệu trên với các model.
e Dua model vào phần mém/céng cụ
e Kết luận, nhận định đề tài, những đĩng gĩp của nghiên cứu, các hạn chế và hướngphát triển
© Gửi bài tới một hội thảo dé cĩ thêm kênh đánh giá
2 Tình hình nghiên cứu
2.1 Tình hình nghiên cứu trong nước
STT Bài báo Kết quả
1 Mơ hình khai phá ý kiến và phân | Bài báo thực hiện phân tích cảm xúc khách
tích cảm xúc khách hàng trực | sau khi mua hàng trên website Foody.vn,
tuyến trong ngành hàng thực | sử dụng một phương pháp học máy cĩ
phẩm (2020) - Đại học Mở giám sát như Decision Tree, Nạve Bayes,
Trang 14Logistic Regression Độ chính xác lên tới 90%, cho các nhận diện bình luân tích cực
và tiêu cực.
Nghiên cứu giải pháp phát hiện
tin gia trên mạng xã hội bằng
ngơn ngữ tiếng Việt (2022) - CTU
Thu thập thơng tin trên mạng xã hội
facebook thơng qua một số nhĩm lớn, vàđối chiếu tin với các trang tin tức chínhthống tại Việt Nam, để so sánh mức độ giả
của tin, dựa trên phương pháp phân tích TF
— IDF, so sánh độ tương đồng cosine và
thu được mức độ chính xác khi phát hiện
tin giả lên đến 70%
Phương pháp phân loại dữ liệu
bình luận của khách hàng trực
tuyến Việt Nam dựa vào học máy
cĩ giám sát (2022) - TNU
Thu thập và phân loại bình luận 15 mặt
hàng trên 5 website thương mại điện tử khác nhau, áp dụng 4 phương pháp học máy như SVM, Nạve Bayes, Neural Network và Decision Tree, độ chính xác
trung bình cao nhất lên đến 80%
From Aspect-Based Sentiment
Analysis to Social Listening
System for Business Intelligence
(2021) — UIT [6]
Xây dựng bộ dữ liệu các phản hồi tiếngViệt trên smartphone, áp dụng kiến trúc
Bi-LSTM với fastText word embeddings,
kết quả F1-score đối với phân loại cảm xúc
lên 63.03% và nhận diện khía cạnh lên tới
84.48%, hon han giá tri Fl-score khi thực
hiện với các phương pháp như Nạve
CNN, Bayes, SVM, Random Forest,
LSTM
Trang 15Hate Speech Detection on
Vietnamese Social Media Text
using the Bi-GRU-LSTM-CNN Model (2019) - UIT [5]
Sử dụng học sâu dựa trên
Bi-GRU-LSTM-CNN để phân lớp, giá trị Fl-score thu
được lên tới 70.576%.
2.2 Tình hình nghiên cứu trên thế giới
Bang I - Tình hình nghiên cứu trong nước
1 Big Data-Deep Learning for
financial sentiment analysis [1S]
Bài báo nhân mạnh sử dụng Deep
Learning đê phân tích bình luận tài chính LSTM, Word2vec và CNN là các kỹ thuật
được dùng, bộ dataset trong đề tài là
StockTwits.
A Novel Machine Learning Approach for Sentiment Analysis
on Twitter Incorporating the
Universal Language Model
Fine-Tuning and SVM
Sử dung kết hop SVM va fine-tuning
ULM (gọi là ULMFiT-SVM), trên các bộ
dữ liệu Twitter, IMDB và GOP Debate,
thu được độ chính xác lên tới 99.78%.
Monolith Real Time
Recommendation System with Collisionless Embedding Table.
[7]
Xây dựng giải pháp thực hiện online
training, phục vụ hệ thống hỗ trợ ra quyết
định với thời gian thực
The impact of Big Data Quality
Kiên trúc unsupervised Deep neural
network được phát triển để phân tích bình
Trang 16luận, và so sánh nó tốt hơn so với SVM
trên cùng bộ dataset
Bảng 2 - Tình hình nghiên cứu thé giới
2.3 Nhận định về các nghiên cứu
Theo góc nhìn chủ quan của tôi sau khi khảo sát qua tình hình nghiên cứu trong
và ngoài nước, các tác giả tập trung phan lớn vào thuật toán và có gắng cai tiễn mô hìnhnhằm làm tăng độ chính xác, hàm lượng học thuật cao, chứ chưa chú trọng nhiều tới khảnăng áp dụng vào thực tiễn, đặc biệt là kha năng triển khai đơn giản, dé mở rộng cũng
như khi vận hành.
Trên thị trường, cũng có nhiều phần mềm nhận diện và phân loại bình luận, nhưngphần lớn phục vụ bộ phận Back-Office của doanh nghiệp hoặc chỉ chạy trong mộtkhoảng thời gian ngắn của sự kiện, và thông tin tôi tìm hiểu cũng chỉ qua người quen,nghe họ đánh giá chứ chưa kiêm nghiệm được những góp ý nay
Trang 17CHƯƠNG 2: KIÊN THỨC NÈN TÁNG
1 Machine learning
Theo định nghĩa từ IBM, Machine Learning là một nhánh của Artificial Intelligence
(AD) và khoa học máy tính, tập trung vào sử dụng dữ liệu và thuật toán nhằm bắt chướccách con người học, dần dần cải thiện độ chính xác của thuật toán đó
Supervised Learning: là phương pháp huấn luyện dựa trên bộ dữ liệu đã được gannhãn, đặc điểm là mô hình cần dữ liệu đầu vào (input) va đầu ra (output)
e Unsupervised Learning: là phương pháp huấn luyện dựa trên bộ dé liệu không
được gan nhãn, đặc điểm mô hình chỉ quan tâm tới dữ liệu đầu vào (input)
2 Các kỹ thuật phân loại bình luận
Phân loại bình luận hay Sentiment Analysis có 3 hướng dé xử lý: dựa trên Machine
learning, dựa trên Lexicon và hướng lai (hybrid) Trong hướng Machine learning, được
chia ra nhiều nhánh con, bao gồm các kỹ thuật Semi-supervised learning, Unsupervisedlearning và Supervised learning, chỉ tiết hơn là sẽ có các thuật toán như Logistic
Regression, Support Vector Machine, Naive Bayes, CNN, LSTM,
Các thuật toán hiện nay có độ chính xác lên tới trên 90%, thời gian thực hiện cũng
khá nhanh đo độ phức tạp dữ liệu trong phân loại bình luận không cao, và phần cứngmáy tính đã cải tiến rất nhiều so với trước Tuy nhiên, đề áp dụng vào thực tế, cần phải
phân tích nghiệp vụ rất kỹ, thì mới xây đựng bài toán phù hợp được
3 Deep Learning
Deep Learning (DL) là một nhánh con của Machine Learning (ML), sự ra đời của
DL đã thúc day bước tiến lớn trong lĩnh vực trí tuệ nhân tạo (AI)
Ta thử đi tìm hiểu lịch sử hình thành của Deep Learning thông qua quá trình pháttriển được hiền thị bởi hình sau:
Trang 18[—* Bayesian Networks * — Backpropagation [Dropout Alexnet
Markov Chains Reinforcement Learning, > Image net Classification
+ Turing Test —* Long-Short-term Memory
Hình 4 - Một số giai đoạn phát triển của Deep Learning
(nguồn ảnh: _ https://www
researchgate.net/figure/Timeline-of-deep-learning-adopted-from-20_ fig] 344738477 )
Luge dé cho thấy quá trình hình thành của trí tuệ nhân tạo và ML từ thập niên 50của thé kỷ trước, tuy nhiên các thiết bị phần cứng máy tính, bộ xử lý thời Ay khiến choviệc xử lý tính toán gặp nhiều khó khăn, và sự thiếu hụt của dữ liệu cũng là một trở ngại.Mãi từ những năm cuối cùng của thế ky 20, sự bùng nổ dữ liệu, cải tiễn khoa học phancứng, tiến bộ của ngành sản xuất bán dẫn, chip vi xử lý, các bộ điều khiến CPU va GPU
đã tạo một cú hích lớn, giúp rút ngắn thời gian tính toán và nâng cao hiệu suất tính toánlên hàng nghìn lần, điều này đã tao cơ héi cho ngành phát triển mạnh hơn
Deep learning khi khai thác mạng neural network, là sự mô tả của thần kinh conngười, đã tạo thế mạnh trong các giải pháp trí tuệ nhân tạo (AI) khác nhau như thị giác
máy tính (computer vision), xử lý ngôn ngữ tự nhiên (natural language processing), phân
tích video thông minh (intelligent video analytics) và nhiều mảng khác Sự phát triển của
deep learning không thé thiéu anh hưởng của mạng tích chập convolutional neural
network (CNN) va recurrent neural network (RNN).
Trang 19Cả machine learning và deep learning đều cải thiện mô hình thông qua dữ liệu,nhưng số lớp dé huấn luyện mô hình của deep learning rất nhiều, chính vì vậy mới có
tên gọi là “deep learning — học sâu”.
CONV LAYER POOLING Re
bộ não con người Trong não người, mỗi nhóm từ 50 đến 100 tế bào thần kinh sẽ chịu
trách nhiệm nhận biết đói tượng, và các nhóm này được sắp xếp theo kiến trúc phân tang
thực hiện chức năng khác nhau Ví dụ nhóm đầu tiên đọc ký tự “A”, nhóm kế tiếp nhậndiện ký tự đó, nhóm tiếp theo sắp xép từ, Tương tự, mô hình deep learning mô phỏngtheo cấu trúc đó, những neurons tương tự như các tế bào Ở giai đoạn huấn luyện(training), các neurons học để nhận diện các đặc trưng dựa trên việc tối ưu các trọng SỐ.Sau quá trình huấn luyện, mô hình đã được xem là tốt nhất, sau đó có thể dùng bộ dữliệu test chưa từng nhận biết để kiểm tra tính hiệu quả của mô hình Lúc này các neurons
chịu trách nhiệm tim ra các pattern trên bộ dữ liệu test Cac pattern được nhận diện bởi
các neurons sẽ được gửi tới các neurons của lớp tiếp theo, cứ như vậy qua nhiều lớp, đề
nhận diện các đặc trưng phức tạp Sau cùng, lớp đầu ra dựa trên xác suất của tat cả các
đặc trưng để quyết định dữ liệu đầu vào là một phần của loại nào đó.
Trang 20So sánh Deep Learning với một số thuật toán Machine Learning truyền thống như
Support Vector Machine (SVM), Bayesian network, Decision Tree khi thực hiện phân
loại bình luận được thê hiện qua hình sau: [14]
Machine Learning
` Eeature Extraction _Medeling
Deep Learning
Dense Embedding
Hidden Layer
Hình 6 - Ap dung ML/DL vào bài toán phân loại bình luận
Pre-processing
(nguồn ảnh: từ bai báo [16])
4 Natural Language Processing (NLP)
Natural Language Processing (NLP) - tập trung vào sự tương tác giữa máy và ngôn ngữ tự nhiên của con người, đưới dang âm thanh hoặc văn ban NLP được chia làm
2 nhánh lớn, bao gồm xử lý tiếng nói (speech processing) và xử lý văn bản (text
processing) Giữa hai nhánh này cũng có liên quan mật thiết và bé trợ nhau như chuyển
đổi văn bản thành tiếng nói và ngược lại
Xử lý văn bản lại được chia làm 2 nhánh nhỏ hơn, là hiểu văn bản và sinh văn
Trang 21search engine), hệ thống hỏi đáp (question answering — QA), tóm tắt văn bản tự động
(automatic text summarization - ATS), chatbot, dich máy (machine translation — MT),
kiểm tra lỗi chính ta tự động,
NLP bao gồm 2 thành phần chính: hiểu ngôn ngữ tự nhiên (Natural LanguageUnderstanding — NLU, biến đổi ngôn ngữ đầu vào thành các biéu diễn hữu ích và phân
tích các khía cạnh khác nhau của ngôn ngữ) và tạo ngôn ngữ tự nhiên (Natural Language
Generation — NLG, tao ra các từ va câu với cau trúc ngữ pháp phù hợp, đủ ý nghĩa)
Một số công cụ/thư viện cần thiết trong NLP hiện nay: spaCy, Natural Language
Toolkit (NLTK), Stanford coreNLP, fastText, gensim, underthesear.
5 Big Data
Big data là thuật ngữ chi các tap đữ liệu lớn va phức tạp, rat khó dé xử lý khi sửdụng các công cụ quản lý cơ sở dữ liệu truyền thống Các tap dữ liệu này có thé là có câutrúc, phi cầu trúc hoặc bán cấu trúc Thách thức của tập dữ liệu nảy là lưu vết, giám sát,
lưu trữ, tìm kiếm, chia sẻ, chuyền đổi, phân tích và trừu tượng hóa.
Đặc trưng của big data là volume (khối lượng dir liệu được tạo ra, phụ thuộc vào
loại dir liệu xử lý mà có ngưỡng được gọi lớn tương ứng), variety (đa dang dữ liệu, như
dang bảng, video, voice, image, json, xml, ), velocity (tốc độ dữ liệu được tạo ra),
value (giá trị dữ liệu), veracity (độ tin cậy của dữ liệu).
Sự khác biệt của big data và data warehouse truyền thống là về độ lớn, tốc độ xử
lý, độ chính xác, tuy nhiên việc triển khai big data cần nhiều kỹ thuật hơn và chỉ phínhiều hơn
Big data được ứng dụng trong nhiều lĩnh vực như tài chính, y tế, thương mại điện
tử, digital marketing, bán lẻ, va nhiều lĩnh vực khác nữa Các phần mềm có triển khaibig data đang hiện diện trong cuộc sống hàng ngày của chúng ta, như google search,
facebook, youtube, tiktok, instagram, ebanking, grab, tiki, agoda, airbnb, booking,
Big data sẽ không thé hiện sức mạnh khi dữ liệu này không được phân tích dé trởthành thông tin hữu ích, hỗ trợ quyết định trong doanh nghiệp Big data landscape:
Trang 22Sousa _ Data Vault Technology Landscape Winter 2016/2019
‘Oeste eco mentee
về big data sẽ hỗ trợ ta rất nhiều trong việc triển khai, ứng dụng các công cụ, phần mềm
vào thực tiễn
6 Distributed Deep Learning (BigDL)
Ngày nay, các bộ dữ liệu ngày càng trở nên lớn hon và phức tạp hơn, vì thé các
hệ thống cơ sở đữ liệu truyền thống không thé nào xử lý được chúng, distributed deeplearning (DDL) chia nhỏ việc tính toán vốn yêu cầu thời gian xử lý và bộ nhớ lưu trữcao, thành các công việc tính toán nhỏ hơn, từ đó có thể gan các việc nhỏ này cho nhiềumáy tinh dé xử lý, đó là ý tưởng khởi điểm của distributed deep learning
Trang 23Nếu làm được như vậy, sẽ giúp các nhà khoa học dữ liệu gia tăng hiệu năng củasản phẩm bằng cách chia nhỏ công việc và tính toán song song, thực thi trên nhiều thiết
bị khác nhau như máy chủ, bộ xử lý GPU, bộ xử lý TPU.
Từ khi trí tuệ nhân tạo được khởi xướng, các nhà khoa học đã đặt mục tiêu làm
sao cho máy tính có thé suy luận và đưa ra quyết định gần như cách của con người
Machine learning sau khi xuất hiện, đã tập trung vào kỹ thuật và mô hình, làm sao cho
máy có thể học và hoạt động trên các môi trường khác nhau, đưa ra các lựa chọn độc
lập với sự can thiệp của con người.
Traditional deep learning tạo ra nhiều mô hình có kiến trúc phức tạp nhằm bắt
chước bộ não con người học những thông tin mới Distributed deep learning cũng được
thiết kế theo cách này, nhưng cải tiến hơn là làm sao dé có thé mở rộng, nhằm làm việcvới khối lượng dữ liệu lớn, bằng cách cho phép các tiến trình học được phân tán ở
những máy tính khác nhau, và sau cùng kết quả sẽ được tổng hợp lại để đưa ra mô hình
hoàn chỉnh nhất Tới đây, ta đã thấy traditional deep learning thì xử lý tập trung trên
một máy tính, trong khi distributed deep learning xử lý phân tán trên nhiều máy
Distributed deep learning bao gồm một tập hợp các thành phan tính toán hoạtđộng như một tổng thể mạch lạc, theo các bước:
- Replicate: sao chép một mô hình lên nhiều GPU
- Scatter: phân bố dữ liệu đầu vào cho nhiều GPU
- Gather: tập hợp kết qua đầu ra từ tat cả GPU và gửi đến GPU chính
- Parallel run: chạy các mô hình cùng lúc trên các đữ liệu đã được phân bó
Mặc dù có những ưu thế về tính toán đối với đữ liệu lớn với thời gian ngắn,nhưng distributed deep learning cũng tồn tại một số hạn chế về bảo mật khi dữ liệu
phân tán nhiều sẽ khó bảo vệ hơn, và một phần mềm phân tán sẽ khó phát triển hơn
phần mềm thông thường, chỉ phi vi thé sẽ tăng lên Tuy nhiên, các nhà phát triển dang
cố gắng tìm giải pháp dé xử lý van dé này trong tương lai gần
Trang 24Tại giai đoạn huấn luyện mô hình cho distributed deep learning, công việc đượcchia sẻ cho các máy đê huấn luyện, tại đây phân chia thành 2 loại là data parallelism và
model parallelism.
So với traditional deep learning thi distributed deep learning đã giải quyết đượcvấn dé mở rộng hệ thống khi gặp bộ dit liệu lớn đến cực lớn, tốc độ huấn luyện mô
hình sẽ nhanh hơn, độ chính xác cao hơn, nhưng ngược lại độ phức tạp của phần mềm
va chi phi distributed deep learning sẽ cao hơn.
BigDL là một thư viện distributed deep learning cua Apache Spark, ta có thé
viết các ứng dụng deep learning theo chuẩn của Spark dé chạy trực tiếp ở tang trên của
các cluster Spark hay Hadoop BigDL hỗ trợ da dạng deep learning, hiệu năng cực kỳ
cao do ding Intel MKL và lập trình multi-threaded cho mỗi Spark task, hiệu quả mởTộng tốt.
BigDL giúp các nhà khoa học dữ liệu và kỹ sư đữ liệu dễ dàng xây dựng phầnmềm AI phân tán BigDL cung cấp các tính năng sau:
- Dllib: một thư viện distributed deep learning của Apache Spark.
- Orca: là mở rộng cua TensorFlow va PyTorch pipeline cho distributed big
data.
- Friesian: một framework về xây dựng ứng dụng dau cuối rat lớn
- Chronos: có khả năng phân tích theo chuỗi thời gian (time-series) dùng
AutoML.
- PPML: bảo vệ sự riêng tư các phân tích big data va machine learning.
Ta sẽ dùng BigDL vào phần mềm deep learning nếu muốn phân tích lượng lớn
dé liệu giống Big data (Hadoop/Spark) cluster, hoặc muốn đưa vào tinh năng deep
learning cho Big data hoặc workflow, hoặc muốn tận dung các Hadoop/Spark cluster
dé chạy các phần mềm deep learning dé chia sé workload
Tai website của project (https://bigdl-project.github.io/0.4.0/# ), đã cung cấp kháday đủ tài liệu về cách cài đặt trên các môi trường, cũng như các ví dụ chỉ tiết để lậptrình viên có thê triển khai thuận lợi
Trang 257 Sentiment Analysis
Sentiment Analysis — phân tích cam xúc, là kỹ thuật thu nhận thông tin về đối tượng
và tìm ra chủ dé một cách tự động Mục tiêu là nhận ra các cảm xúc của người dùng
thuộc dạng tích cực, tiêu cực hoặc trung tính Về phương diện phân loại cảm xúc, có thể
chia thành 3 mức độ: mức đặc trưng, mức cụm từ hoặc mức văn bản Hiện tại cũng có 3
giải pháp cho bài toán phân tích cảm xúc: (1) lexicon-based strategies (chiến lược dựa
trên từ), (2) machine-learning-based techniques (dựa trên kỹ thuật machine learning), và
(3) hybrid (kết hợp lexicon và machine-learning) [14]
leaming Linear Classifier
Neural network Rule-based Classifier| Bayes
‘Supervised leaning
Probabiltic Classifier wutBayesian network
Dictionary-based Maximum entropy
> Lexicon-based
ee
Hình 8 - Bài toán phân loại bình luận
(nguồn ảnh: vẽ lại theo bài báo ở [15])
8 Các chỉ số đánh giá thuật toán
Hiệu suất của mô hình được đo lường thông qua các chỉ số Precision, Recall,
F-score, TP, TN, EP, EN.
Trang 26Precision: độ chính xác, là tỷ lệ của true positive so với các điểm được phân
loại là positive Precision cao có nghĩa là độ chính xác của điểm tìm được cao
Recall: độ phủ, là tỷ lệ của true positive so với những điểm thực sự là positive.Recall cao có nghĩa là tỷ lệ bỏ sót các điểm thực sự positive thấp
TP - true positive: số lượng điểm của lớp positive được phân loại đúng là
Trang 27EN — false negative: số lượng điểm là positive được phân loại thành lớp
negative.
Accuracy: là tỷ lệ giữa số điểm được phân loại đúng trên tổng số điểm
Accuracy chỉ phù hợp khi kích thước các lớp dir liệu tương đồng, còn trường hợp
mắt cân bằng dữ liệu thì ty lệ này không mang nhiều ý nghĩa
Confusion matrix: là ma trận phân bố các lớp, mang nhiều thông tin hơn và
9 Các bước xây dựng bộ dữ liệu
Các bài toán áp dụng kỹ thuật machine learning, deep learning thì sự đóng góp của
dữ liệu là vô cùng lớn, quyết định đến hiệu quả của mô hình và kết quả dự đoán Tuynhiên, để có thé được bộ dữ liệu hữu dung cần phải tốn rat nhiều công sức Nếu một bàitoán được xây dung từ đầu, mà trước đó không hề có bộ dữ liệu chuẩn, thì việc xây dựng
bộ dữ liệu này tốn đến 80% nguồn lực của toàn bài toán Nhìn chung, việc xây dựng bộ
đữ liệu thường trải qua các bước sau:
- Thu thập dữ liệu.
- Lam sạch dữ liệu.
- Chuyên đổi dữ liệu
- Tach dữ liệu.
Trang 289.1 Thu thập dữ liệu
Dữ liệu được sử dụng trong machine learning bao gồm: dé liệu có cấu trúc (dạngbang tính, như SQL table), di liệu phi cấu trúc (hình ảnh, video, âm thanh), dữ liệu báncấu trúc (dang JSON, XML) Khi thu thập dé liệu, cần lưu ý tới khối lượng và chất lượngcủa dữ liệu Nếu biết được điều gi tạo nên đữ liệu tốt, ta sẽ biết cách thu thập nó ở đâu
Ta có thé thu thập đữ liệu từ tổ chức, cơ quan làm việc (di nhiên phải được sự đồng
ý của cấp trên nếu dữ liệu đó quan trọng và ảnh hưởng tới tổ chức Hoặc có thé thu thập
từ bên ngoài, trên các phương tiện công khai như google, kaggle, công thông tin, kho dữliệu được cộng đồng khoa học chia sẻ
Một cách khá phổ biến là có thé thu thập thông qua website bằng công cụ tự động,trong dé tài này ta cũng sứ dụng cách thu thập này Ngoài ra ta cũng có thé thu thập thông
qua khảo sát.
Trong một số trường hợp, dữ liệu thu thập quá ít, ta phải tạo thêm dữ liệu thông
qua các kỹ thuật data augementation.
9.2 Làm sạch dữ liệu
Bước tiếp theo là phải làm sạch dữ liệu, tìm và sửa lỗi, loại bỏ dit liệu không nhất
quán và thêm các giá trị bị thiếu
Đối với trường hợp dữ liệu bị thiếu, có thé bổ sung bằng cách nội suy các giá trị
lân cận, hoặc xóa hắn mẫu đó đi
Đối với những trường hợp mẫu cá biệt, gây ảnh hưởng tới quá trình train model, ta
có thể xử lý bằng cách coi nó là trường hợp riêng biệt và quan trọng (y khoa hay ápdụng), hoặc loại bỏ hoặc biến đổi để giảm tác động của chúng
Trong một số bài toán, cần loại bỏ dữ liệu trùng lặp để mức độ hội tụ nhanh hơn,nhưng một số trường hợp, dữ liệu trùng lặp lại có giá tốt của nó
Một số dit liệu không liên quan có thể được xóa đi để giảm ảnh hưởng của nó vào
mô hình, giảm nhiễu và tăng độ chính xác của mô hình
Trang 29Với những tập dữ liệu mat cân bằng (nhóm nhỏ lại chứa thông tin quan trọng), cóthé lấy mẫu dưới mức của lớp lớn dé cân bằng lại phân bố.
9.3 Chuyển đổi dữ liệu
Ở bước này, ta sẽ chuyên đổi dữ liệu thô sang dữ liệu phù hợp với thuật toánmachine learning Data scaling là kỹ thuật cân bằng lại giữa các đặc trưng (feature), làmthay đổi phạm vi của dữ liệu Data normalization (chuẩn hóa đữ liệu) là kỹ thuật giúp
thay đổi lại phân phối của dữ liệu theo dạng phân bố Gauss
Mã hóa dữ liệu giúp thành định dạng số dé làm đầu vào cho thuật toán Một số bài
toán buộc phải phân cụm dir liệu (rời rac hóa) trước khi đưa vào train Giảm kích thước
tập đữ liệu bằng cách loại bớt những đặc trưng ít đóng góp vào quá trình train, một trongcác kỹ thuật đó là phân tích thành phần chính (PCA)
9.4 Tách dữ liệu
Sau khi dữ liệu được làm sạch và chuyển đổi, cần phải chia tách thành các tập nhỏhơn để sử dụng cho bài toán machine learning Theo lý thuyết, cần phải chia thành tập
train, tập validation và tập test, ty lệ thường là 70-20-10, hoặc tỷ lệ phù hợp vào bai toán.
Kỹ thuật tách đữ liệu phô biến: lấy mẫu ngẫu nhiên, lấy mẫu dựa trên thời gian, lấy
mẫu xác thực chéo
Trang 30CHƯƠNG 3: THU THẬP VÀ XÂY DỰNG BỘ DỮ LIỆU
1 Thu thập dữ liệu cho mô hình
1.1 Thu thập dữ liệu
Dữ liệu sử dụng trong đề tài này được thu thập trực tiếp từ website thương mại điện
tử tiki, mục sản phẩm sách kinh tế tiếng Việt Cách thức thu thập này còn được gọi làweb scraping/crawling, nó trích xuất và xử lý lượng lướng dữ liệu từ website cần thuthập Ta sử dụng ngôn ngữ python dé lập trình thu thập, dựa trên một số framework như
beautiful soup, selenium hay scrapy.
Beautiful Soup là một framework python, nó parse HTML và XML file dé tríchxuất dữ liệu Khi hoạt động, nó gửi các yêu cầu tới địa chỉ trang, và nhận các phản hồi,sau đó mới trích xuất nội dung HTML và đưa vào Beautiful Soup project để thực hiệnparse Hạn chế của Beautiful Soup tại thời điểm thực hiện đề tài, có hạn chế là chỉ crawlđược dữ liệu nh mà không thao tác được trên trang đó, ví dụ muốn qua trang kế tiếp thì
không thực hiện được.
Selenium framework được dùng để scape website, nó tải nội dung một cách tự
động, có thê đăng nhập vào hệ thống, thao tác giống như con người tương tác nên còn
được dùng cho việc automation testing Trong đề tài này, ta cũng sé ding selenium dé
thu thập dữ liệu.
Hướng dẫn thu thập dữ liệu bằng Selenium:
Đầu tiên ta phải tải về driver của trình duyệt mà ta sử dụng dé truy cập vào web
tiki, ví dụ chrome thì có chromedriver, firefox có geckodriver, microsoft edge có
edgedriver, dùng cái nào cũng cho kết quả tương tự
Trang 31Name Date modified Type Size
Š chromedriver 10/1/2023 1:40 PM File folder
a edgedriver win64 10/1/2023 1:40 PM File folder
a geckodriver 10/1/2023 1:40 PM File folder
Hình 11 - Các driver tương tác với trình duyệt dé ldy dữ liệu
Sau đó ta vào website tiki, chọn mục sản phẩm cần tìm, ở đây tôi chọn sách kinh
tế, sẽ được hiển thị các thông tin như hình bên dưới:
Danh Mục Sản Phẩm Sách kinh tế
Giảm đến 50% - Quà tặng Sổ KHO SÁCH PDCA
Tảiuợ bởi 1980 BOOKS HOM 5/54 Tài bởi KHO SÁCH PDCA SIS %
vì nó đơn giản, hợp phong cách phát triển sản phẩm của phần lớn các doanh nghiệp
Lây API:
Vi dụ mình chọn cuốn sách Nghệ thuật Tu duy Chiến lược, sách này cũng có một
số bình luận về sản phẩm, nhấn F12 hoặc click chuột phải lên page và chon Inspect, sau
đó chọn thẻ Network, và các thông tin khác như trong hình.
Trang 32Đây chính là API trả về thông tin sản phẩm, và chỉ tập trung vào một số tham số
ma ta quan tâm, như include = comments (bao gồm nội dung đánh giá), page = (trang),
top = false (Không muôn lây top, vì muôn trộn các đánh giá lại)
https: //tiki.vn/api/v2/reviews ?product_id=<product_id>&include=comments&page=<page_num
>&top=false
Tiếp theo cần lây danh sách ID của san phẩm, nhưng tim không ra API này (có thétôi không biết do không có quen với ai bên Tiki), vì vậy tôi dùng Selenium dé crawl vàBeautiful Soup dé parse từng trang nhằm lây ID sản phâm (nếu có API lấy danh sách IDthì việc này sẽ đơn giản hơn) Đầu tiên ta trở về trang danh sách sản phẩm, mục sáchkinh tế, dùng công cụ Inspect (F12), chọn thẻ Elements, chọn vào sản phẩm, tìm bên
công cụ, ở đây có thuộc tính data-view-content chứa các thông tin của sản phẩm, là cái
ta cân tìm.
Trang 33€ 3 Ơ cá tên eehiinhde/cBAS OP s0@:
‘en tl nin tin PSS THUNG nna rmar SEURVEEIEEE STR LG name Console Sources Network >> © OMS AT wa BEX
Sen li chin, ăn tê “YEU Thy Cotaier-scttdeg-e tt sstyle_Productinkes-7ad6q pryvlewstyle_contenturap-se-bhstkd-© gougt"> 1
BS \e2liwekZ productitem 205 55Ẽ [ st ar tet tsp CS 6
© Giao đến: 1,P.Bến Na.
ben
ete ‘cab data-view-L4-"product_ISet_containar” data-vieu-content="(AquotscL
sew cise Stu Tức 2H
Thưởng Thêm Asva
eee eth sao ovine TEE ‘ attire HhzoayialCs®yfX-]VECCocafiadaoatceatdavs
“5aahiusf20s98:yaeocLECEiee-l” rel "mefelfa" data-clsch rt Kế ToinviaHe-Thwe Hành — — K fais-"/ tha, tiki on/piel pixel ata esogjkeftmeporrvszc Fe
Báo Cáo TH Chan Căn Bán Từ - bexnuarer lgelgtwgrcac}sOoydeseaetkUlnh QUlu0ersuiue
ou (by Bến Nước Chính F
H pecs sect
ui 100.000 169.0004 -15x 1
-4 WWappecsc1dB00.0BEA9/ dụ dv dl seye Productink se TedGaw 2 wskZ produc tem
Styles Computed Layout Event tens DOM Eesipints Properties Acebilty
m or ce 4, @
100.000 3 160000
Hình 14 - Cách lấy ID sản phẩm
Ta tiến hành lập trình để lấy đanh sách ID:
Khai báo các thư viện cần thiết
from selenium.webdriver import Edge
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
from bs4 import BeautifulSoup
Trang 34# Thời gian nghri 9.5 giây sleep_time = 0.5
# thiết lập web driver edge = Edge(service=Service(”D:/LAP-2-
GDRIVE/COLAB/UIT/THESIS/@.Driver/edgedriver_win32/msedgedriver.exe"))
mhumu
6.
7 # khai báo biến
8 base url = "https://tiki.vn/sach-kinh-te/c846"
9 num pages = 2
19 max num_rv =
11 book_ids = []
30
13 # Thu thập dữ liệu mỗi trang
14 for page in range(num_pages):
15 # tới trang tiếp theo.
16 url = base_url + "?sort=top_seller&page=" + str(page + 1)
Trang 35Vi dụ bây giờ ta lây đánh giá của sản phẩm có product_id=12138656 va page=.
Lưu ý là Tiki có enable CORS, nên khi gửi request lưu ý điều này Đầu tiên ta vào công
cụ gửi API request online (https://extendsclass.com/rest-client-online.html, https://www.site24x7.com/tools/restapi-tester.html), đán đoạn mã sau vào 6 URL, https://tiki.vn/api/v2/reviews?product_id=12138656&include=comments&page=l &top
=false , ta được kết quả như sau:
Trang 36© > © â emtendsclasscom/restcient-online html
© Send REST API Request
from your Browser: ït allows
to test local REST API You
trust allow CORS In your REST Method | GET | un hetps:/tiki.vrvapitv2ireviews?product_d=121386568inc! | so |
con) Authentication Headers Body
'® Send REST API Request Response
at ple RES APY _vouraquetae ben ent exces (20)
[Sometimes our server is
ManageEngine` rol f aul E
- oducts PlansandPricing Features Resources Froeloos Support Erteprse Q togin FE
Site24x7
Method Rest APIEndpoint User-Agent ©
cet Phupsyrutvnfapin2ireviews?product Mozilla Firefox (Windows) +
Test Locations ‘Custom Headers © Content Check ©
Fremont-CA-US + Ove @No Ove No
Availability Status Pass Validation Status © N/A
101ms 2ms 18ms 1,325 ms 1,326 ms 1,447 ms
DNS Time Connection Time — SSLHandshakeTime © FirstByte Time LastByte Time Response Time
Hình 16 - Lay kết quả bình luận một sản phẩm từ công cụ khác dé so sánh
Copy response body qua dan vào công cụ Parse JSON online
(https://jsoneditoronline.org/, https://jsonformatter.org/json-editor ) để xem kết quả
tường minh hơn.
Trang 37“title":"c\uiefic k\u98ec h\ueeeed
JSON PARSER XMLFORMATTER JSBEAUTIFIER SAVE RECENTLINKS LOGI
object» data »
> stars (5)
rating average © 4.7 reviaws_count * 347
Để ý rằng response sẽ gồm có 10 đánh giá nằm ở thuộc tinh data, trong mỗi đánh
giá, ở đê tài này ta chỉ quan tâm tới content và rating mà thôi.
JSON BEAUTIFIER JSON PARSER XMLFORMATTER JSBEAUTIFIER RECENT LINKS LOGIN
Hình 18 - Kết quả JSON, tập trung yếu tố can quan tâm là content và rating
Dé giới hạn lại số lượng đánh giá, mỗi sản phẩm ta chi lay 10 trang đánh giá, lưu ý
rằng không phải đánh giá nào cũng có content Thực thi đoạn mã sau dé lấy tối da 10
trang đánh giá cho 50 sản phẩm:
1 # Thiết lập cache & requests
Trang 3825 raw_data = json.1oads(r.content)[ ' data ']
26 for rv in rau data:
27 contents append(rv[ "content" ])
28 ratings append(rv[ ' rating ])
Khi thực thi nó sẽ tạo ra file http_cache.sqlite, đây là file chứa data của dit liệu trả
về, sau đó dữ liệu sẽ được đây vào file data.csv, tùy vào lượng dữ liệu nhiều hay ít mà
thời gian thực hiện sẽ lâu hay mau.
Name: count, dtype: int64
Nhìn vào đây, ta thấy có hiện tượng mắt cân bằng dé liệu (unbalanced) khi rating
5 sao quá nhiều so với những mục khác, điều này sẽ ảnh hưởng tới mô hình
Trang 39Cài đặt các thư viện cần thiết cho tiền xử lý dữ liệu:
import numpy as np import pandas as pd from pyvi import ViTokenizer from sklearn.model selection import train_test_split from sklearn.feature extraction.text import TfidfVectorizer from s import classification_report
DAuUAWNE
Dua dữ liệu vào data frame.
[19]: # Read the raw data from prepared csv file
raw_df = pd.read_csv("data.csv')
raw_df.head()
[19]: content rating
0 Sách đẹp, giao nhanh 5
1 Giao hàng nhanh, đóng gói cẩn thận 5
2 Đặt 2 cuốn mà shop giao có 1 cuốn 1
3 Sách đẹp in rõ nét, tuy ship lâu do lễ shop kh 5
4 Giao nhanh, đóng gói cẩn thận, sách đẹp 5
Mục tiêu của dé tài là đánh giá xem bình luận là tích cực (positive - P) hay tiêu
cực (negative — N), nên có thé quy về bài toán Binary Classification, và giả định tích cực
là (1) với những rating từ 4 sao trở lên, và tiêu cực là (0) với những rating còn lại.
Với cùng 1 nhóm rating, ta ưu tiên lấy những đánh giá có nội dung dai vì cho rằng
người bình luận sẽ dành thời gian suy nghĩ cho bình luận nhiều hơn, đánh giá sẽ mang
nhiều giá trị hơn:
25 rau_df[ ' len ] = raw_df.content.apply(lambda x: len(x))
3 raw_df.sort_values(by=[‘len’], ascending=False, ignore_index=True, inplace=Tru
e)
Lấy các đánh giá tiêu cực:
1 # Giá trị nhỏ hơn 4 là tiêu cực (rating < 4)
2 neg_df = rau df[raw df.rating < 4].copy()
3 neg df.reset index(inplace=True, drop=True)
4 neg df['label'] = @
5 neg đf.drop(labels=['rating', 'len'], axis=1, inplace=True)
6 neg_df
Trang 40content label
0 Cảm nhận chung, sách đưa ra nhiều thông tin dã 0
1 Cảm ơn công sức tác giả đã viết sách.\nTuy nhỉ 0
2 'Đảnh giá tốt cho nha ban.\rinBong gói cần thận 0
3 CUON SÁCH CAN ĐƯỢC TOI UU VỀ GIÁ.\nMinh đã tun 0
4 Tiki Trading và NHỮNG TRẢI NGHIỆM MUA HÀNG TÒI 0
920 Bau lòng quá tiki ơi © @ @ 0
921 chưa đọc mà thấy ban rồi 0
922 Chat lượng giấy chan qua 0
923 Sách viết lan man 0
924 Giáđất — 0
1925 rows x 2 columns
Lấy các đánh giá tích cực:
1 # Giá trị từ 4 trở lên được xem là tích cực (rating >= 4)
2 pos_df = raw df[raw df.rating >= 4].copy()
3 pos_df.reset index(inplace=True, drop=True)
0 Minh sẽ review cả bộ sách ở đây luôn nhé Rất 1
1 ‘Dung làm việc chăm chỉ, hãy làm việc thông min 1
2 Chính Burton G Malkiel đã viết: đây không pha 1
3 QUA SUNG SOT KHI ĐỌC CUÔN SÁCH NAY\rinThéng tí 1
4+ KHỞI NGHIỆP KINH DOANH CÀ PHÊ ~ HOÀNG TIẾN + \r 1
Gộp 2 bộ data tích cực và tiêu cực lại, đồng thời trộn (shuffle) dé đữ liệu phân bố
ngẫu nhiên trong bộ data mới