Để tiến hành thực nghiệm, ta đã thu thập dữ liệu từ 1500 tài khoản (tường) Facebook khác nhau, chủ yếu là Facebook của các nhóm, các fanpage và các Facebook thiết lập ở chế độ công cộng của các công ty, tổ chức, tập đoàn ... Các tài khoản này được thu thập theo cách thủ công (bao gồm tên và facebook id). Cơ sở dữ liệu sử dụng để lưu trữ tập dữ liệu này là MS SQL Server 2008.
Hình 3.11: Một phần danh sách tài khoản Facebook
Sau khi thu thập xong danh sách tài khoản Facebook, ta tiến hành thu thập danh sách các người dùng tham gia bình luận trên Facebook đó, tách ra từng ID người dùng đơn nhất. Cách thức thực hiện được trình bày ở mục dưới.
3.4.3.1. Thu thập dữ liệu mạng xã hội với Facebook API
Để xây dựng chương trình tự động thu thập các bình luận trên tường của một tài khoản Facebook, ta sử dụng công cụ Facebook API [26]. Trước tiên cần đăng ký một tài khoản facebook. Sau đó, truy cập vào liên kết https://developers.facebook.com để tạo một ứng dụng với Facebook API.
Hình 3.12: Giao diện đăng ký một ứng dụng trên Facebook API
Lúc này, ta đã có thể sử dụng các ngôn ngữ lập trình, cụ thể ở đây ta sử dụng Visual Studio 2012 (C#) để xây dựng ứng dụng sử dụng Facebook API để thu thập dữ liệu thông qua công cụ Graph API Explorer.
Một ví dụ thu thập thông tin các bình luận của người dùng trên tường của một Facebook khi dùng Graph API Explorer thủ công như sau:
Để thu thập tự động, ta sử dụng thư viện Facebook.dll với các tham số AppId, Access token của ứng dụng đã đăng ký. Riêng giá trị Access token phải truy cập vào ứng dụng để lấy lại mã vì mỗi giá trị này chỉ có giới hạn phiên làm việc là 2 giờ. Dữ liệu có thể thu thập theo năm, theo số bình luận tối đa trên một trang dữ liệu trả về. Vì thời gian thu thập dữ liệu rất lâu do số lượng bình luận trên các trang này là rất lớn nên ta thu thập dữ liệu theo từng khoảng khác nhau với nhiều ứng dụng cùng thực thi tại một thời điểm. Trong khuôn khổ luận văn này chỉ thu thập các dữ liệu bình luận tính từ năm 2016 trở đi. Bộ dữ liệu thu thập được lưu trữ trên SQL Server 2008 với dung lượng lên tới hơn 4.5 GB.
Hình 3.14: Thu thập dữ liệu tự động với Facebook API
Như ở hình 3.14, 3.15, dữ liệu trả về ở định dạng Json, tiến hành đọc định dạng này và tách ra danh sách ID và đếm số lượng của các người dùng đơn nhất đã bình luận trên các tường Facebook tương ứng.
Hình 3.16: Một phần dữ liệu về danh sách và số lượng ID người dùng đã bình luận trên các tường Facebook tương ứng.
3.4.3.2. Tiền xử lý dữ liệu, xây dựng cấu trúc mạng xã hội dựa trên mối quan tâm của người dùng
Với dữ liệu đã thu thập được, có một số tường Facebook không thu thập được dữ liệu do các tài khoản này đã thiết lập quyền không cho phép thu thập tự động thông qua Facebook API. Ta tiến hành loại bỏ các bản ghi này và một số bản ghi có ít người tham gia bình luận (dưới 100 người) để bộ dữ liệu có ý nghĩa.
Sau đó ta tiến hành xây dựng dữ liệu đồ thị mạng xã hội thu thập được theo mô hình đã giới thiệu ở 3.4.2, và tiến hành xuất ra file FacebookGraphWeight.txt để làm đầu vào cho thuật toán INC phân cụm.
Định dạng file FacebookGraphWeight.text gồm có các dòng là các cạnh của đồ thị với các thông số: đỉnh đầu, đỉnh cuối, số người bình luận chung, số người bình luận trên tường facebook đỉnh đầu, số người bình luận trên tường facebook đỉnh cuối.
Dựa trên các giá trị này, trong chương trình sẽ tính ra được trọng số của các cạnh của đồ thị theo công thức trong 3.4.2.
Sau khi tiền xử lý dữ liệu, bộ dữ liệu thu thập được gồm 1500 đỉnh (FacebookID), 109445 cạnh và 2.604.079 người dùng Facebook đơn nhất tham gia bình luận trên các tường này.
Hình 3.17: Một phần dữ liệu mạng xã hội dựa trên mối quan tâm của người dùng