NumPy được trang bị cáchàm số đã được tối ưu, cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệu ma trận và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng
Trang 1ĐẠI HỌC SÀI GÒN KHOA CÔNG NGHỆ THÔNG TIN
BAO CAO MÔN PHÂN TÍCH MẠNG TRUYỀN THÔNG XÃ HỘI
Đỗ Minh Khoa- 3121410269
Giáo viên hướng dẫn: TRẦN THANH NHÃ
Trang 2MỤC LỤC
Phần 0: Giới thiệu 2
I Lý do chọn đề tài: 2
II Các thư viện Python được sử dụng trong đề tài: 2
Phần 1 : Cào dữ liệu Facebook về và lưu dữ liệu: 6
I Yêu cầu về cài đặt 6
1.Thư viện dùng 6
2 File cookies.txt 7
II Cào dữ liệu FB về và tiền xử lý dữ liệu: 9
1.Cào dữ liệu về: 9
2 Xem thông tin dữ liệu và tiền xử lý dữ liệu: 10
3 Lưu dữ liệu về 11
Phần 2: Phân tích tình trạng phát triển của page 13
I Phân tích sự phát triển lượt react của từng post: 13
1 Bảng chung 13
2.Tính tổng reaction : 14
3.Phân tích 14
II Phân tích từng loại react thống kê theo từng ngày: 14
1.Xem lại dữ liệu thống kê và tinh chỉnh dữ liệu theo cột dòng: 15
2.Sắp xếp lượt react từ cao tới thấp : 15
3 Biểu đồ thống kê theo từng ngày 15
Phần 3 : Phân tích bài viết của page và comment của người dùng 16
I Phân tích bài viết của page 16
II Phân tích comment của người dùng 18
1 Phân tích comment người dùng bằng Textblob : 18
2 Phân tích comment người dùng bằng VADER: 19
Tài liệu tham khảo 20
Trang 3Phần 0: Giới thiệu
I Lý do chọn đề tài:
Trong thực tế hiện nay việc cào dữ liệu Facebook là một việc vô cùng cần thiết và cóứng dụng rất rộng rãi Nhiều công ty về truyền thông ở Việt Nam đã làm nhiều năm nay đãthực hiện cào dữ liệu để thu thập thông tin và đo mức độ ảnh hưởng cho các chương trìnhmarketing / quảng cáo Một số công ty khác thì bán giải pháp trích xuất thông tin từFacebook với đa dạng các nội dung có thể lấy được Hoặc đơn giản nhất với sinh viên hoặcmột số shop bán hàng nhỏ họ thực hiện cào dữ liệu page facebook để theo dõi tình trạngphát triển của page, xu hướng phát trong thời gian gần đây Trong một số cuộc thi về truyềnthông cần tìm tất cả các bài viết Facebook để tìm xem bài viết nào nhiều tương tác nhất đểgiao giải thưởng , hoặc trong 1 bài viết / livestream ta cần cào tất cả các bình luận để xemxem ai là người bình luận sớm nhất và đúng nhất ,….Việc cào dữ liệu FaceBook là một ýtưởng rất hay và cần thiết để nghiên cứu Chính vì vậy trong đề tài này em đã thực hiện cào
dữ liệu Facebook về để nghiên cứu và phân tích dựa vào các trường thông tin đã thu thậpđược Do chưa có nhiều kinh nghiệm về làm báo cáo cũng như những hạn chế về mặt kiếnthức , trong bài báo cáo chắc chắn cũng không thể tránh khỏi những thiếu sót Em mongnhận được sự đóng góp , phê bình từ phía thầy dể báo cáo của em dược hoàn thiện hơn
II Các thư viện Python được sử dụng trong đề tài:
1 Với bài toán thống kê dữ liệu (để theo dõi tình trạng phát triển của page) bằng cáchcào dữ liệu về lượt tương tác (like, wow, sad, share,…) của nhiều post trong 1 pageFacebook và trực quan hóa dữ liệu dưới dạng biểu đồ
- Facebook_scraper :
Thư viện này cho phép thu thập thông tin từ các trang Facebook, nhóm, sự kiện và bài viết
Dữ liệu có thể bao gồm các thông tin như bài viết, bình luận, lượt thích, ảnh, video vànhiều thông tin khác liên quan đến nội dung trên Facebook
Cài đặt: pipinstallfacebook_scraper
- Numpy (Numeric Python):
Là một thư viện toán học rât phổ biến và mạnh mẽ của Python NumPy được trang bị cáchàm số đã được tối ưu, cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệu
ma trận và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng Python đơn thuần.Cài đặt: pipinstallnumpy
- Pandas:
Là một thư viện mã nguồn mở được xây dựng dựa trên NumPy, sử dụng thao tác vàphân tích dữ liệu, được thiết kế để cho phép bạn làm việc với dữ liệu được gắn nhãn hoặcquan hệ theo cách trực quan hơn
Có thể xử lý tập dữ liệu khác nhau về định dạng: chuỗi thời gian, bảng không đồng nhất,
ma trận dữ liệu
Khả năng import dữ liệu từ nhiều nguồn khác nhau như CSV, DB/SQL
Xử lý, phân tích dữ liệu tốt như mô hình hoá và thống kê
Tích hợp tốt với các thư viện khác của python
Cung cấp hiệu suất tốt
Trang 4Cài đặt: pipinstallpandas
- Matplotlib:
Là một thư viện vẽ đồ thị rất mạnh mẽ hữu ích cho những người làm việc với Python vàNumPy Module được sử dụng nhiều nhất của Matplotib là Pyplot cung cấp giao diện nhưMATLAB nhưng thay vào đó, nó sử dụng Python và nó là nguồn mở
Cài đặt: để cài đặt Matplotlib nếu bạn có Anaconda chỉ cần gõ condainstallmatplotlibhoặc sử dụng tools pip pipinstallmatplotlib
2 Với bài toán phân tích tình cảm qua văn bản từ các comment trong 1 bài viết:
- VADER (Valence Aware Dictionary and sEntiment Reasoner)
Là thư viện phân tích quan điểm mã nguồn mở, dựa trên quy tắc/từ vựng trong NLTK Công cụnày được thiết kế đặc biệt cho các quan điểm thể hiện trên mạng xã hội Nó sử dụng kết hợp từvựng về quan điểm và danh sách các từ được gán nhãn mà mang hướng tích cực hay tiêu cực.VADER tính toán quan điểm của văn bản và trả về xác suất của một câu đầu vào nhất định làtích cực, tiêu cực hoặc trung lập Công cụ này có thể phân tích dữ liệu từ tất cả các nền tảngtruyền thông xã hội, chẳng hạn như Twitter và Facebook
Dưới đây là một số đặc điểm chính của VADER:
Không yêu cầu dữ liệu huấn luyện
Hiểu quan điểm của văn bản có chứa biểu tượng cảm xúc, tiếng lóng, liên từ, v.v
Tối ưu cho văn bản trên mạng xã hội
Thư viện mã nguồn mở
** Phân tích tình cảm với thư viện VADER:
- Kết quả trả về(sentiment_scores): là một từ điển chứa các thông số sau:
'compound': Điểm cảm xúc tổng hợp trong khoảng từ -1 đến 1, thể hiện mức độ tích
Trang 5- Vậy giá trị `compound`được tính như thế nào?
Công thức tính giá trị `compound` trong mô-đun VADER của NLTK được mô tả chi tiêtnhư sau:
+ Tính điểm cho mỗi từ:Mỗi từ trong văn bản được gán một điểm cảm xúc dựa trên
từ điển cảm xúc Từ điển này chứa các từ với các điểm tích cực, tiêu cực và trung tính tươngứng
+ Tính tổng điểm tích cực, tiêu cực và trung tính: Tính tổng điểm tích cực (positive),tiêu cực (negative) và trung tính (neutral) của tất cả các từ trong văn bản.Tổng điểm cảmxúc của toàn bộ văn bản được tính bằng cách cộng điểm cảm xúc của từng từ
+ Chuẩn hóa điểm:Tổng điểm cảm xúc được chuẩn hóa để đảm bảo rằng giá trị nằmtrong khoảng [-1, 1] Điều này thường bao gồm việc chia tổng điểm cảm xúc cho một hệ sốchuẩn hóa, được tính để đảm bảo giá trị cuối cùng thể hiện mức độ cảm xúc chính xác
+ Tính giá trị compound: Sử dụng tổng điểm tích cực và tiêu cực, cùng với hệ sốchuẩn hóa, để tính giá trị compound theo công thức:
- TextBlob:
Là một thư viện mã nguồn mở Python được sử dụng để xử lý dữ liệu văn bản TextBlob chophép bạn chỉ định thuật toán bạn muốn sử dụng dưới dạng API đơn giản của nó API củaTextBlobs có thể được sử dụng để thực hiện các tác vụ như gán nhãn từ loại (part-of-speech
Trang 6tagging), trích xuất cụm danh từ (noun phrase extraction), phân loại, dịch thuật, phân tích quanđiểm, v.v.
Để phân tích quan điểm, thư viện TextBlob cung cấp hai cách triển khai:
PatternAnalyzer: (Mặc định) Dựa trên thư viện mẫu
NaiveBayesAnalyzer: Một bộ phân loại NLTK được đào tạo dựa trên kho văn bản đánh giáphim
** Phân tích tình cảm với thư viện TextBlob:
Kết quả trả về: Là một đối tượng `Sentiment` chứa các thông tin về cảm xúc của đoạn vănbản Đối tượng này bao gồm hai thuộc tính chính là `polarity` (điểm cảm xúc tổng hợp) và
`subjectivity` (mức độ chủ quan) Từ đó xác định comment là trạng thái (Sentiment) là tíchcực, tiêu cực hay trung tính (bình thường)
Vậy giá trị của `polarity` và `subjectivity` được tính như thế nào?
- Giá trị polarity:
Dưới đây là mô tả chi tiết về cách tính toán polarity trong TextBlob:
+ Gán điểm cảm xúc cho từng từ: Mỗi từ trong văn bản được gán một điểm cảm xúcdựa trên từ điển tích hợp trong TextBlob Từ điển này chứa các từ với các điểm tích cực vàtiêu cực tương ứng
+ Tính tổng điểm cảm xúc: Tổng điểm cảm xúc của toàn bộ văn bản được tính bằngcách cộng điểm cảm xúc của từng từ
+ Chuẩn hóa tổng điểm cảm xúc: Tổng điểm cảm xúc sau đó có thể được chuẩn hóa
để đảm bảo rằng giá trị nằm trong khoảng [-1, 1] Thông thường, chuẩn hóa có thể đuợcthực hiện bằng cách chia tổng điểm cảm xúc cho số từ trong văn bản hoặc sử dụng mộtphương pháp chuẩn hóa khác
+ Kết quả là Polarity: Kết quả cuối cùng là một số thực nằm trong khoảng [-1, 1], thểhiện mức độ tích cực hoặc tiêu cực của cảm xúc trong văn bản
Trang 7có tính chất chủ quan trong văn bản.
Dưới đây là mô tả chi tiet về cách tính tóan `subjectivity` trong TextBlob:
+ Gán Điểm Chủ Quan cho từng từ: Các từ trong văn bản được gán một điểm chủquan dựa trên từ điển tích hợp trong TextBlob Các từ có tính chất chủ quan sẽ có điểm
`subjectivity` cao, trong khi các từ mang tính khách quan sẽ có điểm `subjectivity` thấp.+ Tính trung bình Điểm Chủ Quan: Trung bình cộng các điểm chủ quan của tất cảcác từ trong văn bản Điều này tạo ra một giá trị trung bình thể hiện mức độ chủ quan trungbình của văn bản
+ Kết Quả Là `Subjectivity`: Kết quả cuối cùng là một số thực nằm trong khoảng [0,1], trong đó 0 là hoàn toàn khách quan và 1 là hoàn toàn chủ quan Nếu giá trị 'subjectivity`gán 0, văn bản có xu hướng mang tính chất khách quan, và nếu gán 1, văn bản có xu hướngmang tính chất chủ quan
Phần 1 : Cào dữ liệu Facebook về và lưu dữ liệu:
I Yêu cầu về cài đặt
Trang 82 File cookies.txt
Bước 1 : Thêm tiện ích get cookies:
cookiestxt/bgaddhkoddajcdgocldbbfleckgcbcid
https://chrome.google.com/webstore/detail/get-Bước 2 : mở facebook và download cookies về :
Trang 9Bước 3 : Rồi upload file lên drive
Trang 10II Cào dữ liệu FB về và tiền xử lý dữ liệu:1.Cào dữ liệu về:
Page dùng để cào post
Trang 11Kết quả được 20 post :
2 Xem thông tin dữ liệu và tiền xử lý dữ liệu:Thông tin của 1 post :
Các trường thông tin của 1 post:
Thống kê chung về tất cả các post :
Trang 12Hiển thị sơ qua 10 post đầu tiên:
Trang 13Lưu dạng excel :
Chuyển từng post vừa có từ list thành 1 dataframe:
Lưu vào file xlsx:
Lưu dạng npy ( để giữ nguyên thuộc tính trong list)
Kết quả cuối cùng ta được 1 file npy và 1 file xlsx:
Trang 14Phần 2: Phân tích tình trạng phát triển của page
I Phân tích sự phát triển lượt react của từng post:
1 Bảng chung
Trang 152.Tính tổng reaction :
3.Phân tích
Biểu đồ thể hiện hiệu suất react của từng bài đăng theo thời gian từ xa đến hiện tại
II Phân tích từng loại react thống kê theo từng ngày:
Trang 161.Xem lại dữ liệu thống kê và tinh chỉnh dữ liệu theo cột dòng:
2.Sắp xếp lượt react từ cao tới thấp :
Trang 17Phần 3 : Phân tích bài viết của page và comment của người dùng
I Phân tích bài viết của page
Lọc comment
Ghi chúng vào tệp trong drive :
Trang 18Tần suất các từ được sử dụng nhiều nhất qua thống kê:
Trang 19II Phân tích comment của người dùng
Sử dụng list đã được thêm ở trên
Tìm kiếm những comment có chứa từ khóa “ Love ”:
1 Phân tích comment người dùng bằng Textblob :
Kết quả trả về :
Trang 202 Phân tích comment người dùng bằng VADER:
Kết quả trả về :
Trang 21Tài liệu tham khảo
1 Youtube: Huy Init - Python cách code Crawl tất cả bài viết và comment của Pagefacebook,https://www.youtube.com/watch?v=0GtHkaZ1_iY
2 Github: Easonlai -facebook_post_scraping_and_text_analytics,
https://github.com/easonlai/facebook_post_scraping_and_text_analytics/blob/main/facebook_post_scraping_and_text_analytics.ipynb
3 Documentation - matplotlib.pylot library,
+ Cào dữ liệu: Hiện tại đề tài nếu cào quá nhiều bài post sẽ bị facebook phát hiện và chặnhoặc khóa Account
+ Tiền xử lý dữ liệu: đề tài chỉ tinh chỉnh dữ liệu cơ bản như thay đổi format của dữ liệu chophù hợp hay thêm vào dữ liệu ở 1 số ô dữ liệu trống, lược bỏ các dấu câu không cần thiết.+ Xử lý dữ liệu: đề tài chỉ xử lí dữ liệu ở mức cơ bản bằng các thư viện có sẵn (ở phần bàitoán phân tích tình cảm)
Những điểm đề tài có thể phát triển:
+ Cào dữ liệu: Có thể làm giả việc đăng nhập facebook bằng thư viện Selenium và tìm hiểuthêm về thư viện Request
+ Tiền xử lý dữ liệu: có thể xây dựng nhiều giải pháp tiền xử lí dữ liệu hơn
+ Xử lý dữ liệu: cần ứng dụng vào nhiều bài toán phức tạp hơn và áp dụng các thuật toán để
xử lý