การวิเคราะห์เครือข่ายโซเชียลใน 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 สามรายการ:
- igraph เพื่อสร้างกราฟการโต้ตอบ
- tidyverse เพื่อเตรียมข้อมูล
- 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 แล้วเปิดขึ้น มันจะโยนหน้าต่างที่สรุปข้อมูลกราฟ เลือก ยอมรับ สิ่งนี้จะปรากฏขึ้น:
จำเป็นต้องพูดนี้ไม่เป็นข้อมูลมาก นั่นเป็นเพราะเรายังไม่ได้นำเลย์เอาต์ไปใช้
เค้าโครงเครือข่าย
ในกราฟที่มีโหนดและขอบนับพัน การวางตำแหน่งโหนดในกราฟิกมีความสำคัญ นี่คือจุดประสงค์ของการจัดวาง พวกเขาวางโหนดในตำแหน่งที่กำหนดโดยเกณฑ์ที่กำหนด
สำหรับบทช่วยสอนการวิเคราะห์เครือข่ายโซเชียล เราจะใช้เลย์เอาต์ ForceAtlas2 ซึ่งเป็นตัวเลือกมาตรฐานสำหรับการวิเคราะห์ประเภทนี้ มันวางตำแหน่งโหนดโดยจำลองแรงดึงดูดทางกายภาพและการผลักระหว่างกัน หากมีการเชื่อมต่อโหนดสองโหนด โหนดทั้งสองจะอยู่ใกล้กันมากขึ้น หากไม่เชื่อมต่อกัน พวกเขาจะห่างกันมากขึ้น เลย์เอาต์นี้ให้กราฟข้อมูลในแง่ของชุมชน เนื่องจากผู้ใช้ที่อยู่ในชุมชนเดียวกันจะถูกจัดกลุ่มเข้าด้วยกัน ในขณะที่ผู้ใช้จากชุมชนต่างๆ จะอยู่ในภูมิภาคต่างๆ
ในการใช้เลย์เอาต์นี้กับเคสของเรา ให้ไปที่หน้าต่างเลย์เอาต์ (ที่มุมล่างซ้าย) เลือก ForceAltas 2 แล้วคลิกเรียกใช้ เมื่อคุณทำเช่นนี้ คุณจะเห็นว่าโหนดเริ่มเคลื่อนที่และก่อตัวเป็น "ก้อนเมฆ" จำนวนมาก หลังจากนั้นไม่กี่วินาที คุณจะมีรูปแบบที่เสถียรมากและคุณจะสามารถคลิกหยุดได้ โปรดทราบว่าการหยุดโดยอัตโนมัติอาจใช้เวลานาน
เนื่องจากเป็นอัลกอริธึมสุ่ม คุณจะมีเอาต์พุตที่แตกต่างกันเล็กน้อยในการรันแต่ละครั้ง ผลลัพธ์ของคุณควรคล้ายกับสิ่งนี้:

กราฟเริ่มดูน่าสนใจ ตอนนี้เรามาเพิ่มสีสันให้กับมันกันเถอะ
การตรวจจับชุมชน
เราสามารถกำหนดสีโหนดโดยใช้เกณฑ์หลายประการ แนวทางที่เป็นมาตรฐานที่สุดคือโดยชุมชน ถ้าเรามีสี่ชุมชนในกราฟของเรา เราจะมีสี่สี ผ่านสี จะเข้าใจได้ง่ายขึ้นว่ากลุ่มโต้ตอบอย่างไร เมื่อพิจารณาจากข้อมูลของคุณ
ในการระบายสีโหนด ก่อนอื่นเราต้องระบุชุมชน ใน Gephi ให้คลิกปุ่มโมดูลาร์ในหน้าต่างใต้แท็บสถิติ ปุ่มนี้ใช้อัลกอริธึมคลัสเตอร์กราฟ Louvain ยอดนิยม ซึ่งเป็นหนึ่งในอัลกอริธึมที่เร็วที่สุดที่มีอยู่ ซึ่งถือว่าล้ำสมัยเนื่องจากประสิทธิภาพสูง ในหน้าต่างที่ปรากฏขึ้น ให้คลิกยอมรับ อีกหน้าต่างหนึ่งจะปรากฏขึ้นพร้อมพล็อตแบบกระจายของชุมชนที่กระจายตามขนาด ตอนนี้ เรามีแอตทริบิวต์ใหม่ในแต่ละโหนดชื่อ Modularity Class ซึ่งมีชุมชนที่ผู้ใช้เป็นเจ้าของ
เมื่อทำตามขั้นตอนก่อนหน้านี้เสร็จแล้ว เราก็สามารถระบายสีกราฟตามกลุ่มได้ ในการดำเนินการดังกล่าว ในแท็บ ลักษณะที่ปรากฏ ให้คลิก ใช้
ที่นี่เราสามารถดูขนาด (ในแง่ของเปอร์เซ็นต์ผู้ใช้) ของแต่ละชุมชน ในกรณีของเรา ชุมชนหลัก (สีม่วงและสีเขียว) มีประชากร 11.34% และ 9.29% ของประชากรทั้งหมดตามลำดับ
การใช้เลย์เอาต์และจานสีปัจจุบัน กราฟจะมีลักษณะดังนี้:
การตรวจจับอินฟลูเอนเซอร์ของ Twitter
สุดท้ายนี้ เราต้องการระบุผู้เข้าร่วมหลักในการอภิปรายเพื่อทำความเข้าใจ เช่น ใครเป็นสมาชิกของชุมชนใด เราสามารถวัดอิทธิพลของผู้ใช้แต่ละคนด้วยคุณสมบัติที่แตกต่างกัน หนึ่งในนั้นคือ ระดับปริญญา ของพวกเขา นี่แสดงว่ามีผู้ใช้รีทวีตหรือพูดถึงพวกเขากี่คน
เพื่อเน้นผู้ใช้ที่มีการโต้ตอบจำนวนมาก เราจะเปลี่ยนขนาดของโหนดโดยใช้คุณสมบัติ Degree:
กราฟจะแสดงผู้มีอิทธิพลเป็นโหนดที่แสดงโดยวงกลมขนาดใหญ่:
ตอนนี้เราได้ระบุผู้ใช้ที่มีการโต้ตอบจำนวนมากแล้ว เราสามารถเปิดเผยชื่อของพวกเขาได้ โดยคลิกที่ลูกศรสีดำในแถบที่ด้านล่างของหน้าจอ:
จากนั้นคลิกที่ป้ายกำกับและการกำหนดค่า ในหน้าต่างที่ปรากฏขึ้น ให้เลือกกล่องกาเครื่องหมายชื่อ แล้วคลิกยอมรับ ถัดไป คลิกช่องกาเครื่องหมายโหนด เส้นสีดำขนาดเล็กจะปรากฏในกราฟ นี่คือชื่อของผู้ใช้ทั้งหมด แต่เราไม่ต้องการเห็น ทั้งหมด เพียงสิ่งที่สำคัญที่สุด
ในการกำหนด ให้เปลี่ยนขนาดตามระดับโหนดโดยใช้หน้าต่างเดียวกับที่เราใช้สำหรับขนาดโหนด เราเพิ่มขนาดต่ำสุดจาก 0.1 เป็น 10 และเพิ่มขนาดสูงสุดจาก 10 เป็น 300
ด้วยการเพิ่มชื่อ กราฟจะมีข้อมูลมากขึ้นอย่างเห็นได้ชัด เนื่องจากแสดงให้เห็นว่าชุมชนต่างๆ มีปฏิสัมพันธ์กับผู้มีอิทธิพลอย่างไร:
ตอนนี้เราเข้าใจมากขึ้นเกี่ยวกับการสนทนา Twitter โดยเฉพาะนี้ ตัวอย่างเช่น การรวมบัญชีของชุมชนที่เป็นมิตรต่อสิ่งแวดล้อม เช่น mundodabola และ neymarjrdepre เผยให้เห็นโลคัสของบราซิล ชุมชนสีส้มและสีเทาประกอบด้วยผู้ใช้ที่พูดภาษาสเปน เช่น sc_espn และ InvictosSomos โดยเฉพาะอย่างยิ่ง ชุมชนสีเทาและสีดำดูเหมือนจะพูดภาษาสเปน เนื่องจากมีผู้ใช้เช่น IbaiOut, LaScaloneta และสตรีมเมอร์ยอดนิยม IbaiLlanos สุดท้าย ชุมชนสีม่วงและสีแดงดูเหมือนจะพูดภาษาอังกฤษได้เนื่องจากมีบัญชีเช่น ESPNFC และ brfootball
ตอนนี้เราเข้าใจมากขึ้นแล้วว่าทำไมผู้ใช้เหล่านี้ถึงประกอบด้วยชุมชนต่างๆ ในแง่ของสังคมวิทยา และไม่ใช่แค่การคำนวณด้วยกราฟเท่านั้น: พวกเขาพูดภาษาต่างกัน! พวกเขาทวีตเกี่ยวกับเมสซี่และทีมใหม่ของเขา แต่มันสมเหตุสมผลแล้วที่ผู้พูดภาษาสเปนโต้ตอบกับผู้พูดภาษาสเปนคนอื่น ๆ มากกว่าผู้พูดภาษาโปรตุเกสหรือภาษาอังกฤษ ยิ่งไปกว่านั้น เรายังเข้าใจได้ด้วยว่าแม้ว่าชุมชนสีเทาและสีส้มจะพูดภาษาสเปนได้ แต่พวกเขาพูดจากมุมมองที่ต่างกัน ชุมชนสีเทาใช้วิธีการที่ตลกขบขันมากขึ้นซึ่งอธิบายว่าทำไมพวกเขาโต้ตอบกันมากกว่ากับบัญชีฟุตบอลหรือนักข่าวอย่างเป็นทางการ
ปลดล็อกศักยภาพของ R และ Gephi
ถ้าเราไม่ใช้ Gephi ในการสร้างกราฟ เราก็สามารถใช้ไลบรารี Ggplot ของ R ได้ อย่างไรก็ตาม จากมุมมองของฉัน ไลบรารีนั้นมีข้อ จำกัด มากกว่าในแง่ของการสร้างกราฟเครือข่าย ไม่ไดนามิกเหมือน Gephi กำหนดค่าได้ยากกว่า และการแสดงผลที่ได้จะมีความชัดเจนน้อยลง
ในส่วนที่เหลือของซีรีส์ เราจะทำการวิเคราะห์นี้ต่อไป เราจะทำการวิเคราะห์ข้อความการสร้างแบบจำลองหัวข้อเพื่อดูว่าผู้ใช้พูดคุยกันมากเพียงใดและหัวข้อใดที่พวกเขาสนใจ เราจะทำการวิเคราะห์ความรู้สึกเพื่อดูว่าเป็นบวกหรือลบ และเราจะทำการวิเคราะห์กราฟเชิงลึกเพื่อวิเคราะห์ผู้มีอิทธิพลที่ใหญ่ที่สุดของ Twitter
คุณสามารถใช้ขั้นตอนเหล่านี้เพื่อวิเคราะห์การสนทนา Twitter ใหม่และดูว่าคุณจะได้รับข้อมูลเชิงลึกใดบ้างจากกราฟโครงเรื่องของคุณ
