2010. 6. 21.

[IT] @issuetoday 알고리즘 공개

"우리는 이슈를 숨기지 않습니다"

1. issue today란?

issue today는 트위터에서 실시간 검색 순위같은 핵심 키워드를 알려주면 어떨까하는 아이디어에 시작된 순수 개인 프로젝트입니다. 시간이 바뀌면 사람이 바뀌고.. 제가 나쁜 마음을 먹을 수도 물론 있겠으나... 현재로서는 순수합니다. 때묻지 않았습니다.
그리고 언론이 가끔 이슈를 숨기기도 한다는 사실을 깨달았습니다. 누구나 떠드는데 조용히 하고 있는
언론을 보고 이런 통계가 매우 도움이 될 수 있다고 생각했습니다.

따라서 issue today, issue now는 모두 이러한 중앙 집권적이 아닌 social news를 지향합니다.
모두가 이야기하면 그것은 이슈가 됩니다. 그리고 이 로봇은 이슈를 숨기지 않습니다.

2. 이 문서를 작성한 이유는?

issue today 통계 산출 방법을 밝히고, 이와 유사한 트위터 API를 통한 로봇 제작에 보탬이 될까 해서!


3. 통계 방법은?

a. http://twittercounter.com/pages/country%26time_zone=Seoul 에서 제공되는 정보를 통해 팔로워 상위 1000명을 모두 팔로잉했습니다. 딱 1000명은 아니지만, 거의 1000명입니다. issuetoday 계정이 이 분들을 팔로잉 하고 있습니다.

참고로 이렇게만 팔로우하니, 맞팔을 약 300분이 해주시더군요. 매너도 다들 좋으세요.

툴을 짜서 할까 하다가, 그냥 손으로 다 팔로잉 했다는...


b. 이 계정의 타임라인을 1시간 간격으로 저장합니다.

팔로잉하는 사람 수가 많으면 API 호출로 가져올 수 있는 과거치 분량이 제한되는 현상이 있습니다. 아마 1000명이 넘으면 더 짧은 시간 밖에 못가져올겁니다. 과거치를 계속해서 가져올 수 있는 방법을 아시는 분!

(twitter4j 라이브러리를 사용했음을 밝힙니다.)

c. 하루 두번(오전/오후 5시 반) 최근 24시간치 자료를 모두 로딩해서 통계내어 트윗합니다. 출근 전, 퇴근 전 각각 트윗한다는 느낌으로 내어놓습니다.

이때!!

가. 모든 트윗 단어들은 분할됩니다. 공백과 특수 문자 등 일정 기준으로 단어 단위로 모두 분할합니다. @issuetoday, #태그, http://url 등이 분리되어 나옵니다.

나. 한글 조사와 명사를 분리합니다. "한국이" 라고 하면, 뒤 '이'를 떼어내고 한 단어를 만듭니다. 최종 통계에는 한국, 한국이 두개가 각각 카운트 되지만, 한국을/한국은 등 때문에 결국 '한국'이 빈도수가 더 높아지는 효과가 생겨서 자연스레 명사를 걸러냅니다. 물론 완벽하지는 않습니다. "정가은" 의 경우 "정가"와 "정가은"으로 분할되기도 합니다...-.-.. 이런 형태소 분할은 사실 어려운 문제라, 대강 일단 이렇게 만들었습니다.

다. 멘션은 멘션(@issuetoday 형태)대로, 태그는 태그대로 따로 모읍니다.

라. URL은 통째로 한 단어가 됩니다.

마. 상투어를 제외합니다. 트위터, 트윗, 팔로우, your, my, this 이런 상투적인 명사들을 제외합니다. 이건 리스트화되어있고 언제든지 변경이 가능합니다. 이거 작성하느라고 초반에 허리좀 휘었습니다. 다만, 보통명사도 중요한 키워드가 될 수 있기 때문에 가급적 방해하지 않으려고 최대한 노력했습니다.

참고로 트위터에 가장 많이 등장하는 단어는 "RT", "감사합니다" 입니다. 따라서 키워드로서 의미를 지니지 않는 이런 단어들은 필터링합니다.

d. 일주일에 한번 일요일 오전에는 일주일간 통계를 발표합니다.

e. 매월 1일에는 한달간 통계를 발표합니다.




4. 오해를 풀어야 하는 부분!

a. 이 통계는 상위 트위터 유저(팔로워수 기준) 1000명입니다. 그것도 팔로잉 하는 계정에서 보이는 타임라인이기 때문에 전수 검사는 아닙니다. 따라서 멘션이나 태그 등은 샘플 추정이라고 보시면 됩니다. 너무 등수에 집착하지 마세요. 트렌드를 본다라고 생각하시면 됩니다.

b. 이 통계는 팔로잉하는 계정에서 보이는 타임라인이기 때문에 상위 트위터 유저 분들이 트윗하거나 RT한 것만 대상으로 하게 됩니다. 1000명을 벗어나서 하는 대화는 대상에 포함되지 않습니다. 원래는 1000명이 작성한 모든 트윗에 대해서 하려고 했습니다만, 이러려면 1000번이 넘는 API 호출이 필요해서 트위터 1시간 150번 API 호출 제한에 걸리게 됩니다.

원래 이렇게 기획했다가 사실 포기했다고 강력히 항변하고 싶습니다..--+

5. 운영은 그리고 다른건?

a. 현재는 가정용 PC로 이 로봇을 구동하고 있습니다.... 전기세라도 뽑으려고 협찬을 받아볼까 주제넘은 혼자만의 고민(?)을 해봤습니다만 당분간 이상태일것 같군요. 다만 구글앱엔진으로 입주할 수 있지 않을까 알아보고 있습니다. 파일 처리 구조를 제거하면 가능할것도 같습니다.

b. 소스 공개는 사실 부끄러워서 못하고 있습니다. 관련된 문의는 트위터로 주세요~. @issuetoday는 로봇이지만, 가끔 사람 말도 합니다.

c. 기타 다른 의견은 모두 @issuetoday로 부탁드립니다. 그리고 처음 의도와는 달리, 많은 분들이 등수에 집착하시기도 합니다. 이건 계획에 없던 것인데..-.- 모쪼록 트렌드를 봐주십사 다시한번 부탁드립니다.

e. 이 어려운 문서를 여기까지 읽어주셔서 감사!

댓글 7개:

  1. 재미있는 프로젝트 같습니다. 앞으로도 좋은 프로그램 많이 만들어 주세요~ 화이팅 ^^/ (@dicadong)

    답글삭제
  2. 4-a번 문제는 http://www.kurrently.com 사용해보세요.
    호출 제한 없습니다.

    답글삭제
  3. 초심에서 크게 벗어나지 않으신다면 좋은 일들이 서로에게 일어나지 않을까요...수고하세요

    답글삭제
  4. 재미있고 신선한 시도인것 같습니다. ^^ 저는 도움을 드릴만한 지식은 없지만 계속 발전하시길 기원하겠습니다....*^^* @Jay_Dragon

    답글삭제
  5. @vicfall 반갑습니다. 순위에 더러 오르지만 유익한 정보도 아닌 일상수다를 즐기는 지라 여러분들께 민폐는 아닌지 ㅎㅎ 민망하지 그지없네요. ㅎ

    답글삭제
  6. 잘읽었읍니다.뭔가 신선한듯 ㅎㅎ

    답글삭제
  7. 지금 서비스 중지인가요.. 안되네요..

    답글삭제