การวิเคราะห์เครือข่ายโซเชียลใน R และ Gephi: การขุดลงใน Twitter

เผยแพร่แล้ว: 2022-03-11

การวิเคราะห์เครือข่ายสังคมเกิดขึ้นในปี 1934 เมื่อจาค็อบ เลวี โมเรโนสร้างโซซิโอแกรม ซึ่งเป็นนามธรรมของการปฏิสัมพันธ์ทางสังคม โดยเฉพาะอย่างยิ่ง sociogram คือกราฟที่แต่ละโหนดแสดงถึงบุคคลและขอบแสดงถึงปฏิสัมพันธ์ระหว่างกัน โมเรโนใช้โซซิโอแกรมเพื่อศึกษาพฤติกรรมของคนกลุ่มเล็กๆ

ทำไมเล็ก? เพราะในยุคที่เขาทำงาน เป็นการยากที่จะหาข้อมูลโดยละเอียดเกี่ยวกับการโต้ตอบส่วนตัวจำนวนมาก สิ่งนี้เปลี่ยนไปพร้อมกับการกำเนิดของเครือข่ายสังคมออนไลน์เช่น Twitter ทุกวันนี้ ใครๆ ก็ดาวน์โหลดข้อมูล Twitter จำนวนมากได้ฟรี ซึ่งเปิดประตูสู่การวิเคราะห์ที่น่าสนใจ ผลักดันให้เราเข้าใจวิธีปฏิบัติตนใหม่ๆ และผลกระทบของพฤติกรรมต่างๆ ในสังคม

ในส่วนแรกของชุดการวิเคราะห์เครือข่ายสังคมออนไลน์ของเรา เราสาธิตวิธีดำเนินการวิเคราะห์บางส่วนโดยใช้ภาษา R เพื่อรับและประมวลผลข้อมูลล่วงหน้า และ Gephi เพื่อสร้างการแสดงภาพที่น่าทึ่ง Gephi เป็นแอปพลิเคชั่นโอเพนซอร์ซที่ออกแบบมาเป็นพิเศษเพื่อแสดงภาพเครือข่ายทุกประเภท ช่วยให้ผู้ใช้สามารถกำหนดค่าการแสดงภาพได้อย่างง่ายดายผ่านเกณฑ์และคุณสมบัติต่างๆ

การดาวน์โหลดข้อมูล Twitter สำหรับการวิเคราะห์เครือข่ายสังคมใน R

หากคุณไม่มีบัญชี นักพัฒนา Twitter ให้สร้างขึ้นและสมัครเข้าใช้ Essential จากนั้น ในการดาวน์โหลดข้อมูล Twitter ให้สร้างแอพใน Twitter Developer Portal จากนั้นเลือกแอปของคุณในส่วน Projects & Apps และไปที่แท็บ Keys & Tokens คุณจะต้องสร้างข้อมูลประจำตัวของคุณที่นั่น สิ่งเหล่านี้จะถูกใช้เพื่อเข้าถึง Twitter API และดาวน์โหลดข้อมูล

เมื่อคุณสร้างข้อมูลประจำตัวของคุณแล้ว คุณสามารถเริ่มการวิเคราะห์ได้ เราจะใช้ไลบรารี R สามรายการ:

  1. igraph เพื่อสร้างกราฟการโต้ตอบ
  2. tidyverse เพื่อเตรียมข้อมูล
  3. rtweet เพื่อสื่อสารกับ Twitter Dev API

คุณสามารถติดตั้งไลบรารีเหล่านี้ได้ด้วยฟังก์ชัน install.packages() สำหรับจุดประสงค์ของเรา เราจะถือว่าคุณได้ติดตั้ง R และ RStudio และคุณมีความเข้าใจพื้นฐานเกี่ยวกับสิ่งเหล่านี้

ในการสาธิตของเรา เราจะวิเคราะห์การสนทนาออนไลน์ที่ร้อนแรงเกี่ยวกับนักฟุตบอลชื่อดังชาวอาร์เจนตินา Lionel Messi ในช่วงสัปดาห์แรกของเขากับสโมสรฟุตบอล Paris Saint-Germain (PSG) สิ่งสำคัญคือต้องทราบว่าด้วย Twitter API ฟรี คุณสามารถดาวน์โหลดทวีตได้เพียงเจ็ดวันก่อนถึงวันที่ปัจจุบัน คุณจะไม่สามารถดาวน์โหลดข้อมูลเดียวกันกับที่เราอ้างอิงได้ แต่คุณจะสามารถดาวน์โหลดการสนทนาในปัจจุบันได้

เริ่มต้นด้วยการดาวน์โหลด ขั้นแรก เราจะโหลดไลบรารี จากนั้นสร้างโทเค็นการให้สิทธิ์โดยใช้ข้อมูลรับรอง และสุดท้ายกำหนดเกณฑ์การดาวน์โหลด

บล็อกโค้ดนี้มีรายละเอียดเกี่ยวกับวิธีการใช้งานทั้งสามขั้นตอน:

 ## Load libraries library(rtweet) library(igraph) library(tidyverse) ## Create Twitter token token <- create_token( app = <YOUR_APP_NAME>, consumer_key = <YOUR_CONSUMER_KEY>, consumer_secret = <YOUR_CONSUMER_SECRET>, access_token =<YOUR_ACCESS_TOKEN>, access_secret = <YOUR_ACCESS_SECRET>) ## Download Tweets tweets.df <- search_tweets("messi", n=250000,token=token,retryonratelimit = TRUE,until="2021-08-13") ## Save R context image save.image("filename.RData")

หมายเหตุ: แทนที่แท็กทั้งหมดระหว่าง <> ด้วยข้อมูลที่คุณสร้างในขั้นตอนข้อมูลรับรองก่อนหน้า

ด้วยรหัสนี้ เราได้สอบถาม Twitter API สำหรับทวีตทั้งหมด (มากถึง 250,000 รายการ) ที่มีคำว่า “เมสซี่” และถูกโพสต์ระหว่างวันที่ 8 สิงหาคม 2021 ถึง 13 สิงหาคม 2021 เรากำหนดขีดจำกัดที่ 250,000 ทวีตเนื่องจาก Twitter ต้องใช้ ค่าปริมาณและเนื่องจากตัวเลขมีขนาดใหญ่พอที่จะให้การวิเคราะห์ที่น่าสนใจ

อัตราการดาวน์โหลดของ Twitter คือ 45,000 ทวีตต่อ 15 นาที ดังนั้นการดาวน์โหลด 250,000 ทวีตจึงใช้เวลานานกว่าหนึ่งชั่วโมง

สุดท้าย เราบันทึกตัวแปรบริบททั้งหมดในไฟล์ RData เพื่อให้สามารถกู้คืนได้หากเราปิด RStudio หรือปิดเครื่อง

การสร้างกราฟการโต้ตอบ

เมื่อการดาวน์โหลดเสร็จสิ้น เราจะมีทวีตอยู่ใน tweets.df ของ tweets.df เมทริกซ์ดาต้าเฟรมนี้มีหนึ่งแถวต่อทวีต และหนึ่งคอลัมน์ต่อฟิลด์ทวีต อันดับแรก เราจะใช้เพื่อสร้างกราฟการโต้ตอบซึ่งแต่ละโหนดแสดงถึงผู้ใช้ และขอบแสดงถึงการโต้ตอบ (รีทวีตหรือกล่าวถึง) ระหว่างกัน ด้วย tidyverse และ igraph เราสามารถสร้างกราฟนี้ได้อย่างรวดเร็วและในคำสั่งเดียว:

 ## Create graph filter(tweets.df, retweet_count > 0) %>% select(screen_name, mentions_screen_name) %>% unnest(mentions_screen_name) %>% filter(!is.na(mentions_screen_name)) %>% graph_from_data_frame() -> net

หลังจากรันบรรทัดนี้แล้ว เราก็ได้กราฟในตัวแปร net ที่พร้อมสำหรับการวิเคราะห์ ตัวอย่างเช่น หากต้องการดูจำนวนโหนดและขอบที่มีอยู่:

 summary(net) # IGRAPH fd955b4 DN-- 138963 217362 --

ข้อมูลตัวอย่างของเราให้ผลตอบแทน 138,000 โหนดและ 217,000 ขอบ นั่นเป็นกราฟขนาดใหญ่ เราสามารถสร้างภาพข้อมูลผ่าน R ได้หากต้องการ แต่จากประสบการณ์ของผม มันใช้เวลาในการคำนวณนานเกินไป และไม่ดึงดูดสายตาเท่าการสร้างภาพ Gephi ดังนั้น มาต่อกันที่ Gephi

การแสดงภาพกราฟด้วย Gephi

ขั้นแรกเราต้องสร้างไฟล์ที่ Gephi สามารถอ่านได้ วิธีนี้เป็นเรื่องง่าย เนื่องจากเราสามารถสร้างไฟล์ .gml โดยใช้ฟังก์ชัน write_graph :

 write_graph(simplify(net), "messi_network.gml", format = "gml")

ตอนนี้ เปิด Gephi ไปที่ "เปิดไฟล์กราฟ" ค้นหาไฟล์ messi_network.gml แล้วเปิดขึ้น มันจะโยนหน้าต่างที่สรุปข้อมูลกราฟ เลือก ยอมรับ สิ่งนี้จะปรากฏขึ้น:

ภาพหน้าจอแสดงอินเทอร์เฟซผู้ใช้ของ Gephi ซึ่งผู้ใช้สามารถเปิดไฟล์กราฟใหม่ได้
การเปิดไฟล์กราฟใหม่ใน Gephi

จำเป็นต้องพูดนี้ไม่เป็นข้อมูลมาก นั่นเป็นเพราะเรายังไม่ได้นำเลย์เอาต์ไปใช้

เค้าโครงเครือข่าย

ในกราฟที่มีโหนดและขอบนับพัน การวางตำแหน่งโหนดในกราฟิกมีความสำคัญ นี่คือจุดประสงค์ของการจัดวาง พวกเขาวางโหนดในตำแหน่งที่กำหนดโดยเกณฑ์ที่กำหนด

สำหรับบทช่วยสอนการวิเคราะห์เครือข่ายโซเชียล เราจะใช้เลย์เอาต์ ForceAtlas2 ซึ่งเป็นตัวเลือกมาตรฐานสำหรับการวิเคราะห์ประเภทนี้ มันวางตำแหน่งโหนดโดยจำลองแรงดึงดูดทางกายภาพและการผลักระหว่างกัน หากมีการเชื่อมต่อโหนดสองโหนด โหนดทั้งสองจะอยู่ใกล้กันมากขึ้น หากไม่เชื่อมต่อกัน พวกเขาจะห่างกันมากขึ้น เลย์เอาต์นี้ให้กราฟข้อมูลในแง่ของชุมชน เนื่องจากผู้ใช้ที่อยู่ในชุมชนเดียวกันจะถูกจัดกลุ่มเข้าด้วยกัน ในขณะที่ผู้ใช้จากชุมชนต่างๆ จะอยู่ในภูมิภาคต่างๆ

ในการใช้เลย์เอาต์นี้กับเคสของเรา ให้ไปที่หน้าต่างเลย์เอาต์ (ที่มุมล่างซ้าย) เลือก ForceAltas 2 แล้วคลิกเรียกใช้ เมื่อคุณทำเช่นนี้ คุณจะเห็นว่าโหนดเริ่มเคลื่อนที่และก่อตัวเป็น "ก้อนเมฆ" จำนวนมาก หลังจากนั้นไม่กี่วินาที คุณจะมีรูปแบบที่เสถียรมากและคุณจะสามารถคลิกหยุดได้ โปรดทราบว่าการหยุดโดยอัตโนมัติอาจใช้เวลานาน

เนื่องจากเป็นอัลกอริธึมสุ่ม คุณจะมีเอาต์พุตที่แตกต่างกันเล็กน้อยในการรันแต่ละครั้ง ผลลัพธ์ของคุณควรคล้ายกับสิ่งนี้:

รูปภาพที่แสดงผลลัพธ์ของเลย์เอาต์ ForceAtlas2 เป็นขาวดำ ส่งผลให้กราฟไม่มีสีหรือเฉดสีเทา
เอาต์พุต Monochrome Gephi โดยใช้เลย์เอาต์ ForceAtlas2

กราฟเริ่มดูน่าสนใจ ตอนนี้เรามาเพิ่มสีสันให้กับมันกันเถอะ

การตรวจจับชุมชน

เราสามารถกำหนดสีโหนดโดยใช้เกณฑ์หลายประการ แนวทางที่เป็นมาตรฐานที่สุดคือโดยชุมชน ถ้าเรามีสี่ชุมชนในกราฟของเรา เราจะมีสี่สี ผ่านสี จะเข้าใจได้ง่ายขึ้นว่ากลุ่มโต้ตอบอย่างไร เมื่อพิจารณาจากข้อมูลของคุณ

ในการระบายสีโหนด ก่อนอื่นเราต้องระบุชุมชน ใน Gephi ให้คลิกปุ่มโมดูลาร์ในหน้าต่างใต้แท็บสถิติ ปุ่มนี้ใช้อัลกอริธึมคลัสเตอร์กราฟ Louvain ยอดนิยม ซึ่งเป็นหนึ่งในอัลกอริธึมที่เร็วที่สุดที่มีอยู่ ซึ่งถือว่าล้ำสมัยเนื่องจากประสิทธิภาพสูง ในหน้าต่างที่ปรากฏขึ้น ให้คลิกยอมรับ อีกหน้าต่างหนึ่งจะปรากฏขึ้นพร้อมพล็อตแบบกระจายของชุมชนที่กระจายตามขนาด ตอนนี้ เรามีแอตทริบิวต์ใหม่ในแต่ละโหนดชื่อ Modularity Class ซึ่งมีชุมชนที่ผู้ใช้เป็นเจ้าของ

เมื่อทำตามขั้นตอนก่อนหน้านี้เสร็จแล้ว เราก็สามารถระบายสีกราฟตามกลุ่มได้ ในการดำเนินการดังกล่าว ในแท็บ ลักษณะที่ปรากฏ ให้คลิก ใช้

ภาพหน้าจอที่แสดงแท็บ "ลักษณะที่ปรากฏ" ในพื้นที่ทำงานของ Gephi รูปภาพแสดงช่วงของสีที่ใช้ในกราฟ
ใช้รูปลักษณ์ของเกฟีเพื่อเพิ่มสีสัน

ที่นี่เราสามารถดูขนาด (ในแง่ของเปอร์เซ็นต์ผู้ใช้) ของแต่ละชุมชน ในกรณีของเรา ชุมชนหลัก (สีม่วงและสีเขียว) มีประชากร 11.34% และ 9.29% ของประชากรทั้งหมดตามลำดับ

การใช้เลย์เอาต์และจานสีปัจจุบัน กราฟจะมีลักษณะดังนี้:

ภาพของกราฟสี รูปร่างเหมือนกับกราฟขาวดำก่อนหน้า แต่สีช่วยระบุชุมชนเฉพาะ โดยชุมชนที่ใหญ่ที่สุด (สีม่วง) อยู่ที่มุมล่างซ้ายและชุมชนที่ใหญ่เป็นอันดับสอง (สีเขียว) ที่มุมบนขวา ระหว่างสีเหล่านี้ ชุมชนเล็กๆ จะแสดงด้วยสีอื่นๆ เช่น สีฟ้า สีส้ม สีแดง และสีดำ
กราฟสีช่วยให้เราระบุชุมชนต่างๆ ได้อย่างง่ายดาย

การตรวจจับอินฟลูเอนเซอร์ของ Twitter

สุดท้ายนี้ เราต้องการระบุผู้เข้าร่วมหลักในการอภิปรายเพื่อทำความเข้าใจ เช่น ใครเป็นสมาชิกของชุมชนใด เราสามารถวัดอิทธิพลของผู้ใช้แต่ละคนด้วยคุณสมบัติที่แตกต่างกัน หนึ่งในนั้นคือ ระดับปริญญา ของพวกเขา นี่แสดงว่ามีผู้ใช้รีทวีตหรือพูดถึงพวกเขากี่คน

เพื่อเน้นผู้ใช้ที่มีการโต้ตอบจำนวนมาก เราจะเปลี่ยนขนาดของโหนดโดยใช้คุณสมบัติ Degree:

ภาพหน้าจอแสดงวิธีเปลี่ยนคุณสมบัติ Degree ใน Gephi ใต้แท็บ Appearance เดียวกันที่กล่าวถึงในรูปก่อนหน้า ขนาดต่ำสุดตั้งไว้ที่ 0.1 และขนาดสูงสุดตั้งไว้ที่ 10
การเปลี่ยนคุณสมบัติ Degree ใน Gephi

กราฟจะแสดงผู้มีอิทธิพลเป็นโหนดที่แสดงโดยวงกลมขนาดใหญ่:

รูปภาพของกราฟสีคล้ายกับภาพก่อนหน้า แต่มีการเพิ่มวงกลมที่แสดงโหนดผู้มีอิทธิพล กลุ่มสีแต่ละกลุ่มมีโหนดดังกล่าวจำนวนหนึ่ง
เอาต์พุตสีที่แสดงผู้มีอิทธิพลเป็นโหนดที่ใหญ่ขึ้น

ตอนนี้เราได้ระบุผู้ใช้ที่มีการโต้ตอบจำนวนมากแล้ว เราสามารถเปิดเผยชื่อของพวกเขาได้ โดยคลิกที่ลูกศรสีดำในแถบที่ด้านล่างของหน้าจอ:

ภาพหน้าจอของพื้นที่ทำงาน Gephi แสดงลูกศรสีดำที่มุมล่างขวาของ UI
การเข้าถึงการกำหนดค่าฉลากใน Gephi

จากนั้นคลิกที่ป้ายกำกับและการกำหนดค่า ในหน้าต่างที่ปรากฏขึ้น ให้เลือกกล่องกาเครื่องหมายชื่อ แล้วคลิกยอมรับ ถัดไป คลิกช่องกาเครื่องหมายโหนด เส้นสีดำขนาดเล็กจะปรากฏในกราฟ นี่คือชื่อของผู้ใช้ทั้งหมด แต่เราไม่ต้องการเห็น ทั้งหมด เพียงสิ่งที่สำคัญที่สุด

ในการกำหนด ให้เปลี่ยนขนาดตามระดับโหนดโดยใช้หน้าต่างเดียวกับที่เราใช้สำหรับขนาดโหนด เราเพิ่มขนาดต่ำสุดจาก 0.1 เป็น 10 และเพิ่มขนาดสูงสุดจาก 10 เป็น 300

ด้วยการเพิ่มชื่อ กราฟจะมีข้อมูลมากขึ้นอย่างเห็นได้ชัด เนื่องจากแสดงให้เห็นว่าชุมชนต่างๆ มีปฏิสัมพันธ์กับผู้มีอิทธิพลอย่างไร:

รูปภาพของกราฟสีที่มีวงกลมแสดงถึงผู้ใช้ที่สำคัญ โดยมีชื่อของผู้ใช้ที่สำคัญที่สุดซ้อนทับอยู่ด้านบน ขนาดของข้อความสอดคล้องกับขนาด (อิทธิพล) ของผู้ใช้แต่ละราย โดยขนาดใหญ่ที่สุดคือ ESPNFC ในสีม่วง, TrollFootball ในสีเทา และ PSG_inside เป็นสีชมพู
การเพิ่มชื่อทำให้เราเห็นว่าชุมชนต่างๆ มีปฏิสัมพันธ์กับผู้มีอิทธิพลอย่างไร

ตอนนี้เราเข้าใจมากขึ้นเกี่ยวกับการสนทนา Twitter โดยเฉพาะนี้ ตัวอย่างเช่น การรวมบัญชีของชุมชนที่เป็นมิตรต่อสิ่งแวดล้อม เช่น mundodabola และ neymarjrdepre เผยให้เห็นโลคัสของบราซิล ชุมชนสีส้มและสีเทาประกอบด้วยผู้ใช้ที่พูดภาษาสเปน เช่น sc_espn และ InvictosSomos โดยเฉพาะอย่างยิ่ง ชุมชนสีเทาและสีดำดูเหมือนจะพูดภาษาสเปน เนื่องจากมีผู้ใช้เช่น IbaiOut, LaScaloneta และสตรีมเมอร์ยอดนิยม IbaiLlanos สุดท้าย ชุมชนสีม่วงและสีแดงดูเหมือนจะพูดภาษาอังกฤษได้เนื่องจากมีบัญชีเช่น ESPNFC และ brfootball

ตอนนี้เราเข้าใจมากขึ้นแล้วว่าทำไมผู้ใช้เหล่านี้ถึงประกอบด้วยชุมชนต่างๆ ในแง่ของสังคมวิทยา และไม่ใช่แค่การคำนวณด้วยกราฟเท่านั้น: พวกเขาพูดภาษาต่างกัน! พวกเขาทวีตเกี่ยวกับเมสซี่และทีมใหม่ของเขา แต่มันสมเหตุสมผลแล้วที่ผู้พูดภาษาสเปนโต้ตอบกับผู้พูดภาษาสเปนคนอื่น ๆ มากกว่าผู้พูดภาษาโปรตุเกสหรือภาษาอังกฤษ ยิ่งไปกว่านั้น เรายังเข้าใจได้ด้วยว่าแม้ว่าชุมชนสีเทาและสีส้มจะพูดภาษาสเปนได้ แต่พวกเขาพูดจากมุมมองที่ต่างกัน ชุมชนสีเทาใช้วิธีการที่ตลกขบขันมากขึ้นซึ่งอธิบายว่าทำไมพวกเขาโต้ตอบกันมากกว่ากับบัญชีฟุตบอลหรือนักข่าวอย่างเป็นทางการ

ปลดล็อกศักยภาพของ R และ Gephi

ถ้าเราไม่ใช้ Gephi ในการสร้างกราฟ เราก็สามารถใช้ไลบรารี Ggplot ของ R ได้ อย่างไรก็ตาม จากมุมมองของฉัน ไลบรารีนั้นมีข้อ จำกัด มากกว่าในแง่ของการสร้างกราฟเครือข่าย ไม่ไดนามิกเหมือน Gephi กำหนดค่าได้ยากกว่า และการแสดงผลที่ได้จะมีความชัดเจนน้อยลง

ในส่วนที่เหลือของซีรีส์ เราจะทำการวิเคราะห์นี้ต่อไป เราจะทำการวิเคราะห์ข้อความการสร้างแบบจำลองหัวข้อเพื่อดูว่าผู้ใช้พูดคุยกันมากเพียงใดและหัวข้อใดที่พวกเขาสนใจ เราจะทำการวิเคราะห์ความรู้สึกเพื่อดูว่าเป็นบวกหรือลบ และเราจะทำการวิเคราะห์กราฟเชิงลึกเพื่อวิเคราะห์ผู้มีอิทธิพลที่ใหญ่ที่สุดของ Twitter

คุณสามารถใช้ขั้นตอนเหล่านี้เพื่อวิเคราะห์การสนทนา Twitter ใหม่และดูว่าคุณจะได้รับข้อมูลเชิงลึกใดบ้างจากกราฟโครงเรื่องของคุณ