소셜 웹 마이닝 2 - 트위터 마이닝

 

Matthew A. Russell의 “Mining the Social Web”을 기반으로 한다.

트위터 마이닝 독학 시도… 하지만…

트위터 마이닝(twitter mining)

이 장에서 배우는 주제는 다음과 같다.

  • 트위터 개발자 플랫폼과 API 요청하는 방법
  • 트위터 메타데이터와 사용법
  • 사용자 멘션, 해시태그, URL와 같은 실체정보를 트윗으로부터 추출
  • 파이썬을 이용한 빈도분석을 수행하는 기술
  • IPython Notebook을 이용한 트위터 데이터 히스토그램

왜 트위터가 모든 범위에 적용되는가?

트위터를 설명하는 하나의 방법은 생각과 아이디어에 일치하는 짧은 140글자 메시지로 사람들이 소통할 수 있게 하는 마이크로블로깅 서비스라는 것이다. 이러한 측면에서 트위터는 무료의 초고속 글로벌 텍스트 메시징 서비스와 유사하다고 생각할 수 있다. 다른 말로 하면, 신속하고 쉬운 통신을 가능하게 하는 가치 있는 기반을 미화시킨 것이다. 그러나 이것이 다는 아니다. 우리의 선천적인 호기심과 7억 이상의 호기심이 있는 사람들이 가입되어있고, 매달 그들 중 1억 이상이 관심사에 활발히 참여하고 있다는 것에 대한 가치 평가를 적절하게 설명한 것은 아니다.

페이스북과 링크드인과 같은 소셜 웹 사이트는 사용자 사이의 연결을 위해 상호 허락이 필요하다(이는 일반적으로 실제 세상의 연결을 의미한다). 비록 다른 사용자가 여러분을 다시 팔로우하지 않거나 여러분이 존재하는 것을 모르더라도, 트위터의 관계 모델은 어떤 사용자의 최근 발생한 일도 여러분이 알 수 있도록 해준다. 트위터의 팔로잉 모델은 단순하지만, 우리를 인간으로 만들어주는 호기심의 기본적인 측면을 활용한다. 유명인사의 소문에 심취하고, 좋아하는 스포츠팀에 대한 정보를 알고, 특정한 정치적 주제에 대한 열정적인 관심을 갖고, 새로운 사람과 친구가 되고 싶어 하는 등 트위터는 여러분의 호기심을 만족시키기 위해 끝없는 기회를 제공한다.

책에는 사색적인 논의가 더 있지만 고리타분하니 생략하고 트위터 API 탐구로 넘어가자.

트위터 API 탐구

기본적인 트위터 용어

트윗(tweet)
140글자의 내용에 하나 또는 그 이상의 실체정보, 그리고 자신의 위치를 나타내는 하나 또는 그 이상의 장소에 대한 참조를 포함할 수 있는 짧은 상태 메시지
개념상 140글자의 텍스트 콘텐츠로서 생각하지만, 눈에 띄는 것보다 더 많은 메타데이터가 존재한다. 트윗 자체의 텍스트 콘텐츠 이외에 실체정보(entities)장소(places) 두 개의 추가적인 메타데이터가 함게 존재한다. 실체정보는 본질적으로 사용자 멘션, 해시태그, URL, 트윗과 관련된 미디어, 자신의 위치를 나타내는 장소를 트윗에 덧붙일 수 있다. 장소는 트윗이 작성된 실제의 위치이지만, 트윗에서 설명하는 위치에 대한 참조가 될 수도 있다.

좀더 구체적으로 설명하기 위해, 다음의 트윗 예를 살펴보자.

@ptwobrussell is writing @SocialWebMining, 2nd Ed. from his home office in Franklin, TN. Be #social: http://on.fb.me/16WJAF9

이 트윗은 124글자의 길이를 갖고, 사용자 멘션인 @ptwobrussell과 @SocialWebMining, 해시태그인 #social, URL인 http://on.fb.me/16WJAF9 와 같은 네 개의 트윗 실체정보를 포함한다. 트윗에서 분명히 언급한 Franklin, Tennessee라는 장소가 있지만, 트윗과 관련된 “장소” 메타데이터는 트윗이 작성된 위치를 나타내며, 아마 Franklin, Tennessee는 해당될 수도 안될 수도 있다. 140글자보다 적은 것에 많은 메타데이터가 존재하며, 단문이 얼마나 강력할 수 있는지 나타낸다. 초기의 검색 방법에서 다수의 다른 트위터 사용자, 웹 페이지에 대한 링크, 집합의 의미로서 작용하고, 전체 트위터세계를 수평으로 가로지르는 해시태그를 갖고 있는 상호 참조 주제들에 대한 명확한 레퍼런스가 될 수 있다.

타임라인(timeline)
연대적으로 정렬된 트윗 모음. 일반적으로 인식할 만한 가치가 있는 두 개의 타임라인에는 "home timeline"과 user timeline"이 있다. 임의의 트위터 사용자 관점에서 "home timeline"은 계정에 로그인할 때 보고, 여러분이 팔로잉하는 사용자의 모든 트윗을 보는 것이다. 반면, "user timeline"은 특정 사용자만의 트윗 모음이다.
스트림(stream)
타임라인은 비교적 낮은 속도의 트윗 모음인 반면, 스트림은 실시간으로 트위터를 통해 흐르는 일반적인 트윗의 샘플들이다. 특히 대선 토론과 같이 널리 관심을 갖는 이벤트 동안 모든 트윗의 "public firehose"는 분당 수십만의 트윗에 해당하는 고점에 도달하는 것으로 알려져 있다.(http://bit.ly/1a1kV9N). 트위터의 public firehose는 이 책의 범위 내에서 고려하기에 너무 많은 데이터를 쏟아내고, 흥미 있는 기술적인 도전을 선사한다. 이러한 것이 다양한 서드파티 업체가 firehose를 좀더 활용할 수 있는 방식의 모음으로 만들기 위해 트위터와 파트너 관계를 갖게 되는 하나의 이유다. 그렇긴 하지만, public timeline(http://bit.ly/1a1kVq7)의 자그마한 무작위 샘플도 API 개발자가 강력한 응용프로그램을 만들기 위해 충분한 공공의 데이터에 대한 필터링 접근을 제공하기에 유용하다.

트위터 API 연결 생성

트위터는 직관적이고 사용하기 쉬운 RESTful API를 만들기 위해 매우 주위를 기울여 왔다. 그렇더라도 API 요청과 관련한 작업을 더 감소시킬 수 있는 훌륭한 라이브러리들이 있다. 트위터 API를 감싸고 있으며 일반적인 API 문법을 거의 일대일로 모방하고 있는 아름다운 파이썬 패키지는 twitter이다. 다른 파이썬 패키지처럼 pip install twitter를 이용하여 설치할 수 있다.

트위터에 API 요청하기 전에 “https://dev.twitter.com/apps” 에서 어플리케이션을 생성할 필요가 있다. 어케이션을 생성하는 것은 개발자가 API 접근을 획득하고, 트위터가 모니터하고, 서드파티 플랫폼 개발자와 필요할 때 상호작용하기 위한 표준화된 방법이다.

text

나는 위 사진과 같이 입력하였다. 사실, 해당 3칸엔 아무 텍스트나 입력해도 상관없다. 이후, 해당 어플리케이션에서 Your access token도 authorize 해준다. 이로써 트위터 API에 인증된 연결을 생성하고, GET trends/place를 통해 유행하는 것들을 살펴보자. 트위터의 개발자 분야를 공부할 때 지속적으로 참조하기 위해서 twitter docs for developers를 북마크하자.

IPython Notebook을 실행하고 탐색을 시작하자. 계정의 인증 증명을 코드 예제의 시작 부분의 변수에 입력하여 예제 1-1을 따라해보자. (예제)에서 예제 folk하고 ipython notebook으로 실행 가능하다.

text ipynb/Chapter 1 - Mining Twitter 로 들어가면 위와 같은 화면이 나온다. 안내를 따라 CONSUMER_KEY, CONSUMER_SECRET, OAUTH_TOKEN, OAUTH_TOKEN_SECRET을 입력하고 해당 블록을 실행하면 <twitter.api.Twitter object at 0x10654a210>와 유사한 결과를 얻을 수 있다. 이는 우리가 성공적으로 OAuth 인증 증명을 사용해서 트위터 API 쿼리를 위한 인증을 얻었다는 것을 나타낸다.

아직 작성중입니다.
하기 싫어졌습니다.