가끔 댓글로 질문받은 사항, 혹은 궁금해할 것 같은 사항들에 대한 글을 적어봄.


- 4.7일 수정됨 


선 세줄요약

- 프로그램 돌려서 게시물 제목 긁어와서 워드클라우드 만듬

- 나 때문에 느려지진 않을 거라는 판단하에 진행 중. 운영자가 문 닫으라고 하면 닫을 예정

- 내가 올리는 게시물에 피드백 해줄만한게 있다면 언제든 환영



1. 이런 거 어떻게 만드냐?

각 채널의 게시물 제목만을 가져와서 의미 없는 문구를 쳐낸 다음에 어절 단위로 나오는 수 세서 워드클라우드 이미지를 만들고 있음. 게시물 내용이나 댓글은 안보고 있음.


1.1 아카라이브 게시물 제목 크롤링

파이썬을 통해서 게시물 리스트를 받아오고 있다.


http 요청을 보내고 받아온 html text를 BeautifulSoup을 통해 파싱해서 원하는 결과를 얻고 있음. python 패키지 중에서 arcalive 패키지가 있는 건 아는데, 동작에 이상이 있더라.


이 데이터를 가지고 일반 사용자들도 채널별, 기간별로 워드클라우드를 만들 수 있는 사이트를 구축하고 있어서, 각 채널의 게시물 제목, 일자, 글쓴이를 저장하고 있음.


1.2 게시물 제목 정제

일단 특수 기호를 지움. 예를 들어서 소신발언) 소신발언] 은 둘 다 결국 소신발언인데 )나 ] 때문에 다르게 통계에 잡힐 수 있으니 괄호같은 특수기호를 떼줌. 느낌표와 물음표는 그것만의 의미가 있을 것으로 생각해서 냅뒀는데, 아직 계속 수정중이라서 추후에는 바뀔수도 있음. ㅋ과 ㅎ은 특수문자는 아니지만 예외적으로 제거하고 있음.


그 후에 아래와 같은 의미 없는 어절을 제거함. 


근데 진짜 솔직히 오늘 그냥 누가 하는 잘 있는 하고 나도 이건 거 내가 하면 저거 이거 지금


다 쓴 건 아니고 제외 키워드 리스트가 있는데 매번 수정 중임. 일단 애매하면 포함 안 시키고 있어서 지금도 의미 없는 게 꽤 포함되어있다고 느낄 수 있음. 그리고 내 기준은 재미라서 씨발, 존나 같은 비속어는 딱히 큰 의미가 있지 않지만 그냥 워드 클라우드에 포함시키고 있음.


현재 워드 클라우드를 보면 조사를 제거 안 하고 있는데 좀 아는 사람이라면 토크나이저 왜 안 씀? 이란 의문을 가질 수 있음. 일단 몇 가지 써보긴 했는데, 커뮤니티 글이 정제된 언어는 아니니까 뭔가 이상한 결과가 섞이는 경우가 있더라. 워드 클라우드를 보는 사람들에게 이거 설명하는 게 더 힘들기도 하고, 어차피 많이 언급되는 단어는 조사 섞여도 많이 언급되니까 일단은 그냥 넘어감. 그래도 연구 중이긴 함.


가끔 A 키워드와 B 키워드는 같은 거니까 한 묶음으로 세어달라는 요청이 있었는데, 이건 진짜 노가다더라고. 홀로라이브 채널의 땃쥐, 베이, 벨즈, 가이진 채널의 F16AJ, F-16AJ 등의 사례가 있는데 이건 해당 도메인을 알아야 가능한 일이라서 당장은 만들기 힘들 것 같음. 애초에 이거 좀 아는 분야라고 해도 어디까지 같은 걸로 잡아야 할지 잘 모르겠더라.

나 혼자서는 이거 못함. 데이터를 쌓아두고는 있으니까 나중에 획기적인 아이디어가 떠오른다면 할 수 있겠지만 아마 못할듯.


1.3 워드 클라우드 이미지 생성


https://github.com/amueller/word_cloud


위 패키지 쓰고 있음. 단어 넣고 파라미터 조정하면 끝. 이거 매번 조정 중이라서 여러 날에 대해서 워드 클라우드 이미지 비교하는 건 부적절함. (가장 큰 단어 몇 가지에 대해서 보는건 괜찮은데, 특정 키워드가 언제보다 언제가 더 크더라 같은 건 올바른 비교가 아님.)


내심 3월까지를 베타로 생각하고 3월 안에 조정을 마칠 생각이라 4월부터는 큰 변화가 없을 듯.



1.4 게시물 수, 유저 수

프로그램이 페이지 넘기면서 글이랑 해당 글을 쓴 유저를 수집하고 있음. 수집한거 바탕으로 바로 게시물 수와 유저 수를 알 수 있겠지? 


유저 수에 대해서 가끔 물어보는 사람이 있는데, ㅇㅇ 이더라도 아이디마다 고유 식별값이 있기에 다른 아이디면 다른 계정으로 치고 있음. 유동의 경우에는 IP가 다르면 다른 사람으로 치고 있음. 다만 유동은 유저수로 잡기에는 부정확하기에 추후에 유저 수를 보여줄 때 유동이 몇명인지 별도로 표기해줄 예정.


사실 각 채널의 게시물 ID를 참조하는게 게시물 수를 세는 가장 간단하면서 정확한 방법인건 알고 있음. 어느 날짜 기준으로 마지막 게시물 ID에서 첫 게시물 ID를 빼면 나오겠지. (ID는 게시물이 하나 쓰여질때마다 1씩 증가함) 일일히 세는거랑 id로 세는거랑 비교하면 일일히 세는게 더 적어지는데 (게시물을 지우는 경우가 있기에) 그렇게 큰 차이는 아니기에 그냥 워드클라우드 만드려고 글 수집하는거 기준으로 하고 있음.



2. 크롤링 한다는거면 사이트 느려지는거 아님?

https://www.similarweb.com/website/arca.live/#traffic


아카라이브의 한 달 방문 수는 적어도 한달에 3000만이니, 대략 하루에 100만 정도의 페이지뷰가 발생하고 있다고 할 수 있음.

나는 게시물 내용이 아닌 게시물 리스트 쪽의 데이터를 가져오고 있음. 아카라이브 하루 글 리젠이 많아봐야 9만쯤 되는 거 같고(이건 그냥 경험적인 거라 추정값), 리스트 한번 긁어오면 45개의 게시물의 제목을 가져오니 하루에 약 2000건 정도의 페이지뷰를 발생시키고 있음.


https://arca.live/b/notice/13076564 의 기타 제한 사항에서 크롤링 관련해서 언급되고 있는데, 내 개인적인 생각으로는 이 정도로는 아카라이브가 영향을 받을 정도는 아니라고 생각해서 진행하고 있음. 만약 하지 말라면 문 닫아야지.



3. 워드 클라우드 올라오는 채널 기준이 뭐임?


특정 채널의 하루 게시물 수 900개가 넘으면 올리고 있음. 기준은 바뀔 수 있음.



4. 뭔가 요청하면 해줌?

생각해보고 재밌을 거 같으면 해봄. 기타 건의 사항이나 의견은 항상 환영임.



4.1 이미 고려했던 사항들

- 제목, 채널, 글쓴이만 수집하고 있고 내용과 댓글은 수집하고 있지 않기에 "어떤 아카콘이 가장 많이 쓰였는가" 와 같은 집계는 할 수 없음

- 구독자 증감도 보여줘야하나 싶었는데, 아카 통계 채널이란 곳에서 이미 하고 있더라고. 

- 채널 종합 글리젠 수, 유저 수 추이는 주간, 월간으로 보여줄만한 것 같음. 다만 그냥 표로 보여주기는 아쉬워서 고민중.

- "제목, 채널, 글쓴이" 외에 더 수집할만한 것은 없나 고민중. 아카콘 리스트(판매량 증감을 볼 수 있음), 개념글 모음, 종합 심의 대상 (개념글, 종합심의 대상글 리젠 순위?) 정도 생각중