R 및 Gephi의 소셜 네트워크 분석: Twitter 자세히 알아보기
게시 됨: 2022-03-11소셜 네트워크 분석은 Jacob Levy Moreno가 사회적 상호작용의 추상화인 소시오그램을 만든 1934년에 태어났습니다. 특히, 소시오그램은 각 노드가 사람을 나타내고 가장자리가 이들 간의 상호 작용을 나타내는 그래프입니다. 모레노는 소그룹의 사람들의 행동을 연구하기 위해 소시오그램을 사용했습니다.
왜 작은가? 그가 일했던 시대에는 수많은 개인의 상호작용에 대한 세세한 정보를 얻기가 어려웠기 때문입니다. 이것은 트위터와 같은 온라인 소셜 네트워크의 출현으로 바뀌었습니다. 오늘날에는 누구나 방대한 트위터 데이터를 무료로 다운로드할 수 있으며, 이는 흥미로운 분석의 문을 열어 우리의 행동 방식과 다양한 행동이 사회에 미치는 영향에 대한 새로운 이해를 이끌어냅니다.
소셜 네트워크 분석 시리즈의 첫 번째 파트에서는 R 언어를 사용하여 이러한 분석 중 일부를 수행하여 데이터를 얻고 사전 처리하고 Gephi를 사용하여 놀라운 시각화를 생성하는 방법을 보여줍니다. Gephi는 모든 종류의 네트워크를 시각화하도록 특별히 설계된 오픈 소스 응용 프로그램입니다. 이를 통해 사용자는 여러 기준 및 속성을 통해 시각화를 쉽게 구성할 수 있습니다.
R에서 소셜 네트워크 분석을 위한 Twitter 데이터 다운로드
Twitter 개발자 계정이 없는 경우 계정을 만들고 Essential 액세스를 신청하세요. 그런 다음 Twitter 데이터를 다운로드하려면 Twitter 개발자 포털에서 앱을 만드십시오. 그런 다음 프로젝트 및 앱 섹션에서 앱을 선택하고 키 및 토큰 탭으로 이동합니다. 거기에서 자격 증명을 생성해야 합니다. 이들은 Twitter API에 액세스하고 데이터를 다운로드하는 데 사용됩니다.
자격 증명을 생성했으면 분석을 시작할 수 있습니다. 우리는 세 개의 R 라이브러리를 사용할 것입니다:
- igraph , 상호작용 그래프를 생성합니다.
- Tidyverse , 데이터를 준비합니다.
- rtweet , Twitter Dev API와 통신합니다.
install.packages() 함수를 사용하여 이러한 라이브러리를 설치할 수 있습니다. 우리의 목적을 위해 R 및 RStudio를 설치했으며 이에 대한 기본적인 이해가 있다고 가정합니다.
우리의 시연에서는 유명한 아르헨티나 축구 선수 리오넬 메시가 파리 생제르맹(PSG) 축구 클럽에서 보낸 첫 주 동안 열띤 온라인 토론을 분석할 것입니다. 무료 Twitter API를 사용하면 현재 날짜 이전 7일 동안만 트윗을 다운로드할 수 있습니다. 인용한 것과 동일한 데이터를 다운로드할 수는 없지만 현재 토론을 다운로드할 수는 있습니다.
다운로드부터 시작하겠습니다. 먼저 라이브러리를 로드한 다음 자격 증명을 사용하여 인증 토큰을 만들고 마지막으로 다운로드 기준을 설정합니다.
이 코드 블록은 세 단계를 모두 구현하는 방법을 자세히 설명합니다.
## 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")참고: <> 사이의 모든 태그를 이전 자격 증명 단계에서 생성한 정보로 바꾸십시오.
이 코드를 사용하여 2021년 8월 8일과 2021년 8월 13일 사이에 "messi"라는 단어가 포함된 모든 트윗(최대 250,000개)에 대해 Twitter API를 쿼리했습니다. Twitter에는 수량 값과 숫자가 흥미로운 분석을 허용할 만큼 충분히 크기 때문입니다.
Twitter의 다운로드 속도는 15분당 45,000개 트윗이므로 250,000개 트윗을 다운로드하는 데 1시간 이상이 걸렸습니다.
마지막으로 RStudio를 닫거나 시스템을 종료할 때 복원할 수 있도록 모든 컨텍스트 변수를 RData 파일에 저장했습니다.
상호작용 그래프 만들기
다운로드가 완료되면 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가 읽을 수 있는 파일을 생성해야 합니다. write_graph 함수를 사용하여 .gml 파일을 생성할 수 있으므로 이것은 쉽습니다.
write_graph(simplify(net), "messi_network.gml", format = "gml") 이제 Gephi를 열고 "그래프 파일 열기"로 이동하여 messi_network.gml 파일을 검색하여 엽니다. 그래프 정보를 요약하는 창이 표시됩니다. 수락을 선택합니다. 다음과 같이 표시됩니다.
말할 필요도 없이 이것은 매우 유익하지 않습니다. 아직 레이아웃을 적용하지 않았기 때문입니다.
네트워크 레이아웃
수천 개의 노드와 간선이 있는 그래프에서는 그래픽에 노드를 배치하는 것이 중요합니다. 이것이 레이아웃의 목적입니다. 그들은 정의된 기준에 의해 설정된 위치에 노드를 배치합니다.
소셜 네트워크 분석 자습서에서는 이러한 종류의 분석을 위한 표준 옵션인 ForceAtlas2 레이아웃을 사용합니다. 노드 사이의 물리적인 인력과 반발력을 시뮬레이션하여 노드를 배치합니다. 두 노드가 연결되면 서로 더 가깝습니다. 연결되어 있지 않으면 더 멀리 떨어져 있습니다. 이 레이아웃은 커뮤니티 측면에서 유익한 그래프를 생성합니다. 동일한 커뮤니티에 속한 사용자는 함께 그룹화되고 다른 커뮤니티의 사용자는 다른 지역에 있기 때문입니다.
이 레이아웃을 사례에 적용하기 위해 레이아웃 창(왼쪽 하단 모서리에 있음)으로 이동하여 ForceAltas 2를 선택하고 실행을 클릭합니다. 이렇게 하면 노드가 움직이기 시작하여 많은 "구름"을 형성하는 것을 볼 수 있습니다. 몇 초 후에 매우 안정적인 패턴을 갖게 되며 중지를 클릭할 수 있습니다. 자동으로 중지되는 데 시간이 많이 걸릴 수 있습니다.
이것은 확률론적 알고리즘이므로 실행할 때마다 출력이 약간씩 다릅니다. 출력은 다음과 유사해야 합니다.

그래프가 매력적으로 보이기 시작합니다. 이제 여기에 색상을 추가해 보겠습니다.
커뮤니티 감지
여러 기준을 사용하여 노드를 색칠할 수 있습니다. 가장 표준적인 접근 방식은 커뮤니티에 의한 것입니다. 그래프에 4개의 커뮤니티가 있는 경우 4개의 색상이 있습니다. 색상을 통해 데이터가 주어지면 그룹이 상호 작용하는 방식을 더 쉽게 이해할 수 있습니다.
노드에 색상을 지정하려면 먼저 커뮤니티를 식별해야 합니다. Gephi의 통계 탭 아래 창에서 모듈화 버튼을 클릭합니다. 이 버튼은 고성능으로 인해 최첨단으로 간주되는 가장 빠른 알고리즘 중 하나인 인기 있는 Louvain 그래프 클러스터 알고리즘을 적용합니다. 표시되는 창에서 수락을 클릭합니다. 크기별로 분포된 커뮤니티의 산점도가 포함된 다른 창이 나타납니다. 이제 사용자가 소유한 커뮤니티를 포함하는 Modularity Class라는 이름의 새 속성이 각 노드에 있습니다.
이전 단계를 완료했으면 이제 클러스터별로 그래프에 색상을 지정할 수 있습니다. 그렇게 하려면 모양 탭에서 적용을 클릭합니다.
여기에서 각 커뮤니티의 크기(사용자 비율 측면에서)를 볼 수 있습니다. 우리의 경우 주요 커뮤니티(보라색 및 녹색)는 전체 인구의 각각 11.34% 및 9.29%를 포함합니다.
현재 레이아웃과 팔레트를 사용하면 그래프가 다음과 같이 보일 것입니다.
트위터 인플루언서 감지
마지막으로, 예를 들어 누가 어느 커뮤니티에 속하는지 이해하기 위해 토론의 주요 참가자를 식별하고 싶습니다. 서로 다른 속성으로 각 사용자의 영향을 측정할 수 있습니다. 그들 중 하나는 학위 입니다. 이것은 얼마나 많은 사용자가 그들을 리트윗하거나 언급했는지 나타냅니다.
상호 작용이 많은 사용자를 강조 표시하기 위해 Degree 속성을 사용하여 노드의 크기를 변경합니다.
그래프는 이제 인플루언서를 더 큰 원으로 표시되는 노드로 표시합니다.
상호작용이 많은 사용자를 식별했으므로 이제 이름을 공개할 수 있습니다. 그렇게 하려면 화면 하단의 막대에 있는 검은색 화살표를 클릭하십시오.
그런 다음 레이블 및 구성을 클릭합니다. 나타나는 창에서 이름 확인란을 선택하고 수락을 클릭합니다. 그런 다음 노드 확인란을 클릭합니다. 그래프에 작은 검은색 선이 나타납니다. 모든 사용자의 이름입니다. 그러나 우리는 그것들을 모두 보고 싶지 않고 가장 중요한 것만 보고 싶습니다.
그것들을 정의하려면 노드 크기에 사용한 것과 동일한 창을 사용하여 노드 정도에 따라 크기를 변경합니다. 최소 크기를 0.1에서 10으로 늘리고 최대 크기를 10에서 300으로 늘렸습니다.
이름을 추가하면 다양한 커뮤니티가 인플루언서와 상호 작용하는 방식을 보여주기 때문에 그래프가 훨씬 더 많은 정보를 얻을 수 있습니다.
이제 이 특정 Twitter 토론에 대해 더 많이 이해하게 되었습니다. 예를 들어, mundodabola 및 neymarjrdepre와 같은 계정을 포함하는 녹색 커뮤니티는 브라질의 위치를 보여줍니다. 주황색 및 회색 커뮤니티에는 sc_espn 및 InvictosSomos와 같은 스페인어 사용자가 포함되어 있습니다. 특히 IbaiOut, LaScaloneta 및 인기 스트리머 IbaiLlanos와 같은 사용자가 있기 때문에 회색 및 흑인 커뮤니티는 스페인어를 사용하는 것으로 보입니다. 마지막으로 보라색 및 빨간색 커뮤니티는 ESPNFC 및 brfootball과 같은 계정을 제공하므로 영어를 사용하는 것으로 보입니다.
이제 우리는 이 사용자들이 그래프 계산뿐만 아니라 사회학 측면에서 서로 다른 커뮤니티를 구성하는 이유를 더 잘 이해할 수 있습니다. 그들은 서로 다른 언어를 사용합니다! 그들은 모두 메시와 그의 새 팀에 대해 트윗하고 있지만 스페인어 사용자는 포르투갈어 또는 영어 사용자보다 다른 스페인어 사용자와 더 많이 상호 작용합니다. 또한 회색 및 주황색 커뮤니티가 스페인어를 사용하더라도 서로 다른 관점에서 사용한다는 것도 이해할 수 있습니다. 회색 커뮤니티는 공식 축구 또는 저널리스트 계정보다 서로 더 많이 상호 작용하는 이유를 설명하는 보다 유머러스한 접근 방식을 사용합니다.
R과 Gephi의 잠재력 실현
그래프에 Gephi를 사용하지 않았다면 R의 Ggplot 라이브러리를 사용할 수 있었을 것입니다. 그러나 내 관점에서 그 라이브러리는 네트워크 그래프 측면에서 훨씬 더 제한적입니다. Gephi처럼 동적이지 않고 구성하기가 더 어렵고 결과 표시가 덜 명확합니다.
나머지 시리즈에서는 이 분석을 더 자세히 다룰 것입니다. 우리는 몇 가지 주제 모델링 텍스트 분석을 수행하여 사용자가 얼마나 많은 이야기를 하고 있고 어떤 주제에 관심이 있는지 확인합니다. 우리는 감정 분석을 수행하여 긍정적인지 부정적인지 확인합니다. 그리고 우리는 Twitter의 가장 큰 영향을 미치는 사람을 분석하기 위해 더 깊은 그래프 분석을 할 것입니다.
이 단계를 사용하여 새로운 Twitter 토론을 분석하고 플롯 그래프에서 얻을 수 있는 통찰력을 확인할 수 있습니다.
