빅데이타 & 머신러닝/스트리밍 데이타 처리

트위터 피드 실시간 분석 시스템 디자인

Terry Cho 2016. 9. 9. 18:01


스트리밍 분석 플랫폼인 Apache Beam (Dataflow)를 공부하다 보니, 예제가 필요해서 지난번에는 힐러리와 트럼프 후보가 언급된 피드를 읽어서, 구글의 자연어 분석 API를 통해서 긍정/부정 여부를 분석한 후, 빅쿼리에 넣어서, 파이썬 노트로 그래프로 표현해봤는데, 아무래도 자연어 분석 API의 정확도가 아직 떨어지는 건지, 대부분 부정으로 나오고, 분석 결과도 재미가 없다.


그래서 새로운 분석 예제를 고민 하다가, 다음 방향으로 정했다.



  1. 지난번과 마찬가지로 데이타 수집은 트위터에서 특정 키워드를 fluentd로 수집한다.
  2. 수집한 데이타는 Pub/sub에 저장한다.
  3. Pub/sub에 데이타 플로우 파이프라인을 연결한다.
    1. 데이타 플로우 파이프라인에서 데이타를 읽는다.
    2. 읽어온 데이타중 10%만 샘플링 한다. (아무래도 예제이다 보니)
    3. 트윗 데이타중, 트윗 문자열만 발라낸다. 
    4. 트윗 문자열중 RT가 아닌 문자열만 추출한다.
    5. 구글 자연어 처리 API를 호출한다.
    6. FIXED 윈도우 처리를 한다. (5초 주기)
    7. 자연어 처리 API에서 리턴된 결과로 검출된 명사와,그 명사의 발생횟수, 형용사와 각 형용사의 발생횟수, 이모티콘과 이모티콘의 발생횟수, 그리고 타임 윈도우등 트윗의 감정분석 값의 평균을 계산한다.
  4. 계산 결과를 빅쿼리에 저장한다.
  5. 빅쿼리에 저장된 결과를 제플린에서 읽어서 일별 발생한 명사와 명사의 횟수, 형용사와 형용사의 횟수, 이모티콘과 이모티코의 횟수를 탑 랭킹 8개씩 출력한다.
지난번 감성 분석보다, 같이 언급되는 형용사나 명사의 수를 카운트하면 재미있는 결과를 얻을 수 있지 않을까? 구현 목표는 6시간이내. (월요일??) 


그리드형