IT/ADP
[ADP_과목 4. 데이터 이해_제 4장 비정형 데이터 마이닝]
호랑구야
2021. 3. 1. 09:00
* 다음 내용은 [데이터 분석 전문가 가이드] (2019년 개정판)을 읽고 정리한 내용입니다.
제 1절 텍스트 마이닝
- 1980년대에 이미 부상한 바 있지만, 당시에는 노동집약적 수동적 방법이었다
- 최근 10여 년 사이 급속도록 발전하였다
- 텍스트 마이닝
- 텍스트를 이용한 데이터 마이닝
- 텍스트를 사용하여 패턴이나 관계를 추출하고, 그 안에서 의미있는 정보나 가치를 발굴하여 해석하는 일련의 과정
- 다양한 포맷(웹 콘텐츠나 PDF, 마이크로소프트 오피스 파일, 오라클 오픈 오피스 파일, XML, 텍스트 파일 등)의 문서로부터 데이터를 획득해 이를 문서별 단어의 매트릭스로 만들어 추가 분석이나 데이터 마이닝 기법을 적용해 통찰을 얻거나 의사결정을 지원하는 방법
- 예시
- 많은 기업들이 트위터를 통해 자사 브랜드를 언급한 내용이나, 자사 트위터 계정에서 고객들과 주고 받은 문장을 API로 읽어 들여 분석하고 있다
- 사용자별/시간별로 어떤 내용을 언급하는가
- 긍정적/부정적인 말을 하고 있는가
- 시간의 흐름에 따른 키워드의 변화가 어떻게 되는가
- 캠페인 진행 전후에 고객들의 키워드에 변화가 있는가
- 프로모션 후 구전효과가 있는가
- 주로 어떤 집단의 고객들이 반응을 보이는가
- 기업의 평판 관리와 마케팅 활동을 실시간 관리한다
- 경쟁사 브랜드에 대한 반응 모니터링을 통해 경쟁 젼략을 수립한다
- 정치/환경/의료 등 다양한 분야와 제조/설비/영업 등 다양한 업무 영역과 관련된 내용을 지원할 수 있다
- 공장에서 작업자들이나 설비 유지보수원들이 작성한 정보를 통해 설비 고장을 예측할 수 있다
- 물건을 구매하기 전 기 구매자가 남긴 상품평을 분석하여 제품의 성능이나 불만사항 등을 미리 접할 수 있다
- 뉴스 기사나 연설문의 주제를 발굴하여 시간에 따른 주제의 흐름을 볼 수 있고, 나아가 특정 분야의 전문가를 알아내는 데 활용할 수 있다
- 많은 기업들이 트위터를 통해 자사 브랜드를 언급한 내용이나, 자사 트위터 계정에서 고객들과 주고 받은 문장을 API로 읽어 들여 분석하고 있다
1. 텍스트 마이닝의 기능
- 문서 요약
- 문서 분류
- 문서 군집
- 특성 추출
- 어려운 점
- 해당 언어에 대한 깊이 있는 이해와 문화나 관습에 대한 이해가 필요
- 미국과 영국 모두 영어를 사용하지만, 한 쪽에서 좋은 결과를 보였던 분석 기법이 다른 쪽에서도 좋은 결과를 보인다는 보장이 없으므로, 언어 및 국가별로 다른 접근 방식의 분석을 수행해야 한다
2. 텍스트 마이닝의 기본 프로세스
R에서 텍스트 마이닝을 수행하는데 필요한 패키지 {tm}을 설치
가. 데이터 수집
- 데이터 수집
- SNS에 기재된 글이나 뉴스 기사, 연설문, 각종 리뷰와 댓글과 같이 분석에 사용 가능한 텍스트 데이터를 수집하는 것
- 트위터 데이터를 가져올 수 있는 환경 만들기
- 자료를 가져오는 방식
- 웹페이지에서 HTML을 데이터로 가져와서 parsing 하는 방식
- API를 이용해 가져오는 방식
- 편리하지만, 2013년 3월경부터 다소 제약이 발생
- 무분별한 API사용에 따른 제약을 강화하기 위하여, 반드시 인증을 거쳐 접근하도록 했다
- 한 번에 가져올 수 있는 데이터의 크기도 1500건으로 제한된다
- 쿼리를 이용해 지속적으로 자료를 가져올 때 일정시간 안에 많은 정보를 가져오면 블로킹된다
- 하루에 가져오는 건수뿐 아니라, 몇 시간 내 가져올 수 있는 양도 제한된다
- IP에도 제약이 있어, 교육장에서 여러 사람이 동시에 작업을 수행할 경우, 100건으로 제한되기도 한다
- 유의할 점
- 인증을 위해 화면에 나온 URL을 웹페이지로 불러야 되는 경우, R 콘솔 창에서 작업하는 것이 적합하다
- 모든 URL은 반드시 http://로 시작하는 Full URL을 입력해야 한다.이때 Callback URL은 입력하지 않는다
- 자료를 가져오는 과정
- 1. http://dev.twitter.com/apps에 들어간다
- 2. 이메일 인증을 받아 계정을 만든 후 로그인한다
- 3. 트위터에 접속해 application을 생성한다
- 4. 트위터 데이터를 수집하기 위해 필요한 {twitterR} 패키지를 설치한다
- 5. 트위터의 application의 Keys and Access Tokens 탭에 나와있는, api_key, api_secret, access_toekn, access_token_secret 등을 R에 입력한다
- 자료를 가져오는 방식
- keyword <- '~'
- ~.tw <- searchTwitter(keyword, since='0000-00-00', n=000, lang='en')
- ~.tw[~:~]
- 메세지 내용 확인할 수 있다
- ~.tw$getScreenName()
- 해당 메시지를 작성한 사람의 이름을 확인할 수 있다
- ~.tw$getText()
- 해당 트위터 내용을 메시지의 텍스트로 가져온다
- ~.df <- twListToDF(~.tw)
- ~.text <- ~.df$text
- list 형태를 dataFrame으로 변환하여 텍스트만 추출하기
- {plyr}를 이용하는 것도 가능하다
- ~.text <- laply(~.tw, function(i) i$getText())
나. 데이터 전처리 및 가공
데이터에 문장부호나 의미없는 숫자, 단어, URL 등과 같이 분석하는데 있어 유의하게 사용되지 않는 부분을 제거하거나 변형하여 분석에 용이하게 텍스트를 가공하는 과정
- Corpus 생성
- Corpus
- 데이터의 정제, 통합, 선택, 변환의 과정을 거친 구조화된 단계
- 더 이상 추가적인 절차없이 데이터 마이닝 알고리즘 실험에서 활용될 수 있는 상태
- {tm}에서 문서를 관리하는 기본 구조
- 텍스트 문서들의 집합
- VCorpus(short for Volatile Corpus)
- 메모리에서만 유지되는 Corpus
- PCorpus(Permanent Corpus)
- R 외부의 DB나 파일로 관리되는 것
- 저장장소를 표시하는 디렉토리 DirSource, 각 벡터값 VectorSource, CSV 파일 같은 데이터 프레임 DataframeSource을 통해 읽어 들여 생성된다
- ovid <- Corpus(DirSource(system.file('texts', 'txt', package='tm')), readerControl=list(language='~'))
- ~.corpus <-- Corpus(VectorSource(~.txt))
- 개별 문서는 [[]]로 인덱스 조회 가능하다
- getReaders()
- readDOC, readPDF, readPlain, readRCV1, readRCV1asPlain, readReut21578XML, readReut21578XMLasPlain, readTabular, read XML 등이 존재
- inspect(array지정)
- 문서내용을 볼 수 있다
- Corpus
- tm_map() 함수의 적용
- tm_map()
- {tm}내에 존재하는 Corpus 형식을 갖는 데이터들의 변형을 위한 함수
- Corpus 형식의 데이터에 일반적인 함수를 적용하여 전처리 등의 가공이 가능하다
- getTransformations()
- removeNumbers, removePunctuation, removeWords, stemDocument, stripWhitespace
- 위 5개 제외한 함수들을 그냥 사용하면, 여러 오류가 생성된다
- ~.corpus <- ~(~.corpus, stripWhitespace)
- 1. ~.corpus <- ~(~.corpus, content_transformer(tolower))
- 2-1 ~.corpus <- ~(~.corpus, tolower)
- 2-2 ~.corpus <- ~(~, PlainTextDocument)
- tm_map()
- 빈 공간(white space)을 제거한다
- ~.corpus <- ~(~.corpus, stripWhitespace)
- 중간에 빈 공간이 있으면, \n으로 변경되어 분석할 때 걸림돌이 되므로 반드시 처리하고 진행해야 한다
- 특정 패턴을 가지는 단어를 제거하거나 다른 단어로 대체한다
- @로 시작하는 태그나, http로 시작하는 링크는 반드시 제거해야 한다
- ~.corpus <- ~(~.corpus, content_transformer(gsub), pattern='@\\S*', replacement='')
- ~.corpus <- ~(~.corpus, content_transformer(gsub), pattern='http\\S*', replacement='')
- 문장 부호 및 구두점을 제거
- ~.corpus <- ~(~.corpus, removePunctuation)
- # ... ? ! ~ @ $ & % . , 등 문장 부호가 깨끗하게 제거되었다
- 대문자를 소문자로 변경해 사전에 있는 내용과 비교할 수 있도록 표준화한다
- 한글이나 특수문자를 미리 처리한 후 진행해야 한다
- ~.corpus <- ~(~.corpus, content_transformer(tolower))
- 특정 단어를 제거하는 것
- {tm} 패키지에는 stop word라는 것이 있다
- 한글에서는 조사에 해당되며, 띄어쓰기 등을 통해 확인이 가능하다
- 영어의 경우에는 174개의 제외어가 있다
- 현재 13개의 언어를 지원한다(한국어는 지원되지 않는다)
- ~.corpus <- ~(~.corpus, removeWords, stopwords('en '))
- 이외에 분석에 있어 의미가 없다고 생각되는 단어
- rt, via, even 등 의미 없는 단어를 벡터를 만들어 함께 제거 가능하다.
- ~~~ <- c(stopwords('en'), 'rt', 'via', 'even')
- ~.corpus <- ~(~.corpus, removeWords, ~~~)
다. 자연어 처리
- 기본적으로 형태소 분석 과정을 포함하고 있다
- 한글의 경우 {tm}내에 제외어가 작성되지 않았으므로, 다른 패키지를 사용하여 자연어 처리를 해야한다
- Stemming
- stemDocument
- 문서를 스테밍한다
- test <- stemDocument(c('updated', 'update', 'updating'))
- "updat" "updat" "updat"
- 앞 어간을 제외한 나머지 부분을 잘라낸 결과를 도출한다
- 문서를 스테밍한다
- stemCompletion
- 스테밍된 단어를 완성시키기 위한 과정
- stemCompletion(test, dictionary = c('updated', 'update', 'updating'))
- updat updat updat
- "update" "update" "update"
- stemming된 단어와 완성을 위한 dictionary를 함께 넣으면, 가장 기본적인 어휘로 완성시킨다
- 이때 꼭 dictionary가 필요하다
- 스테밍된 단어를 완성시키기 위한 과정
- stemming을 하기 앞서 dictionary를 위해, 현재의 Corpus파일을 dict.corpus에 저장한다
- dict.corpus <- my.corpus
- my.corpus <- tm_map(my.corpus, stemDocument)
- 잘못하면 전부 NA가 되어버리므로, 방지하기 위해 제작된 간단한 함수를 실행한다
- stemCompletion_mod <- function(x,dict) {
- + PlainTextDocument(stripWhitespace(paste(stemCompletion(unlist(strsplit(as.Character(x), " ")),
- dictionary = + dict, type = 'first'), sep = "", collapse = " ")))
- + }
- my.corpus <- lapply(my.corpus, stemCompletion_mod, dict=dict.corpus)
- # lapply를 통해 모든 트위터 메시지에 stemCompletion_mod를 적용하였다
- my.corpus <- Corpus(VectorSource(my.corpus)) # first
- # 반환된 list를 다시 Corpus로 변환하였다
- type을 first로 지정하여, 등장하는 첫 번째 어휘로 어간이 같은 모든 단어를 사용하도록 설정한다
- stemDocument
- 한글 처리
- 전희원씨가 개발한 KoNLP가 대표적이다
- {rJava} 패키지를 설치해야한다
- 컴퓨터 운영체제에 맞추어, JRE를 설치해야 한다
- KoNLP 패키지를 이용하여 단어를 추출하고, Corpus로 만들어 분석하는 순서로 진행한다
라. TDM 구축
- TDM(Term-Document Matrix)
- 전처리된 데이터에서 각 문서와 단어 간의 사용 여부를 이용해 만들어진 matrix
- 각 단어의 빈도수를 쉽게 알 수 있다
- 모든 단어
- TermDocumentMatrix()를 실행하면, 행은 각 단어를, 열은 트위터 메시지를 나타내는 매트릭스가 생성된다
- 이때, dictionary 부분을 작성하지 않으면, 분리된 모든 단어가 Term으로써 TDM을 만드는데 사용된다
- 단어 사전
- dictionary
- 복수의 문자들의 집합
- TM에서 분석에 사용하고자 하는 단어들의 집합
- 별도 사전으로 정의하여 해당 단어에 대해서만 결과를 산출할 수 있다
- 해당 dictionary를 적용한 TDM을 만들 수 있다
마. 분석 및 시각화
- Association
- findAssocs(dictionary.TDM, '~~', 0.~)
- dictionary.TDM에 ~~ 단어와 연관성이 0.~이상인 단어만을 표시한다
- 이를 통해 무슨 내용이 연관되어 함께 언급되는지를 알 수 있다
- {arules}의 apriori()를 이용하여 연관 분석을 수행한다
- 이를 위해, ~TDM을 단일 처리형(transaction)으로 변환한다
- ~~ <- as(~.m, "transactions")
- 연관분석이란 어떤 사건이 동시에 일어나는지를 알아보는 것
- 연관분석의 대표적인 알고리즘
- apriori
- 빈발 아이템 집합과 연관 규칙이라고 하는 두 가지 형태로 관계를 표현한다
- 아이템의 빈발 정도를 측정하기 위해 지지도의 개념을 사용한다
- 연관 규칙 관계의 강도를 측정하기 위해 신뢰도 개념을 사용한다
- 데이터에 따라 해당 옵션 값이 너무 작으면 결과가 도출되지 않으므로, 지지도와 신뢰도를 높은 수준부터 적절히 조절하면서 분석해야 한다
- ~.all <- apriori(~~, parameter = list(supp=0.~, conf=0.~))
- 도출된 규칙을 보는 방법
- inspect(~.all)
- FP(Frequent Pattern)- 성장
- apriori
- 워드 클라우드
- 단어의 사용 빈도를 효과적으로 보기 위해 사용한다
- 문서에 나타난 각 단어의 빈도수에 대한 정보가 필요하기 때문에, TDM을 매트릭스 형태로 변환한다
- ~.m <- as.matrix(~.TDM)
- brewer.pal은 R의 색상 파레트 함수
- 감성분석
- 오피니언 마이닝 등으로 언급한다
- 문장에서 사용된 단어의 긍정/부정 여부에 따라 특정 소스를 부여해 어떤 색을 띄고 있는 문장인지 평가한다
- 복잡합 문장을 분석할 때 개별 문장이나 문서에 대해 오류가 발생할 수 있다
- 수많은 문서나 데이터를 가공하면 그 추이를 파악하는 데는 큰 무리가 없다
- 1. 특정 단어를 언급한 메세지 000개를 가져와 ~.tweet에 저장한다
- ~.tweets <- searchTwitter('@~', n=000)
- 2. 영어 긍정/부정 단어 파일을 읽어와 저장한다
- pos.word <- scan("~~/positive-words.txt", what='character', comment.char=';')
- neg.word <- scan("~~/negative-words.txt", what='character', comment.char=';')
- 2-1. c함수를 통해 별도로 추가할 수 있다
- pos.word <- c(pos.word, '~~')
- 3. 트위터 메시지를 부여할 변수와, 긍정단어, 부정단어를 할당하고 progress를 표시할 지 여부를 결정한다
- 4. 문장부호, 특수기호, 숫자 문자열을 빈칸으로 대체한다
- 5. 대문자를 소문자로 변환하여 사전의 단어와 비교가 쉽게 한다
- 6. 문장을 split하는 기준이 되는 패턴을 '\\s+'로 하여 띄어쓰기 혹은 띄어쓰기 이상의 빈칸으로 정의한다
- 7. 긍/부정 단어가 나타날 때마다 해당 위치를 1로 세팅해 따로 저장한다
- 8. 긍정과 부정 단어의 합을 차감해 점수를 산출한다
- 9. 점수와 문장을 데이터 프레임 형태로 반환한다
제 2절 사회연결망 분석
- R에서 {igraph} 패키지를 이용하여 다음과 같이 사회연결망 분석을 수행한다
- 데이터를 입수한다
- 소셜 네트워크 그래프를 그린다
- 속성으로 그래프에 변화를 주어 의미 있는 통찰을 얻어 이론을 대신한다
1. 사회연결망 분석 정의
가. SNA 정의
- 사회 연결망 분석: 개인과 집단들 간의 관계를 노드와 링크로서 모델링하여 그것의 위상구조와 확산 및 진화과정을 계량적으로 분석하는 방법론
- 사회연결망: 개인의 인간관계가 인터넷으로 확대된 사람 사이의 네트워크
- 사회과학, 경영학, 응용과학 등 다양한 분야에서 응용
- Jacob Mareno가 'sociometry'에서 사회연결망이라는 개념을 처음 발표
- Barnes(1954)가 사회연결망이라는 용어를 처음으로 내놓았다
- 기존에는 주로 그룹간 또는 그룹 안의 개인에 집중하였으나, Barnes는 독립 네트워크 사이의 관계에 집중했다
- 집합론적 방법
- 객체들의 집합에서 각 객체들 간의 관계를 관계 쌍으로 표현한 것
- 그래프 이론을 이용한 방법
- 객체는 점으로, 두 객체 간의 연결망은 두 점을 연결하는 선으로 표현한다
- 점을 꼭지점, 혹은 노드(Node)라고 한다
- 행렬을 이용한 방법
- 각 객체를 행렬의 행과 열에 대칭적으로 배치한다
- i번째 객체와 j번째 객체가 연결망으로 연결되어 있으면 행렬에 (i, j)에 1을 넣고, 없으면 0을 넣는다
- 분석하고자 하는 데이터를 행렬로 표현한다
- 이때 행과 열에 같은 개체가 배열되면 원모드 매트릭스라고 하며, 다른 개체가 배열되는 것은 2원모드 매트리스라고 한다
- 개체와 개체 간의 관계가 존재하면 1, 존재하지 않으면 0으로 입력한다
- 준 연결망
- 고객과 고객, 상품과 상품사이의 관계를 나타낸 네트워크
- 기존의 자료를 재활용할 수 있다는 장점과, 자료획득의 난점, 비용문제 등으로 인하여 사회과학분야에서 가장 많이 활용된다
- 국내의 사회연결망 연구에서 많이 활용되고 있는 기법은 중심성, 밀도, 중성화 등이다
- 중심성을 측정하는 방법
- 연결정도 중심성
- 한 노드에 직접적으로 연결된 노드들의 합으로 얻어진다
- 한 노드에 얼마나 많은 노드들이 관계를 맺고 있는지를 기준으로, 그 노드가 중심에 위치하는 정도를 계량화한 것이다
- 연결된 노드의 수가 많을수록 연결정도 중심성이 높아진다
- 근접 중심성
- 각 노드 간의 거리를 근거로 중심성을 측정하는 방법으로, 간접적으로 연결된 모든 노드 간의 거리를 합산해 중심성을 측정한다
- 가장 짧은 경로로 모든 사람을 알게 되는 것
- 한 노드로부터 다른 노드에 도달하기까지 필요한 최소 단계의 합
- 근접 중심성이 높을수록 네트워크의 중앙에 위치한다
- 매개 중심성
- 네트워크 내에서 한 노드가 담당하는 매개자 혹은 중재자 역할의 정도로 중심성을 측정하는 방법
- 브로커: 잠재적으로 다른 사람들 사이를 통제할 수 있다
- 한 노드가 연결망 내의 다른 노드들 사이의 최다 경로 위에 위치할수록, 그 노드의 매개 중심성이 높다
- 각 네트워크 간 비교를 위해 상대적 매개 중심성이 사용된다
- 위세 중심성
- 연결된 노드의 중요성에 가중치를 두어 노드의 중심성을 측정하는 방법
- 위세가 높은 사람들과 관계가 많을수록 자신의 위세 또한 높아진다
- 일반적인 형태는 보나시치 권력지수로 불리운다
- 자신의 연결정도 중심성으로부터 발생하는 영향력과 자신과 연결된 타인의 영향력을 합해 위세 중심성을 결정한다
- 연결정도 중심성
나. SNA 적용
- 소셜 네트워크는 아래로 구성된 그래프이다
- 노드, node 혹은 점, vertex
- 에지, edge 혹은 링크, link
- 에지의 방향성 유무에 따라, 방향그래프와 무방향그래프로 구분이 된다
- 사회연결망 분석에 대한 이론은 IT의 발전에 따라 최근 각광받고 있다
- 통신 및 온라인 소셜 미디어, 게임 및 유통업체에서 관심을 보이고 있다
- 페이스북에서 친구들의 관계를 그래프로 보여주는 것
- 일부 소셜 미디어 검색 및 관리 기능을 갖고 있는 솔루션이나 웹 페이지
- 통신사
- 데이터 처리 속도 같은 기술적 문제로 어려움을 겪을 때, 활용상에 어려움이 존재한다
- 소규모 네트워크를 대상으로 소셜 네트워크 분석을 수행하기는 쉽지만, 실제 기업 수준 애플리케이션에서 소셜 네트워크 분석을 수행하는데는 많은 어려움이 있다
- 단일 머신에서 R을 이용해 수행하기에는 거의 불가능하다
- CDR(Call Data Record 혹은 Call Detail Record) 데이터는 수천만 고객을 노드로 가지며, 1일 기준으로 수억 건의 통화가 발생하므로 엄청난 수의 에지를 갖는 그래프가 그려진다
- 따라서 분산처리 프레임워크가 반드시 필요하다
- 분산 처리 기술인 하둡 MapReduce를 활용하거나, 하둡 기반의 그래프 프로세싱 프레임워크인 Giraph로 데이터를 처리 가능한 수준까지 정제한 후, 분석 및 시각화 수행이 가능하다
- R과 하둡을 연동하는 RHadoop, RHIPE과 같은 기술을 활용해 분석하는 방법도 존재한다
다. SNA 단계
사회연결망 분석의 단계
- 그래프를 생성
- 그래프를 목적에 따라 가공하여 분석
- 커뮤니티를 탐지하고 각 객체 또는 노드의 롤을 정의하여 어떠한 롤로 영향력을 보다 효율적으로 줄 수 있는지 정의
- 데이터화하여 다른 데이터 마이닝 기법과 연계
- 데이터화
- 소셜 네트워크 분석의 결과로 얻어진 커뮤니티의 프로파일을 해당 그룹 구성원의 연령, 성별, 고객등급, 평균 거래기간, 휴명기간 같은 고객 프로파일 평균값으로 산출한다
- 각 그룹에 속한 개별 고객 속성에 그룹 넘버와 롤을 결합하여 속성으로 추가하는 업무
- 이와 같은 데이터는 고객 중심으로 클러스터링이나 분류의 input variable로 활용할 수 있다
2. R을 이용한 SNA의 활용
소셜 네트워크는 네트워크를 구성하여 몇 개의 집단으로 구성되는지, 집단 간의 특징은 무엇이고 해당 집단에서 영향력있는 고객은 누구인지, 시간의 흐름과 고객 상태의 변화에 따라 다음에 누가 영향을 받을지를 기반으로, churn/acquisition prediction, fraud detection, product recommendation 등에 활용할 수 있다
가. 단어 간 연관성을 이용한 사회연결망 분석
- dim()함수를 활용하여, 단어의 수를 확인할 수 있다
- 데이터의 수가 너무 많은 행렬을 그대로 사용하여 그래프를 그릴 경우, 너무 많은 노드와 에지로 인한 속도 저하와 함께 의미를 찾는데 어려움이 있을 수 있다
- 각 단어의 빈도수를 계산하고, 빈도수가 n 이상인 단어들로 이루어진 데이터만 추출한다
- 문서에서 해당 단어가 사용된 횟수를 기준으로 사용 여부를 판단하여, 1번 이상이면 1을, 아니면 0 값으로 변환한다
- 활용 함수
- transpose()를 사용하여 행렬의 행과 열을 대칭으로 변환한다
- %*%: 행렬의 곱을 계산한다
- simplify(): loop나 multiple edge를 제거하여 단순화한다
- V(): 노드에 관한 것
- E(): 에지에 대한 함수
- layout.fruchterman.reingold(): 의미 있게 각 노드를 배치하는 함수
- 그래프에서 확인할 수 있는 것
- 커뮤니티: 함께 나타나는 집단
- 유력자: 자신의 커뮤니티와 다른 커뮤니티에 모두 연결이 많은 것
- 리더: 여러 노드와 연결된 것
- 브릿지: 커뮤니티와 커뮤니티를 연결하는데 사용되는 노드
- passive하다: 커뮤니티 끝단에 있는 노드로서 다양한 노드와 연결되지 않은 것
- 고객으로 생각한다면, 유력자 > 지역 리더 > 브릿지 순으로 소셜 마케팅을 수행해야 효율적일 것이다
- 노드는 라벨의 크기와 새상, 프레임 색상을 바꿀 수 있다
- 에지는 굵기와 색상을 바꿀 수 있다
나. 트위터 검색을 통한 사용자 간 소셜 네트워크
- 수집한 결과에서 사용자의 이름을 가져온다
- 트위터 빈도수를 계산하고, 열 이름을 지정한다
- 노드를 추가한다
- 사용자들의 팔로어를 가져오는 스트립트를 수행한다
- 충분히 시간을 둔다
- 네트워크 그래프를 그리기 위해 레이아웃을 지정하고, 노드와 에지의 색상, 크기 등을 알맞게 지정한다
- 사용자집단이 어떻게 연결되어 있고, 각 집단의 특성이 무엇인지, 누가 유력자인지 추가적으로 분석할 수 있다
반응형