Thu 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

Kỷ yếu Hội nghị KHCN Quốc gia lần thứ XIII về Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR), Nha Trang, ngày 8-9/10/2020  
DOI: 10.15625/vap.2020.00215  
THU 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  
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/.  
578  
THU 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…  
Trê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/ids2 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/ids3 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.  
Phan Đăng Khoa, Vũ Đức Thi  
579  
tƣơ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.  
580  
THU 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…  
nhiê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  
 
 
    
                
 
    
  (  |    )   
 
∑
        
                
    
    
          ]  
 
    ∑ [          
∑
         
 
 
 
(2)  
 
    
∑
        
                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  
    
trong đó     
 
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à.  
   
 
 
          
   
 
 
 
 
                     
   
 
 
 
          
   
{  
Phan Đăng Khoa, Vũ Đức Thi  
581  
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.  
582  
THU 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…  
3. 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/.  
Phan Đăng Khoa, Vũ Đức Thi  
583  
Nodes: 984  
Edges: 1216  
Density: 0.002514  
Average Degree: 2.471545  
Max Degree: 333  
Min Degree: 1  
Number of connected components: 1  
Nodes: 500  
Edges: 585  
Density: 0.004689  
Average Degree: 2.340000  
Max Degree: 177  
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)  
584  
THU 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…  
3. 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  
dangkhoafan  
Top các ngƣời dùng tƣơng đồng  
('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/.  
Phan Đăng Khoa, Vũ Đức Thi  
585  
Kế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  
Nút ngƣời dùng  
Top các ngƣời dùng tƣơng đồng  
dangkhoafan  
('luca', 0.9694571495056152), ('HungHH5', 0.8813575506210327), ('MOFAVietNam',  
0.8793941736221313),  
0.8082276582717896),  
0.7792443633079529),  
('ylecun',  
('tim_cook',  
('improving_Jin',  
0.8736461997032166),  
0.7843689918518066),  
0.7718034386634827),  
('goodfellow_ian',  
('AndrewYNg',  
('BarackObama',  
0.7652807235717773), ('SpaceX', 0.7543506026268005)  
POTUS12  
(President ('POTUS44', 0.8353493809700012), ('HillaryClinton', 0.8072160482406616), ('tim_cook'13,  
Trump, trang của tổng 0.7945600748062134),  
thống Mỹ Donald 0.7779954075813293),  
('8161232',  
0.7905694842338562),  
0.7757748961448669),  
('DonaldJTrumpJr'14,  
('WhiteHouse',  
('ddlovato'15,  
Trump)  
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.  
586  
THU 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…  
tí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  
[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.  
pdf 10 trang Thùy Anh 13660 Free
Bạn đang xem tài liệu "Thu 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", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfthu_thap_xu_ly_va_phan_tich_du_lieu_mang_xa_hoi_twitter_bang.pdf