Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[PyConKR 2019] 온라인 뉴스 댓글은 정말 사람들의 목소리일까? - PART2

44fe9e4f89b57ca0ab95d334799f33c7?s=47 Beomi
August 18, 2019

[PyConKR 2019] 온라인 뉴스 댓글은 정말 사람들의 목소리일까? - PART2

PyConKR 2019 발표자료입니다.

44fe9e4f89b57ca0ab95d334799f33c7?s=128

Beomi

August 18, 2019
Tweet

More Decks by Beomi

Other Decks in Research

Transcript

  1. PyCon Korea 2019 온라인 뉴스 댓글은 정말 사람들의 목소리일까? -

    PART2 이준범 ( jun@beomi.net )
  2. 모두 손을 들어주세요! Hands up!

  3. 온라인으로 뉴스 보지 않으시는 분, 손 내려주세요

  4. 온라인 뉴스를 보지만, 댓글은 보지 않으시는 분 손 내려주세요

  5. "대한민국은 민주공화국이다. 대한민국의 주권은 국민에게 있고, 모든 권력은 국민으로부터 나온다."

  6. "...The simple truth, that nothing is more important to a

    democracy than a well-informed electorate." - The Newsroom
  7. 우리는 정보를 어디에서 얻고있나요?

  8. 댓글: 때묻지 않은, 새로운 정보의 원천

  9. 댓글: 때묻지 않은, 새로운 정보의 원천?

  10. 네이버 월요웹툰 「꿈의기업」 중 "시민들은 본문보다 댓글을더 믿는 편이니"

  11. 우리가 보는 인터넷은 정말 우리 세상을 제대로 반영해주고 있을까요?

  12. :: Disclaimer :: 본 발표 중 정치사회적 내용이 일부 있으나,


    이번 발표는 기술의 사회적 참여를 이야기하는 발표입니다. 제시된 내용은 발표자&파이콘의 정치사회적 입장을 반영하지 않으며, 발표 내용과 발표자의 개인적 견해는 무관하며, 특정 집단의 편향이 반영되지 않았음을 밝힙니다.
  13. 소셜 데이터, 왜 보나요?

  14. •우리 사회에서 나타나는 현상을 '설명'한다는 것 - 수없이 떠도는 '루머'들,

    어떤 것이 Fact인가? - 얼마나 Political Biased가 나타나는가? - 우리가 보는 댓글은 표본 추출로서 우리 사회를 대표하는가?
 (Represent) !14 소셜 데이터를 분석한다는 것은..
  15. •우리 자신에 대한 이해를 높이는 것 •사회가 보다 성숙할 수

    있도록 도와주는 것 - 우리가 더 멋진 사회에서 살 수 있도록 만들어준다는 것 - 기술이 우리 사회에 기여할 수 있는 부분 !15 소셜 데이터를 분석한다는 것은..
  16. 데이터 분석, 사회를 바라보는 또하나의 눈

  17. •데이터 분석과 ML, 새로운 두가지 명제: - "100개는 사람이 볼

    수 있지만, 100만개를 사람이 볼 수는 없다." - "사람이 할 수 있다면, 기계도 할 수 있지 않을까?" ‣ 물론, 충분한 양의 데이터가 있어야 한다. •두가지를 모두 보자! - 사람이 볼 수 있는 규모라면, 자동으로 볼 수 있도록 만들자. - 사람이 볼 수 없는 규모라면, 그동안 보지 못하던 새로운 것을 찾아보자. !17 어떻게 보여줄 수 있을까?
  18. 뉴스 + 댓글 데이터를 보자!

  19. •기사의 정보 !19 어떤 정보를 얻을 수 있나요? 언론사 기사제목

    작성시각
  20. •기사의 정보 !20 어떤 정보를 얻을 수 있나요? 독자들의 감성

    반응과 추천
  21. •댓글의 정보 !21 어떤 정보를 얻을 수 있나요? 댓글의 좋아요/싫어요

    수 댓글의 순위 댓글의 본문 댓글 작성 시각 대댓글 수+내용 댓글 작성자(?)
  22. 데이터를 어떻게 모으지?

  23. •로컬에서 크롤링 NO •클라우드 OK •서버리스! - AWS Lambda -

    S3 ‣ (더 자세한 내용은 2018년 발표와 중복!, 궁금하면 QnA!) !23 데이터를 어떻게 모으지?
  24. !24 서버리스 크롤링 on AWS [2018ver]

  25. !25 서버리스 크롤링 on AWS [2019ver] 두가지 종류로 데이터 수집

    1. [댓글 많은] 랭킹 뉴스 일별 데이터 2. [댓글 많은] 랭킹 뉴스 10분간격 데이터 - CloudWatch로 자동화
  26. •JSON to Parquet (일자별 정리) •AWS Glue (PySpark 환경) semi-서버리스

    !26 데이터 정리하기 10분 간격으로 기사별로 모은 자료, 너무 양이 많아서 전체 size를 찍은게 없음! (약 1.8TB+로 추정) 10GB 282GB
  27. •통계분석 - 데이터를 통계의 방식으로 접근해서 분석 - EDA(탐색적 데이터

    분석): 우리가 가진 데이터는 어떤 모양일까? ‣ 각각의 데이터가 무엇을 의미하는걸까? ‣ 어떤 데이터 분포를 보이고 있는걸까? - 현재 나타나는 현상을 설명하기 위한 방법 - 가진 데이터 + 데이터를 변형하는 것으로 가설 세우고 & 검증하기 ‣ ex) 표준분포에서 멀리 떨어진 사람들은 얼마나 많은 댓글을 쓰고있을까? !27 통계분석 vs 머신러닝 vs 딥러닝
  28. •머신러닝 - 가지고 있는 데이터 중 Feature를 통해 이후를 예측하기

    위한 모델링 - 수치 데이터 / Boolean / 시계열 / 네트워크 등등 - 가설을 세우고 해당하는 분포를 확인하고 실제 세상에 적용해보기 ‣ ex) 통계적 접근을 통해 얻은 시야를 선형/비선형적으로 분류하는 모델링 - Feature Extraction이 성능에 아주 큰 영향을 준다 ‣ 어떤 Feature가 유의미한 연관성이 있을까? ‣ 모든 Feature를 넣을까? 일부를 넣을까? !28 통계분석 vs 머신러닝 vs 딥러닝
  29. •딥러닝 - 데이터를 넣어 Feature를 찾아내기 - Supervisored & Unsupervisored

    Learning - 텍스트와 같은 Unstructured Data에 대해 학습을 하자! ‣ 통계적 접근방법보다 훨씬 높은 성능을 이끌어낸다. !29 통계분석 vs 머신러닝 vs 딥러닝
  30. 어떤 Feature를 세워볼 수 있을까?

  31. Feature는 데이터로부터... 너 자신의 데이터를 알라

  32. •Numeric Data - 숫자로 표현 가능한 데이터 - 좋아요 수

    / 싫어요 수 - 대댓글 수 - 댓글 단 순위(시간순) - 댓글 랭킹 (순공감 순/비율 순 등등) - 공감 비율 등등 !32 데이터는 총 4가지 종류 댓글의 좋아요/싫어요 댓글의 순위 대댓글 수
  33. •Time Data - 시간과 관계된 데이터 - 댓글을 언제 썼는지

    - 기사 쓴 시간 대비 얼마나 빨리 썼는지 - 짧은 시간 내 얼마나 많이 쓰는지 ‣ 이전 댓글과 시차 - 하루에 얼마나 많이 댓글을 다는지 !33 데이터는 총 4가지 종류 댓글 작성 시각
  34. •Text Data - 댓글이라는 '텍스트' 자체의 데이터 - 자연어 처리,

    NLP! •User Data - 정확히 누구인지는 모르지만, 그래도 유저별 댓글을 모아볼 수 있다. !34 데이터는 총 4가지 종류 댓글 본문 유저 정보 2019년 7월 중순부터 유저를 식별하는 방법이 완전히 사라짐
  35. •어떤 데이터를 모았나? !35 간단히 살펴보는 데이터 총량 정치/경제/사회...등 총

    7가지 섹션 (포토 섹션 제외) 섹션별 30개 기사 Max total 210 (실제로는 중복 있음) 매일 랭킹뉴스 중 '댓글 많은' 섹션
  36. •얼마나 많은 댓글과 사람들이 있나? - 총 댓글 개수: 51,866,541개

    (약 5천만개+) ‣ Main 댓글(대댓글 비포함시): 21,759,673개 (약 2천만개+) - 총 유저 수: 1,746,716명 (약 170만명+) ‣ Main 댓글(대댓글 비포함시): 1,306,210명 (약 130만명+) •얼마나 많은 기사가 있나? - 총 기사 수: 38283개 하루에 분야별 TOP30 = 210개(혹은 그 이하) - 총 언론사 수: 80개 !36 간단히 살펴보는 데이터 총량 댓글 많은 하루 약 20만건 내외의 댓글 ('댓글많은' 랭킹 뉴스 한정)
  37. •언론사별 댓글 & 뉴스 개수 - 뉴스가 많이 나오는 연합뉴스가

    1등! !37 간단히 살펴보는 데이터 총량 기사수 댓글수 1. 연합뉴스 2. 중앙일보 3. 조선일보 ...
  38. •제한된 종류의 데이터 중에서 어떤 것이 의미가 있는가? •한 가지

    종류가 아닌 여러가지 종류를 함께 볼때 의미가 생기는 경우 - 베스트댓글(랭킹) = 기사별로 합친 후 정렬 - 유저의 댓글 다는 속도 = 유저별로 합친 후 댓글 시각별 차이 - 최대 댓글 분량 = 유저별 & 일자별로 합친후 숫자 세기 - 분쟁적인 댓글인가? ‣ 좋아요/싫어요 비율이 다른 베스트에 비해 비율이 Outlier ‣ 동시에 대댓글 수가 높음 ‣ 대댓글의 Political bias가 갈림 !38 Feature Engineering
  39. •텍스트 데이터는 조금 더 복잡하다! - 모델에 입력 = 수학적

    값으로 치환! - Q. 어떻게 해야 컴퓨터가 언어를 계산할 수 있을까? - Text 자체의 Feature를 뽑는 방법: ‣ 단어를 1:1로 숫자로 바꾸자 One-Hot embedding ‣ 주변 단어에 따라 N차원의 벡터로 바꾸자 Embedding Layer / Word2Vec ‣ 모든 문장을 보되 가중치를 두고 보자 Attention / Transformer ‣ 미리 막대한 분량의 데이터로 언어를 학습하자 Transfer Learning: BERT / GPT-2 !39 Feature Engineering
  40. •텍스트의 좀 더 다양한 속성 - URL(링크)가 포함되어 있나? -

    한 사람 기준으로 잡을때
 '얼마나 다양한 단어'를 사용하는가? - 얼마나 긴 글을 쓰는가? !40 Feature Engineering
  41. 어떤 가설들을 세워볼 수 있을까? 유저들의 패턴 찾는 아이디어

  42. !42 어떤 가설을 세워볼 수 있을까? Ground Truth

  43. •[문제발생!!] Ground Truth가 없다! - 사실 가장 큰 이슈 -

    어떤 모델링을 한다고 하더라도 명시적 테스트가 불가능함 (False Positive) ‣ ex) 봇이라고 생각했는데, 실제로는 엄청나게 열심히 댓글을 다는 사람이라면? - Unsupervisored Clustering ‣ Clustering을 통한 분류를 진행하려면 사실상 Label이 필요해, 
 일종의 Supervisored Learning이라고 볼 수 있다. - Supervisored Learning !43 어떤 가설을 세워볼 수 있을까?
  44. •Ground Truth가 없다! - 무엇이 '정상' 댓글이고 무엇이 '비정상' 댓글인가?

    - 알 수 있는 것일까?? •"극단적인 댓글을 찾아보자" (Q. 무엇이 '극단적'인 댓글인가?) - 댓글이 절대적인 갯수가 많은 사람의 댓글? - 댓글의 내용이 같거나/유사한 댓글만 도배하는 것? - 정치적으로 Extremely Biased된 댓글? - 욕설하는 댓글? - 무언가 Outlier인 것들 !44 어떤 가설을 세워볼 수 있을까?
  45. •Outlier로 '튀는' 댓글을 쓰는 유저들 - 어떤 Feature의 축을 잡았을

    때 정규분포를 벗어나는 유저들 •Political Lean 쪼개보기 - 보수? 진보? 한쪽 성향이 강하게 드러나는 유저 - 키보드워리어의 콜로세움을 여는 유저는 누구인가 - 집단적인 행동이 있다면 나타날 Temporal Pattern? ‣ 베스트 댓글의 정치적 성향에 따라 좋아요/싫어요의 비율이 다를까? !45 어떤 가설을 세워볼 수 있을까?
  46. 어떤 축을 기준으로 두고 Outlier를 찾을까? 통계적 Feature 잡기

  47. •Idea.1: 댓글에 URL을 많이 가져다 쓰는 경우 - 복붙의 가능성(손복붙?

    매크로?) + 특정 사이트를 보게 만드는 것일까 ‣ 댓글에서는 링크도 클릭도 안되는데! •Idea.2: 평균 문자열 길이 - 기사를 보고나서 '반응'으로 다는 댓글의 길이는
 의도적으로 Bias를 만들기 위한 댓글들보다는 짧지 않을까? - 손으로 단 댓글 길이 < 자동으로 단 댓글 or 복붙한 댓글 길이? !47 어떤 축을 기준으로 두고 Outlier를 찾을까?
  48. •Idea.3: 얼마나 다양한 워딩을 사용하는가? - 동일한 어구/어휘의 반복 -

    단어가 얼마나 다양한 분포로 나타나는가? •Idea.4: 한번에 몰아서 댓글 vs 일상적으로 댓글 - 특정 날짜/이슈에만 댓글 다는 경우 ‣ 단, 분량이 일반 유저에 비해 편차가 크게 많이 다는 경우 !48 어떤 축을 기준으로 두고 Outlier를 찾을까?
  49. •Idea.5: 얼마나 빨리 댓글을 다나? - 두 가지로 기준 세우기

    가능 - 1) 뉴스가 올라오자 마자 댓글 다는 경우 ‣ 뉴스가 올라오는 새벽 시간에 곧바로 댓글을 다는 경우? - 2) 한 댓글을 쓰고 나서 다음 댓글로 활동이 이어지는 간격 ‣ 뉴스를 돌아다니며 뉴스 읽는 시간도 없이 댓글 달고 다니는 경우? !49 어떤 축을 기준으로 두고 Outlier를 찾을까?
  50.   어떤 댓글들이 얼마나 어떻게 링크 달린 댓글 /

    길게 많이 다는 댓글 / 비슷한 단어만 쓰는 댓글 대댓글이 많이 달리는 댓글 기사가 올라오자 마자 달리는 댓글 / 짧은 시간 내에 많이 올리는 댓글 Pandas + Dask를 통한 정량적 / 시계열적 분석 Human Labeling이 들어간 노가다 딥러닝 분석 베댓이 되는가? 봇처럼 보이는가? 집단적 움직임으로 보이는가?
  51. Idea.1 URL 붙이고 다니는 아웃라이어 댓글에서는 링크 클릭도 안되는데..

  52. •URL에 댓글을 다는 비율이 얼마나 될까? - 0에 전부 쏠려있다!

    - 조금 확대해서 1% 이상만 보면 확실한 아웃라이어가 보인다. !52 1. URL 붙이고 다니는 아웃라이어 비율 0% ~ 100% 비율 1% ~ 100% 누가봐도 Outlier!
  53. •URL 댓글은 얼마나? - 전체 댓글 21,759,673개 (내용이 있는 댓글

    한정) - URL 댓글 39,622개 ‣ 전체 댓글 중 0.18% - URL 비율이 1% 이상인 유저수: 10036명 ‣ 1번 이상 단 유저 수: 12386명 !53 1. URL 붙이고 다니는 아웃라이어 url 비율 별 유저들의 댓글 수
  54. •아웃라이어의 댓글은 얼마나?(urlRatio >= .5) - urlRatio: "URL댓글/전체댓글" - True:

    URL댓글 개수(log) !54 1. URL 붙이고 다니는 아웃라이어
  55. •아웃라이어의 댓글은 어떤 댓글인가? - 청와대 청원 게시글 요청이 많은

    편 !55 1. URL 붙이고 다니는 아웃라이어
  56. •아웃라이어의 댓글은 어떤 댓글인가? - 특정 기사/매체로의 유입을 유도하는 글

    !56 1. URL 붙이고 다니는 아웃라이어
  57. Idea.2 댓글을 길게 다는 아웃라이어 최소글자 채우는 것도 귀찮은데..

  58. •댓글의 길이는 비슷비슷? - 댓글 길이 max는 300 - 유저별

    '평균' 댓글 길이를
 살펴보자! !58 2. 평균 댓글 문자열 길이로 찾는 아웃라이어 len<50: 60% len<100: 87% 유저별 평균 댓글 길이
  59. •댓글의 길이는 비슷비슷? - 250 이상으로 보아도
 290~300이 튄다! ‣

    점점 줄어들거나/비슷하지 않고
 확 튀는 것을 볼 수 있다 !59 2. 평균 댓글 문자열 길이로 찾는 아웃라이어 유저별 평균 댓글 길이 (250이상 한정)
  60. •어떤 댓글이 '긴 댓글'? ( > 290) - 정치적 내용이

    긴 댓글 - 자주 다는 경우도 보임 !60 2. 평균 댓글 문자열 길이로 찾는 아웃라이어
  61. •긴 댓글이 차지하는 분량은? - 댓글 평균 길이가 290이상인 댓글의

    수: 14376개 ‣ 위 케이스의 해당하는 유저 수: 4932명 !61 2. 평균 댓글 문자열 길이로 찾는 아웃라이어 댓글 길이별 댓글 수 (from 전체댓글)
  62. Idea.3 비슷한 말을 하는 아웃라이어 얼마나 다양한 워딩을 사용하는 중인가?

  63. •방법1: 유저별 사용 단어 모으기 - 2019년 6월1일~7일 기준 TF-IDF

    ‣ Tokenizer는 kakao의 Khaiii 사용 ‣ sklearn의 TFIDF Vectorizer - "한 사람이 쓴 문장을 토큰(단어)으로 잘라 넣으면 
 토픽 키워드들로 나온다!" !63 3. 비슷한 말만 하는 아웃라이어 생각보다 좀더 오래걸려요!
  64. !64

  65. •가설1: "댓글은 많이 쓰는데, 토픽이 적은 유저 아웃라이어!" •방법 -

    1주일(혹은 1달치) 댓글을 모아서 토픽모델링을 돌린다. ‣ 1달은 TF-IDF도 무척 오래걸립니다. - 유저의 댓글 수와 비교한다. - "토픽 개수 / 댓글 수" 비율이 작은 아웃라이어를 찾는다! !65 3. 비슷한 말만 하는 아웃라이어
  66. •결과 - 0~5에 몰려있는 전형적인 롱테일. - Topic이 적게 나오는

    경우가 많아서 두드러진 결과가 나타나지 않음 !66 3. 비슷한 말만 하는 아웃라이어 (토픽 / 댓글 수) 비 (from 전체댓글)
  67. •방법2: 유저별 일 단위 같은/비슷한 문장 찾기 •유저가 하루에 쓴

    댓글을 모두모아 + 서로 유사도 비교 •유사도 비교는 어떻게? !67 3. 비슷한 말만 하는 아웃라이어 완전히 같은지 == 비교 가장 빠른 방법, 하지만 조금이라도 달라지면 찾을 수 없다 얼마나 글자를 바꾸면 되나 Levenstein Distance, LCS(최장공통길이) + 댓글길이에 따른 비율 얼마나 비슷한 단어를 갖나 [토큰화+JaccardDist/BLEU] [Embedding + Cosine similarity]
  68. •방법: Tokenizer(Mecab) + Jaccard Dist 비교 •결과 - !68 3.

    비슷한 말만 하는 아웃라이어 1유저단위
  69. !69 3. 비슷한 말만 하는 아웃라이어 사실상 완전히 같은 케이스

    •방법: Tokenizer(Mecab) + Jaccard Dist 비교 •결과 - 1유저단위
  70. !70 3. 비슷한 말만 하는 아웃라이어 일부 단어만 바꿔서 다는

    경우 •방법: Tokenizer(Mecab) + Jaccard Dist 비교 •결과 - 1유저단위
  71. •방법: Char 단위 BLEU Score 계산 •결과 - !71 3.

    비슷한 말만 하는 아웃라이어 1유저단위
  72. !72 3. 비슷한 말만 하는 아웃라이어 •방법: Char 단위 BLEU

    Score 계산 •결과 - 1유저단위
  73. •방법: Embedding + Cosine Similarity •결과 - !73 3. 비슷한

    말만 하는 아웃라이어 1유저단위
  74. !74 3. 비슷한 말만 하는 아웃라이어 •방법: Embedding + Cosine

    Similarity •결과 - 1유저단위
  75. 한 유저만 보지 말고, 전체 유저 사이에 유사한 댓글은?

  76. •방법: Tokenizer(Mecab) + Jaccard Dist 비교 •전체 유저의 댓글 -

    댓글간 유사도를 살펴보자 - 같지 않은 유저가 - 비슷한 내용을 - 2번 이상 쓰는 경우 "탐지" !76 3. 비슷한 말만 하는 아웃라이어 전체유저단위
  77. •방법: Tokenizer(Mecab) + Jaccard Dist 비교 •결과 - !77 3.

    비슷한 말만 하는 아웃라이어 전체유저단위
  78. !78 전체유저단위 거의 같은 내용이지만 다른 유저가 쓰고 있는 경우

    작년연구에서는 단일유저만!
  79. •간단한 네트워크 분석 - 유저간 함께 걸린 경우 count +=

    1 - 10번 이상 걸린 경우 Edge로 취급 ‣ Weight는 생략한 그래프 - 유저별로 끼리끼리 모이는 부분이 보임 !79 비슷한 말을 하는 유저들끼리 묶어보자!
  80. !80 비슷한 말을 하는 유저들끼리 묶어보자! 강다니엘 응원 그룹

  81. Idea.4 손이 눈보다 빠른 아웃라이어 뉴스가 올라오자마자 댓글을? 기사 읽기도

    전에 댓글을?
  82. •뉴스가 올라오자 마자 댓글을 다는 경우 - 시간대와 관계없이 굉장히

    기사에 빠르게 댓글을 다는 경우 ‣ 시간대가 일정하다면 유저의 사용패턴이라고 볼 수 있음 •한 사람의 댓글 사이사이에 TimeDelta가 작은 경우 - (댓글을 타이핑하는 속도 + 기사 읽는 속도) << 댓글간 시간 간격 ‣ 복붙인 경우라면 가능? 프로그램? !82 4. 손은 눈보다 빠르다(?)
  83. •뉴스가 올라오자 마자 댓글을 다는 경우 !83 4. 손은 눈보다

    빠르다(?) 1시간(3600초)이내에 단 댓글 2019년 7월 1일자 단순하게 '빠르다'라는 것은 정보가 되지 않음 유저별로 N초 이내에 다는 경우를 세어보는 것이 좋겠다!
  84. •댓글을 달고 바로 댓글을 또다시 다는 경우 !84 4. 손은

    눈보다 빠르다(?)
  85. •댓글을 달고 바로 댓글을 또다시 다는 경우; 10분(600s) 이내? !85

    4. 손은 눈보다 빠르다(?)
  86. 조금 다르게 살펴보기: 베댓의 순위는 어떻게 변하나

  87. 베댓은 어떻게 만들어지나? 한번 베댓은 영원한 베댓? 베댓의 순위 변화를

    살펴보자
  88. •'댓글많은' 기사들을 - 오전 7시 ~ 밤 12시까지 - 매

    10분 간격으로 수집! •기사가 '댓글 많은' 랭킹으로 들어오면 - 10분 간격으로 좋아요 / 싫어요 수 트래킹 가능! - 댓글의 삭제 유무 트래킹 가능! !88 10분단위 스냅샷 데이터셋
  89. !89 20190701: 댓글 분량 per 10분 랭킹 업데이트

  90. •11:20 ~ 24:00 - 베댓 순위는 잘 변하지 않음 -

    댓글 삭제로 순위 변동 있음 - 초반에는 순위 변동 있음 - 후반부로 가면 순위
 변하지 않는 편 •순위가 많이 변하는 댓글? !90 베스트 댓글의 변화 1위 댓글 삭제
  91. •11:20 ~ 24:00 - 베댓 순위는 잘 변하지 않음 -

    댓글 삭제로 순위 변동 있음 - 초반에는 순위 변동 있음 - 후반부로 가면 순위
 변하지 않는 편 •순위가 많이 변하는 댓글? !91 베스트 댓글의 변화 순위가 올라갔다 내려간 경우
  92. •Political 입장이 나타나는 모습 변화 !92 밑에서부터 치고 올라오는 댓글?

    처음에는 모두 보수 댓글 *일본이슈 관련, 정부 비판 댓글
  93. •Political 입장이 나타나는 모습 변화 !93 밑에서부터 치고 올라오는 댓글?

    10시 댓글 부터 정부 지지 댓글 1~5등을 뒤집지는 못하지만, 6~10위 모두 진보 댓글로 변화
  94. 댓글 속에서 나타나는 Political Bias 찾기 딥러닝과 함께하는 Text Feature

  95. •댓글에서 나타나는 정치적 편향성 - 특정 정치와 관련된 입장을 나타내는

    단어 ‣ 키워드 기반으로 찾기 ‣ TFIDF, 단순 빈도, χ2분포 등 - 문맥상 특정 정당 혹은 정책 지지 •보수 vs 진보 댓글 비율 분포는? !95 어떻게 Political Lean을 찾을까? 어떻게 "보수"인지, 어떻게 "진보"인지 자동으로 label 할 수 있을까?
  96. Text Feature with Deep Learning

  97. 손 라벨링(노가다) 이 필요하다!

  98. •하루에 20만개 댓글을 라벨링: 절대! 불가능 •베스트 좋아요가 많다 좋은

    Representative •2019.07월 베스트 댓글 데이터: 5만개+ - 그래도 너무많다.. - 휴먼 라벨링 per day: 약 2000개+ ‣ 혼자 하려면 1달 잡아야.. !98 라벨링노가다 의 시작
  99. •직접 댓글 N만개를 라벨링한다? - 정신 건강이 해로워짐 ‣ 신체건강도

    해로워짐 - 느리다! •좀 더 빠르고 편리하게 라벨링할 수 있는 방법이 없을까? - 조금 부정확하더라도 빠르게 찾을 수 있는 방법은 없을까? - '비슷한 것을 추천'해주는 태깅 서비스 개발을 해보자! !99 조금 더 편리한 Human labeling을 위해
  100. 라벨링 없이 할 수 있는 방법 없을까? 일단 라벨링은 최대한

    피하자!
  101. •가설: "사람은 잘 변하지 않는다" - 한 사람의 정치적 견해가

    극단적으로 바뀔까? % - 그렇다면, 여러 댓글이 '보수' 혹은 '진보'로 라벨링 된 사람의 댓글은
 대부분 '보수'/'진보'성 댓글이 아닐까? ‣ 물론 노이즈가 꽤나 끼어 있을거야! - 따라서 직접 라벨링한 데이터셋에서 유저별 보수/진보 위치를 찾자! !101 조금 부정확하더라도 대충 라벨링
  102. •Political Bias가 심한 커뮤니티의 '정치글'을 써보자! - 커뮤니티의 정치 섹션

    글들의 '제목'을 가져오자 •긁은 데이터 - 일베 3만개 label as '1' - 더쿠 2.7만개 label as '-1' - 간단하게 돌려보자 !102 Baseline 모델 만들기
  103. •그래도 최신 모델을 가져다 써보자, BERT •성능이 (너무) 잘나온다? -

    Train acc 0.905 - Val acc 0.88 •하지만 실제 댓글 데이터에서는... - 전체적으로 '보수'로 판단하는 성향 - 제목 스타일 != 댓글 스타일 !103 Baseline 모델 만들기
  104. 라벨링 적게 할 수 있는 방법 없을까? 댓글 타입에 맞게

    라벨링 필요!
  105. •온라인에서 보이는 사람은 잘 바뀌지 않는다. - N명(N>=100)의 유저를 라벨링

    하고, 해당 유저들의 데이터를 가져온다면? - Outlier 모델들에 몇 번 이상 탐지된 유저들의 패턴을 분석한다면? - 모델에는 잡히지 않았지만,
 기존 탐지된 유저와 비슷한 패턴을 보이는 유저를 찾는다면? - 좀 더 빠르고 훨씬 많은 데이터를 볼 수 있다! !105 사람은 잘 바뀌지 않는다!
  106. •유저들의 성향을 보자! !106 사람은 잘 바뀌지 않는다! mean이 1에

    가까우면 '보수' -1에 가까우면 '진보 mean이 1에 가깝고 1도 많음! 보수 mean이 -1에 가깝고 -1도 많음! 진보
  107. •현재 라벨링된 데이터는 보수:진보 = 약 7:3 - 내부에 들어있는

    유저는 924명:355명 •확실하게 라벨링 된 사람의 정보를 가져오자! - 2019년 1월 1일부터 수집한 데이터와 JOIN - 보수(score > 0.8) 댓글 수: 29,637개 - 진보(score < -0.8) 댓글 수: 3,650개 훨씬 적다 - 따라서 UnderSampling 필요! !107 사람은 잘 바뀌지 않는다!
  108. •SKLearn으로 언더샘플링 - 유저별로 골고루 들어가도록 유저 정보로 stratify -

    굉장히 적지만 일단 '시작'할 수 있는 데이터! •진보가 적다. 진보를 좀 더 찾아보자! !108 사람은 잘 바뀌지 않는다!
  109. •Q. 진보 뉴스와 보수 뉴스의 댓글에 달리는 성향은 다를까? -

    보수 뉴스에 달리는 댓글은 대부분 보수,
 진보 뉴스에 달리는 댓글은 반반? - 결국 보수/진보 Classifier가 필요하다! •진보 뉴스의 댓글들을 좀 더 라벨링해보자! - 추가적으로 10,000개+ 라벨링 [진행중] !109 진보는 어디에 있는가? 사실 아직 연구중!
  110. 유저의 '성향'을 좀 더 잘 쓸 수 있는 방법이 있을까?

  111. •매번 데이터에서 직접 유저를 찾아서 태깅 - 데이터 분석가 혼자만

    할 수 있음 - 시간이 오래걸린다! - DB Query 하나하나 쓰는 것도 일 •웹에서 Interactive하게 태깅을 할 수 있게 만들자 - 다른 사람이 미리 달아둔 태그와 메모도 참고할 수 있게 만들자 !111 유저를 Tagging하는 웹 서비스를 만들자
  112. •Django + Vue.js •기초 분석 모델 저장 •유저 데이터 저장

    - Tag로 유저 지정 - 유사 유저 태그 추천
 (개발중) !112 유저를 Tagging하는 웹 서비스를 만들자
  113. •사람들이 참여할수록 높아지는 정확도! •일종의 추천 서비스와 같은 개념 -

    태그된 유저별 Clustering - 새로운 데이터가 일정 이상이 되면 자동으로 재학습 - "모델도 시간이 지나면 늙는다!"
 자동화된 업데이트가 필요하다! !113 유저를 Tagging하는 웹 서비스를 만들자
  114. •우리가 보는 사회는 결국 '볼 수 있는' 범위 안의 사회

    - 꼭 필터버블이 아니더라도, 사람이 볼 수 있는 것은 제한되어있다 •사람이 하나하나 보는 것이 아닌 자동화된 작업 •모두가 조금씩 신경쓸 수 있게 하는 환경 - 개발자가 아닌 시민들의 참여를 이끌어내려면? - 최대한 적은 수고로 높은 효과를 이끌어내려면? !114 맺으며
  115. •연구를 함께 진행하고 연구 인프라를 제공해주시고 계시는 - UTA HDILAB

    박덕근 교수님 - 고려대 DAVIAN Lab 주재걸 교수님 •아이디어를 제시해주신 - 카이스트/IBS DSLAB 차미영 교수님 - 카이스트 DSLAB 한지영 박사님 - 카이스트 박사과정 정지완님 •그 외에도 도와주신 모든 분들 감사합니다 :) !115 Credit
  116. 행복하게 연구 하는 랩을 찾습니다! NLP / Social Data

  117. 들어주셔서 감사합니다 :)