Bài viết này trình bày một số kỹ thuật liên quan như: thu thập dữ liệu, các phương pháp xử lý và phân tích dữ liệu MXH Twitter. Các dữ liệu thu thập từ mạng xã hội Twitter bao gồm: Thông tin người dùng, thông tin mạng, thông tin người theo dõi và bạn bè, các nội dung Tweets
Trang 1THU THẬP, XỬ LÝ VÀ PHÂN TÍCH DỮ LIỆU MẠNG XÃ HỘI TWITTER BẰNG
PHƯƠNG PHÁP NHÚNG THÔNG TIN NÚT
Phan Đăng Khoa, Vũ Đức Thi
Viện Công nghệ Thông tin, Đại học Quốc gia Hà Nội
khoapd@vnu.edu.vn, vdthi@vnu.edu.vn
TÓM TẮT: Twitter là một mạng xã hội trực tuyến lớn và miễn phí Việc thu thập, xử lý và phân tích dữ liệu Mạng xã hội
(MXH) nói chung và Twitter nói riêng là một lĩnh vực nghiên cứu có ứng dụng rất phong phú, có thể áp dụng vào rất nhiều lĩnh vực trong đời sống xã hội như: thương mại điện tử, marketing, quảng cáo trực tuyến, văn hóa, chính trị, Bài báo này trình bày một số
kỹ thuật liên quan như: thu thập dữ liệu, các phương pháp xử lý và phân tích dữ liệu MXH Twitter Các dữ liệu thu thập từ mạng xã hội Twitter bao gồm: thông tin người dùng, thông tin mạng, thông tin người theo dõi và bạn bè, các nội dung Tweets Sau đó, chúng
tôi thực hiện một số thử nghiệm bằng các kỹ thuật như: node2vec, K-means để xử lý và phân tích dữ liệu thu thập được
Từ khóa: Social Network analysis, network embeddings, node embeddings, Twitter
I GIỚI THIỆU
Twitter là một dịch vụ mạng xã hội trực tuyến miễn phí, nó là một dạng micro-blog cho phép người sử dụng đọc, nhắn và cập nhật các mẩu tin nhỏ gọi là Tweet Các Tweet có giới hạn tối đa 280 ký tự được lan truyền nhanh chóng trong phạm vi nhóm bạn của người nhắn hoặc có thể được đăng rộng rãi cho mọi người Không giống như các nền tảng MXH khác, hầu hết các Tweets của người dùng trên Twitter cũng như thông tin khác liên quan đến người dùng đều hoàn toàn công khai và có thể thu thập được Đây là một đặc điểm thuận thợi để chúng ta có thể thu thập một lượng lớn dữ liệu và thực hiện các phân tích với chúng Twitter API cho phép thực hiện từ các truy vấn đơn giản như lấy thông tin và Tweets của một người dùng, đến các truy vấn phức tạp hơn như lấy tất cả các Tweets về một chủ đề nào đó, có chứa một từ khóa nào đó trong một khoảng thời gian nhất định,
Thu thập và phân tích dữ liệu MXH là một chủ đề hiện được nhiều sự quan tâm với nhiều bài toán có tính ứng dụng cao như: phân tích ảnh hưởng, phân tích và dự đoán liên kết, phát hiện cộng đồng, phân tích trạng thái và quan điểm,…[8]
Bài báo này trình bày một số vấn đề liên quan đến phân tích mạng xã hội như: thu thập dữ liệu, xử lý và phân tích dữ liệu MXH Twitter Cấu trúc của bài báo ngoài phần giới thiệu chung, còn lại gồm các phần: Thu thập dữ liệu Twitter; Xử lý và phân tích dữ liệu Twitter; Thực nghiệm và Kết luận
II THU THẬP DỮ LIỆU TWITTER
A Cơ chế xác thực mở OAuth
Open Authentication (OAuth)1 là một chuẩn mở được sử dụng trong việc xác thực OAuth thường được sử dụng bởi các công ty như Google, Facebook, Twitter, Amazon, Microsoft, như một cách để cho phép người dùng của họ cấp cho các trang web hoặc ứng dụng khác quyền truy cập vào thông tin của họ mà không cần cung cấp mật khẩu Việc xác thực cho các yêu cầu đến API của Twitter được thực hiện bằng OAuth
B Thu thập dữ liệu từ Twitter
1 Thông tin người dùng
Tên: Donald J Trump User’s Twitter handle: @realDonaldTrump (screen_name)
Vị trí (User’s location): Washington, DC Dòng mô tả về người dùng hoặc sở thích: 45th President of the United States of America
Thông tin về hoạt động mạng của người dùng: theo dõi
50 người và có 84.5 triệu người theo dõi
Số tweets đã viết: 54,2 nghìn Tweet Ngày tạo profile: tháng 3 năm 2009
Hình 1 Ví dụ hồ sơ người dùng Twitter
1 https://oauth.net/2/
Trang 2Trên Twitter, mỗi người dùng sẽ tạo hồ sơ (profile) để mô tả về chính bản thân mình cho những người dùng khác Một hồ sơ người dùng luôn chứa các thông tin đầy đủ và có giá trị về họ (Hình 1) Để thu thập thông tin hồ sơ
người dùng, Twitter cung cấp API /users/show.json với tham số được truyền vào là screen_name của người dùng
2 Thông tin người theo dõi và bạn bè
Twitter chính là một mạng có hướng, ở trên Twitter có hai loại kết nối giữa người dùng: theo dõi (follow) và được theo dõi Ở Hình 2 dưới đây là một ví dụ của một mạng người dùng Twitter, xét ba người dùng dangkhoafan, nguyenduong994 và hieu_lq (là các nút màu đỏ) và quan hệ giữa chúng Người dùng nguyenduong994 theo dõi (follow) hieu_lq, tức nguyenduong994 là một người theo dõi (follower) của hieu_lq và hieu_lq được xem là một bạn (friend) của nguyenduong994 Do Twitter không có kết bạn giống như MXH Facebook, nên nếu hai người theo dõi lẫn nhau (trường hợp người dùng dangkhoafan và nguyenduong994) thì được xem như là đã kết bạn với nhau
Hình 2 Ví dụ một mạng người dùng Twitter a) Thu thập những người theo dõi
Danh sách những người theo dõi (followers) của một người dùng có thể thu thập từ Twitter thông qua API
followers/ids 2 hoặc followers/list với tham số chính là user_id hoặc screen_name của người dùng mà chúng ta muốn
lấy danh sách những người đang theo dõi Do giới hạn của số lượng bản ghi trả về, nên chúng ta cần sử dụng tham số cursor để thực hiện việc chia nhỏ danh sách và tải từng phần
b) Thu thập danh sách bạn bè
Để lấy danh sách bạn bè (friends) của một người dùng, Twitter cung cấp API friends/ids 3
và friends/list Các
tham số đầu vào cũng tương tự như API để lấy danh sách người theo dõi (user_id hoặc screen_name của người dùng
mà chúng ta muốn lấy danh sách bạn bè)
3 Thu thập các tweets của người dùng
Các tweets chính là các dòng tin nhắn trạng thái (status) mà người dùng Twitter đăng lên Độ dài tối đa của mỗi tweet
là 280 ký tự Twitter cung cấp một số API để thu thập các tweets
a) Lấy tweets trên dòng thời gian (timelines)
Dòng thời gian đơn giản là một danh sách hoặc một dòng tổng hợp các tweet Để lấy các tweets chúng ta có thể
sử dụng các API: /statuses/home_timeline (lấy những tweets gần đây nhất được đăng bởi tài khoản xác thực và những
người dùng được theo dõi khác), /statuses/user_timeline (lấy những tweets gần đây nhất được đăng bởi một người dùng bất kỳ bằng cách truyền tham số user_id hoặc screen_name tương ứng)4 Từ tháng 6/2019, Twitter giới hạn tổng
requests đến APIs /statuses/mentions_timeline và /statuses/user_timeline còn 100,000 requests mỗi ngày đối với mỗi
tài khoản xác thực
b) Lấy tweets thông qua tìm kiếm
Bên cạnh các API lấy tweets trên dòng thời gian của người dùng được chỉ định, chúng ta có thể lấy các tweets
thỏa mãn các điều kiện tìm kiếm nào đó qua API tìm kiếm /search/tweets5 do Twitter cung cấp Các tiêu chí tìm kiếm được hỗ trợ bao gồm: theo các từ khóa, hashtags, đoạn câu, vùng địa lý,… API tìm kiếm rất hữu ích trong việc thu thập các tweets theo một chủ đề nào đó
III XỬ LÝ, PHÂN TÍCH VÀ BIỂU DIỄN DỮ LIỆU TWITTER
Các MXH nói chung và Twitter nói riêng đều có thể biểu diễn theo kiểu mạng, tức là bao gồm một tập hợp các đỉnh/nút được liên kết bởi các cạnh Đỉnh trong ví dụ ở Hình 2 chính là người dùng của Twitter Cạnh là mối quan hệ,
2
https://api.twitter.com/1.1/followers/ids.json
3 https://api.twitter.com/1.1/friends/ids.json
4 https://developer.twitter.com/en/docs/tweets/timelines/overview
5 https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets
Trang 3tương tác giữa người dùng trên đó, cạnh có thể vô hướng hoặc có hướng Trường hợp ở ví dụ trong Hình 2, quan hệ
“theo dõi” được xem là một cạnh có hướng giữa hai người dùng, ở đây người này có thể theo dõi người kia mà không bắt buộc có chiều ngược lại, hay một ví dụ quan hệ có hướng khác là hành động retweet (chia sẻ lại Tweet của người khác) Các cạnh có thể có trọng số, trong lý thuyết đồ thị (mạng), trọng số của một cạnh thể hiện tầm quan trọng của cạnh đó khi so sánh với các cạnh khác Ví dụ với trường hợp mạng đề cập của người dùng6, quan hệ cạnh chính là hành động đề cập đến người dùng khác trong các Tweet và trọng số của cạnh chính là số lần đề cập Đặc điểm của dữ liệu mạng/đồ thị là khả năng thao tác trên nó tương đối hạn chế và phức tạp Do đó một trong những kỹ thuật thường được
áp dụng trong phân tích, xử lý dữ liệu dạng này đó là biến đổi (nhúng) sang không gian vector để sử dụng các phương pháp học máy hay deep learning phổ biến hiện nay cho các bài toán như: phân cụm, phân lớp để phát hiện cộng đồng,
dự đoán liên kết, Trong phần này chúng tôi trình bày một phương pháp đơn giản để lần vết Tweet, xây dựng mạng luồng thông tin chia sẻ retweets và kỹ thuật nhúng thông tin ở mức nút sang không gian vector
A Xây dựng mạng luồng thông tin
Thông tin được lan truyền trên Twitter thông qua việc đăng lại các tweets, được gọi là các retweets Các retweets được đánh dấu bằng tiền tố đặc trưng “RT”, sau đó là tên của người dùng đã đăng tweet đó đầu tiên Ví dụ một tweet được đăng bởi người dùng Hillary: “RT @realDonaldTrump: Great to have NASA Astronauts return to Earth after very successful two month mission Thank you to all!” Ở đây, “realDonaldTrump” là người dùng đầu tiên đăng tweet được retweet lại bởi Hillary Trong đối tượng do API mà Twitter cung cấp trả về, retweets được phân biệt
với các tweets thông thường khác bởi sự tồn tại của thuộc tính retweeted_status Với ví dụ retweet ở trên, khi chúng ta lấy dữ liệu qua API, thuộc tính retweeted_status của đối tượng kết quả sẽ có dạng như sau:
"retweeted_status":{
"id":1289997897723863040L,
"full_text":"Great to have NASA Astronauts return to Earth after very successful two month mission Thank you to all!",
"retweeted":True,
}
Như vậy, với việc API của Twitter trả về thông tin ở thuộc tính retweeted_status là người đăng Tweet đầu tiên,
nên chúng ta chỉ có thể xác định được nguồn gốc của thông tin, chứ không phải là thông tin của những người dùng trung gian trên đường lan truyền thông tin Trong một số trường hợp, chúng ta không chỉ quan tâm đến nguồn gốc xuất phát của thông tin (tweet) mà còn muốn biết con đường mà thông tin đó đã lan truyền đi trên MXH như thế nào
Do đó để xây dựng mạng luồng chia sẻ tweet, chúng tôi thực hiện theo một thuật toán đơn giản như sau (dựa vào thông tin mạng theo dõi friend-follower network), sau đó có thể dùng thuật toán vẽ đồ thị [5]:
B Kỹ thuật nhúng thông tin mức nút (node embeddings)
1 Nhúng thông tin mức nút node2vec
Nhúng thông tin ở mức nút/đỉnh (node embeddings) là một trong các nhóm của các phương pháp nhúng đồ thị (graph embeddings) Node2vec là một khung thuật toán cho việc học biểu diễn đồ thị, được đề xuất bởi J Leskovec và các cộng sự [2] Trong node2vec, chúng ta thực hiện việc học để ánh xạ các nút (đỉnh) sang một vector đặc trưng ít chiều nhưng vẫn tối đa hóa được việc đảm bảo lân cận của nút đó ở trong đồ thị/mạng gốc Tức là, việc học để nhúng sao cho các nút ở “gần nhau” trong đồ thị gốc cũng sẽ gần nhau trong không gian vector nhúng Ý tưởng của node2vec xuất phát từ phương pháp nhúng từ word2vec[3] trong xử lý ngôn ngữ tự nhiên Đầu vào của node2vec là một đồ thị, chúng ta thực hiện quá trình lấy mẫu để sinh ra các đồ thị con (sub-graph) (tương tự như là các “câu” trong ngôn ngữ tự
6 Hành động đề cập (mention) trên Twitter tương tự hành động gắn (tag) bạn bè trên Facebook
Trang 4nhiên được tạo thành từ các từ ghép nối liên tiếp), và sau đó áp dụng mô hình Skip-gram để học các đặc trưng Sơ đồ quá trình nhúng trong node2vec như Hình 3
Hình 3 Quá trình nhúng của node2vec Một cách hình thức, bài toán node2vec được hình thành như sau Giả sử là đồ thị (mạng) đã cho (V
là tập các đỉnh/nút, E là tập các cạnh) Giả sử là hàm ánh xạ từ các nút sang biểu diễn đặc trưng mà chúng
ta muốn học (ở đây d là số chiều của biểu diễn đặc trưng) Với mỗi nút , chúng ta xác định là một lân
cận mạng của nút u được tạo ra thông qua một chiến lược sinh mẫu vùng lân cận S nào đó Các tác giả thực hiện mở rộng mô hình Skip-gram [3, 4] cho các đồ thị/mạng Khi đó việc học hàm f để tìm cách tối ưu hóa hàm mục tiêu sau
(tối đa hóa log xác suất của quan sát một lân cận mạng đối với một nút trên biểu diễn đặc trưng của nó):
∑ ( | )
(1)
Với giả định likelihood của quan sát một nút là độc lập, chúng ta có thể tính likelihood trên tập hợp lân cận như sau:
Do đó
( | ) ∑
Sử dụng tham số hóa softmax
( | )
∑ Khi đó (1) trở thành
]
trong đó ∑ và việc tính toán nó đối với các đồ thị/mạng lớn là tốn kém và chúng ta sẽ tính toán ước lượng nó bằng cách lấy mẫu (sampling) Việc tối ưu mục tiêu của node2vec ở (2) được thực hiện bằng cách
sử dụng thuật toán Stochastic Gradient Descent (SGD)
2 Chiến lược sinh mẫu (sampling strategy) bước đi ngẫu nhiên “random walks”
Sampling trong node2vec có bốn tham số:
- r: số lần đi ngẫu nhiên được tạo ra từ một nút;
- l: độ dài của lần đi, chính là số nút ở trong mỗi lần đi ngẫu nhiên;
- p: tham số quay trở về (quay trở về nút trước đó);
- q: tham số in-out
Thuật toán sẽ tạo lần đi ngẫu nhiên random walks đi qua từng nút trong đồ thị và sẽ tạo ra r lần đi ngẫu nhiên với độ dài một lần đi là l Để hiểu rõ hơn về hai tham số p và q chúng ta cùng xem minh họa ở Hình 4 Giả sử chúng ta đang trên một lần đi ngẫu nhiên, và vừa di chuyển từ nút <t> sang nút <v>, chúng ta cần xác định nút tiếp theo sẽ dịch chuyển qua Xác suất để di chuyển từ <v> đến bất kỳ một nút <x> hàng xóm nào của nó là , trong
đó là trọng số của cạnh và
{
Trang 5
Với là khoảng cách đường đi ngắn nhất giữa nút <t> và <x> (lưu ý chỉ nhận một trong các giá trị {0, 1, 2})
Tham số p kiểm soát xác suất quay lại nút <t> ngay lập tức sau khi truy cập nút <v> Nếu đặt giá trị của tham số này cao (>max (q, 1)) sẽ đảm bảo chúng ta ít có khả năng lấy lại một nút đã viếng thăm trong vòng hai bước sau (trừ khi nút tiếp theo trong lần đi không có hàng xóm nào khác) Ngược lại nếu lấy giá trị p thấp (< min (1, q)), sẽ dẫn đến việc đi lùi lại một bước và điều này dẫn đến lần đi sẽ có tính “cục bộ” (local) gần với nút bắt đầu <u>
Hình 4 Minh họa quy trình đi ngẫu nhiên trong node2vec Tham số in-out q cho phép các bước đi phân biệt giữa các nút “hướng nội” và “hướng ngoại” Như ở Hình 4, nếu q > 1, bước đi ngẫu nhiên sẽ thiên về các nút ở gần với nút <t> hơn, những bước đi như vậy có tính chất cục bộ
(local) hơn, tức nó liên quan đến nút xuất phát của lần đi hơn, gần với chiến lược lấy mẫu theo chiều rộng BFS
(Breadth-first Sampling) là các mẫu sẽ bao gồm các nút trong một địa phương nhỏ Ngược lại, nếu q < 1, các bước đi
có xu hướng đi đến các nút ở xa nút <t> hơn, khi đó nó gần với chiến lược lấy mẫu theo chiều sâu DFS (Depth-first
Sampling)
Một ưu điểm của random walks là hiệu quả về mặt tính toán cả về không gian lưu trữ và thời gian Độ phức tạp
không gian để lưu trữ các lân cận trực tiếp của mọi nút trong đồ thị là O(|E|) Với random walks, chúng ta chỉ phải xử
lý các kết nối giữa các nút lân cận của mỗi nút, độ phức tạp về không gian là với a là bậc trung bình của đồ thị
và nó thường nhỏ hơn nhiều so với số đỉnh ở trong các mạng thực tế (như một MXH) So với các cách lấy mẫu dựa vào
tìm kiếm cổ điển độ phức tạp về thời gian của random walks là thấp hơn Bằng cách mô phỏng một lượt đi có độ dài l
> k chúng ta có thể tạo ra k mẫu cho l – k nút cùng một lúc và độ phức tạp là O(
)
Với việc áp dụng chiến lược lấy mẫu như vậy, node2vec sẽ tạo ra các “câu” (các đồ thị con có hướng) và chúng được sử dụng để nhúng (embedding) tương tự như các câu văn bản trong word2vec
3 Thuật toán node2vec
node2vec bao gồm ba pha gồm: tiền xử lý để tính toán xác suất chuyển đổi giữa các nút; mô phỏng các bước đi ngẫu nhiên random walks và tối ưu hóa bằng SGD, các pha này được thực hiện tuần tự Mỗi pha có thể song song hóa
và được thực thi theo cơ chế bất đồng bộ để tăng khả năng mở rộng của toàn bộ node2vec
node2vec được đánh giá và cho kết quả tốt hơn các thuật toán học biểu diễn đặc trưng khác như DeepWalk [4] (dùng mô phỏng các bước đi ngẫu nhiên đồng nhất, chiến lược lấy mẫu trong DeepWalk có thể được xem là trường
hợp đặc biệt của node2vec với p = 1 và q = 1), LINE [6] và Spectral clustering [7]
IV THỰC NGHIỆM
Các pha thực hiện trong việc thực nghiệm như sau
Hình 5 Các pha của quá trình thực nghiệm
A Thu thập và lưu trữ dữ liệu
1 Chuẩn bị Twitter API key
Để có được khóa và mã truy cập đến các API của Twitter, cần thực hiện các bước tạo mới một tài khoản lập trình, đăng ký một ứng dụng trên Twitter và thực hiện các bước theo hướng dẫn [1] Với mỗi ứng dụng đăng ký, chúng
ta có bộ khóa cho Consumer API và các mã truy cập dùng để xác thực và thực hiện truy cập đến các API của Twitter
2 Lưu trữ dữ liệu
Dữ liệu thu thập được sẽ được lưu trong cơ sở dữ liệu Mysql Tổ chức kho dữ liệu đơn giản chỉ gồm có 3 bảng như sau: nodes (dùng để lưu thông tin hồ sơ của người dùng), paths dùng để lưu quan hệ theo dõi (follow) giữa hai người dùng và bảng tweets dùng để lưu các tweets của người dùng
Trang 63 Một số vấn đề trong việc thu thập dữ liệu
a) Giới hạn truy cập của Twitter
Các API mà Twitter cung cấp đều có giới hạn (rate limit), tức là chỉ cho phép một ứng dụng của chúng ta thực hiện việc gọi các API với một số lượng yêu cầu nhất định trong một khoảng thời gian7 Để khắc phục vấn đề này, module thu thập dữ liệu cần có cơ chế chờ (wait) và chạy lại (resume) khi gặp tình huống Twitter trả về mã lỗi tương ứng Và chúng tôi tạo nhiều ứng dụng khác nhau trên Twitter để có nhiều khóa và mã truy cập API
b) Cơ chế xử lý song song và khắc phục lỗi
Một số vấn đề đòi hỏi đối với hệ thống thu thập dữ liệu:
Xử lý song song: dữ liệu từ Twitter là rất lớn, với việc giới hạn truy cập của các API mà Twitter cung cấp như
đề cập ở trên, việc tải dữ liệu có thể mất rất nhiều thời gian Để giải quyết vấn đề này, chúng tôi xây dựng cơ chế để hệ thống thu thập dữ liệu có thể chạy cùng lúc nhiều node thu thập trên cùng một máy hoặc nhiều máy khác nhau, mỗi node sẽ sử dụng bộ khóa và mã truy cập API của riêng mình
Tính ổn định: do hệ thống thu thập và lưu trữ dữ liệu thực hiện kết nối đến các API của Twitter, hệ thống cần
có cơ chế kết nối lại, tự động thu thập tiếp dữ liệu đang lấy dở mà bị dừng Ví dụ: với trường hợp một người dùng có thể có hàng chục nghìn người theo dõi, vì giới hạn của API Twitter nên mỗi lần gọi chúng ta chỉ lấy được giới hạn số lượng, khi đó trong trường hợp một node bất kỳ (hoặc cả toàn bộ hệ thống) bị gián đoạn hoặc bị shutdown, hệ thống có khả năng đánh dấu điểm dữ liệu gián đoạn và tiếp tục thu thập khi chạy lại mà không phải tải dữ liệu từ đầu
Hệ thống thu thập dữ liệu được chúng tôi xây dựng bằng ngôn ngữ lập trình python và sử dụng thư viện Tweepy8 để truy cập đến Twitter API
B Xử lý, phân tích dữ liệu
1 Mạng quan hệ theo dõi của người dùng (friend-follower network)
Một mạng quan hệ theo dõi bao gồm các nút chính là những người dùng trên Twitter, và các cạnh sẽ thể hiện quan hệ theo dõi – ai theo dõi ai Dữ liệu về quan hệ theo dõi giữa những người dùng được lưu trong bảng paths Để xây dựng và biểu diễn mạng quan hệ theo dõi - bạn bè của người dùng, chúng tôi sử dụng công cụ Gephi9 Gephi là một công cụ chuyên dụng dành cho việc khám phá và phân tích đồ thị/mạng Nó cho phép thực hiện các tương tác như biểu diễn, thao tác trên cấu trúc, các hình dạng,… đối với dữ liệu đồ thị một cách trực quan Từ dữ liệu gốc thu thập và được lưu trong các bảng, chúng tôi thực hiện trích xuất ngẫu nhiên dữ liệu theo một số lượng khác nhau, biến đổi chúng sang định dạng GML(Graph Modeling Language) Sau đây là kết quả một số biểu diễn mạng quan hệ theo dõi - bạn bè từ một số mẫu dữ liệu thu thập được
Nodes: 44 Edges: 54 Density: 0.057082 Average Degree: 2.454545 Max Degree: 33 Min Degree: 1 Number of connected components: 1
a Mạng lưới với 12 nút người dùng b Mạng lưới với Network50 với 44 nút người dùng
7 Giới hạn API rate limits của Twitter: https://developer.twitter.com/en/docs/basics/rate-limits
8 Thư viện Tweepy: https://www.tweepy.org/
9 https://gephi.org/
Trang 7Nodes: 500 Edges: 585 Density: 0.004689
Average Degree: 2.340000
Max Degree: 177
Min Degree: 1
Number of connected components: 1
Nodes: 984 Edges: 1216 Density: 0.002514 Average Degree: 2.471545 Max Degree: 333 Min Degree: 1 Number of connected components: 1
c Mạng lưới Network500 với 500 người dùng d Mạng lưới Network1000 với gần 1000 nút người dùng
Hình 6 Các mạng quan hệ friend-follower với số lượng người dùng và cạnh khác nhau
2 Mạng luồng chia sẻ thông tin trên Twitter
Dưới đây là một ví dụ mạng luồng chia sẻ thông tin mà chúng tôi nhận được đối với một Tweet về chủ đề Covid19 bằng thuật toán được đề xuất ở mục III.A với root node tìm được là nút màu đỏ có nhãn 83131551
Hình 7 Mạng chia sẻ thông tin (retweets)
Trang 83 Nhúng thông tin người dùng bằng node2vec
Để thực hiện cài đặt thực nghiệm chúng tôi thực hiện bằng ngôn ngữ Python, có sử dụng một số thư viện, package sau: thư viện node2vec10 dành cho Python3 do các tác giả phát triển cho [2], NetworkX11 – một package cho Python chuyên dùng để tạo, thực hiện các thao tác và nghiên cứu cấu trúc trên các mạng phức tạp Dựa vào thông tin cấu trúc mạng, chúng tôi thực hiện áp dụng phương pháp nhúng thông tin nút node2vec để biến đổi mỗi nút người dùng sang vector đặc trưng, sau đó áp dụng thuật toán K-means để phân cụm các nút nhằm phát hiện cộng đồng dựa vào thông tin cấu trúc mạng
Các tham số:
- Số chiều của vector đặc trưng: 64
- Độ dài của mỗi random walks: 10
- Số lần đi (số random walks) cho mỗi nút: 500
a Với Mạng Network50
Dựa vào thông tin liên kết, mỗi nút người dùng được nhúng sang một vector đặc trưng 64 chiều, ví dụ vector nhúng cho nút dangkhoafan: -0.007929413 -0.461161 0.19793484 0.16255444 -0.16364151 -0.03584324 -0.1384652 0.4879906 0.18218239 -0.26448804 -0.46870127 -0.24356781 0.009873092 0.18432081 -0.18303967 0.22470416 0.31153297 0.19108796 0.34282628 0.09289459 0.07034109 0.026388608 0.057886794 0.10287591 -0.036674377 -0.12679668 -0.17128074 -0.084960744 -0.10364959 -0.4656336 -0.117410965 0.20470865 0.09384039 0.18084323 0.34560558 0.14970614 0.10237863 0.37130904 0.46185178 0.14056797 0.13567604 0.33046755 -0.67945313 0.15806635 0.22798888 0.1548171 0.24103257 -0.002843803 -0.35792887 -0.15951943 -0.04276035 0.061602194 0.10228826 0.025572207 0.008063821 0.38859743 0.54753906 0.31983772 0.010731436 -0.022141691 -0.32429475 -0.061119996 -0.038715728 -0.0809034
Sau đó chúng ta có thể thực hiện các phép tính toán trên dữ liệu nhúng, ví dụ tìm các nút “tương đồng” nút này nhất
(hàm most_similar), kết quả được thể hiện ở Bảng 1
Bảng 1 Kết quả tìm kiếm nút tương đồng sau khi nhúng thông tin Nút người dùng Top các người dùng tương đồng
dangkhoafan ('MOFAVietNam', 0.8911288976669312), ('luca', 0.8904304504394531), ('goodfellow_ian',
0.8820015788078308), ('AndrewYNg', 0.8740906119346619), ('ylecun', 0.8725197315216064), ('blei_lab', 0.8325739502906799), ('BarackObama', 0.7831145524978638), ('realDonaldTrump', 0.773535966873169), ('HungHH5', 0.6738353371620178), ('HillaryClinton', 0.6714308261871338)
Chúng ta thấy rằng, ba nút được xem là tương đồng nhất là các nút chỉ kết nối với riêng nút dangkhoafan (có thể xem như là hàng xóm riêng của nó), ba nút tiếp theo (AndrewYNg, ylecun, blei_lab) không chỉ kết nối riêng với nút dangkhoafan mà chúng còn kết nối nội bộ với nhau
Với việc biểu diễn được tất cả các nút của mạng thành các vector đặc trưng, chúng ta có thể thực hiện các phương pháp, thuật toán học máy phổ biến để giải quyết các bài toán cụ thể Ở đây, chúng tôi sử dụng thuật toán phân cụm K-means để phân tách các nút (người dùng) thành các nhóm (cụm) Kết quả phân cụm với số cluster = 2 như ở Hình 8 dưới đây
Hình 8 Kết quả áp dụng phân cụm K-means cho mạng Network50 (Hình 6.b)
10 https://github.com/aditya-grover/node2vec
11 https://networkx.github.io/
Trang 9Kết quả thực hiện nhúng node2vec và phân cụm với mạng Network500 (Hình 9)
Hình 9 Kết quả áp dụng phân cụm K-means cho mạng Network500 (Hình 5.c)
b Với Dataset thu thập được
Thông tin về dataset:
Nodes: 18850
Edges: 24339
Density: 0.000138
Average Degree: 2.56
Max Degree: 3371
Min Degree: 1
Number of connected components: 1
Sau khi thực hiện nhúng các nút, chúng ta có thể thực hiện các truy vấn thông tin như tìm kiếm nút tương đồng Kết quả nhận được như sau:
Bảng 2 Kết quả tìm kiếm nút tương đồng sau khi nhúng thông tin
0.7792443633079529), ('improving_Jin', 0.7718034386634827), ('BarackObama', 0.7652807235717773), ('SpaceX', 0.7543506026268005)
POTUS12 (President
Trump, trang của tổng
Trump)
('POTUS44', 0.8353493809700012), ('HillaryClinton', 0.8072160482406616), ('tim_cook'13, 0.7945600748062134), ('8161232', 0.7905694842338562), ('DonaldJTrumpJr'14, 0.7779954075813293), ('ddlovato'15, 0.7757748961448669), ('WhiteHouse', 0.7680785059928894), ('ObamaWhiteHouse', 0.766059398651123), ('18916432'16, 0.7652392387390137), ('Marco Rubio17', 0.7640922665596008)
Có thể thấy, kết quả đối với nút người dùng dangkhoafan cũng tương tự như đối với mạng Network50 ở Bảng 1 Với nút người dùng POTUS, đây là trang Twitter của Tổng thống Mỹ Donald Trump, và như chúng ta thấy, hầu hết các nút người dùng tương đồng nhất đều là của những người dùng liên quan và tương đồng với Donald Trump ở đời sống thực
V KẾT LUẬN
Bài báo này đã trình bày một số kết quả nghiên cứu và thực nghiệm trong bài toán thu thập, phân tích và xử lý
dữ liệu từ MXH Twitter Để thực nghiệm, chúng tôi đã xây dựng công cụ thu thập dữ liệu Twitter Kết quả cho thấy module thu thập dữ liệu đã đáp ứng được các yêu cầu đối với việc thu thập dữ liệu từ nguồn dữ liệu lớn của MXH như:
12 https://twitter.com/POTUS
13 Tim Cook, CEO của Apple
14
Trang cá nhân của Donald Trump Jr con trai tổng thống Donald Trump
15 Demetria Devonne "Demi" Lovato, Diễn viên, ca sĩ và nhạc sĩ người Mỹ, https://twitter.com/ddlovato
16 SpeakerRyan, nhà chính trị, hiện đang là chủ tịch Hạ viện Mỹ, https://vi.wikipedia.org/wiki/Paul_Ryan
17 Marco Rubio, thượng nghị sĩ Mỹ, https://twitter.com/marcorubio
Trang 10tính ổn định và khả năng mở rộng xử lý theo chiều ngang Các thông tin thu thập được bao gồm: thông tin người dùng, mạng theo dõi giữa người dùng, mạng chia sẻ tweets, các tweets về chủ đề Covid19 Cuối cùng, một số công cụ và kỹ thuật đã được áp dụng cho việc xử lý, phân tích và biến đổi dữ liệu thu thập được như: biểu diễn, phân tích mạng bằng Gephi; kỹ thuật nhúng thông tin ở mức nút dựa vào cấu trúc mạng bằng node2vec
Hướng phát triển tiếp theo của chúng tôi: kết hợp các kỹ thuật phân tích xử lý thông tin ở mức mạng và mức văn bản (các Tweets) để giải quyết một số bài toán điển hình trong phân tích MXH như: dự đoán liên kết, phát hiện cộng đồng, phát hiện các chủ đề và phân tích luồng ảnh hưởng
VI LỜI CẢM ƠN
Bài báo này thuộc phạm vi đề tài nghiên cứu khoa học có mã số QCT.20.02 được thực hiện tại Viện Công nghệ Thông tin – Đại học Quốc gia Hà nội
TÀI LIỆU THAM KHẢO
[1] https://developer.twitter.com/en/docs/basics/getting-started
[2] A Grover, J Leskovec, “node2vec: Scalable Feature Learning for Networks”, ACM SIGKDD International Conference on Knowledge Discovery and Data Mining (KDD), 2016
[3] T Mikolov, K Chen, G Corrado, and J Dean, “Efficient estimation of word representations in vector space” In ICLR, 2013
[4] B Perozzi, R Al-Rfou, and S Skiena, “DeepWalk: Online learning of social representations” In KDD, 2014 [5] Stephen G Kobourov, “Spring Embedders and Force Directed Graph Drawing Algorithms” arXiv:1201.3011,
2012
[6] J Tang, M Qu, M Wang, M Zhang, J Yan, and Q Mei “LINE: Large-scale Information Network Embedding”
In WWW, 2015
[7] L Tang and H Liu, “Leveraging social media networks for classification” Data Mining and Knowledge Discovery, 23(3):447-478, 2011
[8] Androniki Sapountzi, Kostas E Psannis, “Social networking data analysis tools & challenges”, Future Generation Computer Systems, Elsevier, 2018
COLLECTING AND ANALYZING TWITTER DATA USING NODE EMBEDDINGS
Phan Dang Khoa, Vu Duc Thi
ABSTRACT: Twitter is a free and massive online social network Collecting, storing, processing, and analyzing social
network data in overall and Twitter data is an interesting research area It has many applications in real life like e-commerce, marketing, online advertising, cultural, political… In this paper, we present some related techniques to Twitter data collecting, process, and analyzing methods The collected data from Twitter include user’s information, user’s network, followers and friends
of users, user’s tweets We further implemented some experiments by using some technicques like node2vec node embedding,
K-means clustering for the collected data