intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:10

38
lượt xem
2
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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

Chủ đề:
Lưu

Nội dung Text: 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

  1. 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 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/.
  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.
  3. 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ùng 6, 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.
  4. 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) 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 sang nút , 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ừ đến bất kỳ một nút hàng xóm nào của nó là , trong đó là trọng số của cạnh và. {
  5. Phan Đăng Khoa, Vũ Đức Thi 581 Với là khoảng cách đƣờng đi ngắn nhất giữa nút và (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 ngay lập tức sau khi truy cập nút . 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 . 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 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 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.
  6. 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 gian 7. Để 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ụ Gephi 9. 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/.
  7. Phan Đăng Khoa, Vũ Đức Thi 583 Nodes: 984 Edges: 1216 Density: 0.002514 Average Degree: 2.471545 Max Degree: 333 Nodes: 500 Min Degree: 1 Edges: 585 Number of connected components: 1 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)
  8. 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 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/.
  9. 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), ('ylecun', 0.8736461997032166), ('goodfellow_ian', 0.8082276582717896), ('tim_cook', 0.7843689918518066), ('AndrewYNg', 0.7792443633079529), ('improving_Jin', 0.7718034386634827), ('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), ('8161232', 0.7905694842338562), ('DonaldJTrumpJr' 14, 15 thống Mỹ Donald 0.7779954075813293), ('ddlovato' , 0.7757748961448669), ('WhiteHouse', Trump) 0.7680785059928894), ('ObamaWhiteHouse', 0.766059398651123), ('18916432' 16, 17 0.7652392387390137), ('Marco Rubio ', 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.
  10. 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 [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.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
5=>2