목록분류 전체보기 (252)
Joonas' Note
한국 노래 가사(1964~2023년) 데이터 분석해보기 배경 노래를 꽤 다양하게 듣는 편인데 최근 한국 노래들에 이지리스닝류가 많아지기도 했고, 한국어 가사의 비중이 점점 줄어들고 있는 등 한국 노래 가사의 트렌드가 궁금해져서 한번 데이터 blog.joonas.io 오랜 시간에 걸쳐서 음원 스트리밍 플랫폼에 추천이 많이 도입되었다. 특정 노래를 기반으로 추천하는 건 아주 오래 전부터 이미 있었지만 (최소 2010년 iTunes 부터), 근래에는 주제/테마별로 묶은 플레이리스트를 추천하기도 한다. 정밀한 그룹화를 하려면 음원의 특성(파형, bpm, 장르, 가수, 연도 등)까지도 고려해야겠지만, 이번에는 자연어 처리에 집중하고 싶은 만큼 가사 내용을 토대로 주제별로 나눌 수 있는 지 확인해보고자 한다. 데이..
배경 미디엄 블로그를 보다보면 아래와 같이 예상 읽기 시간이 나온다. 예전에 사람이 글을 읽는 데 걸리는 평균 시간을 알아본 적이 있다. WPM(Words per minute) 라고 부르는 단위도 있어서 이미 연구가 있었던 듯 하다. 아래와 같이 여러 나라에 대해서 WPM을 계산한 연구도 있지만 한글은 빠져있다. 한글을 제외하면 평균적으로 190~200 WPM 정도의 속도이다. TimeToRead | Wolfram Function Repository Function Repository Resource: TimeToRead resources.wolframcloud.com 그래서 한글에 대한 WPM을 찾아보다가 120 정도라는 글을 찾았고 한글과 영문의 분포에 따라 적절히 계산하기로 했다. 영어의 경우에는 ..
배경 수 많은 노래들이 있었다. 그 중에서 가장 중독적인 노래는 무엇이었을까. 아마도 후크송이 뽑히지 않을까싶은데, 그 이유는 가사 반복이 많은 이유라고 추측한다. 그렇다면 노래의 "중독성", 엄밀히는 "가사가 반복된 정도"를 어떻게 수치로 계산할 수 있을까? 라는 고민에서 출발한 글이다. 정의부터 모호한 문제이지만 한번 계산해보고자 하던 여러 시도를 글로 남겨보고 납득할 수 있는 지 결과도 함께 기록한다. 단순하게 빈도 세기 처음에는 단순하게 노래마다 (공백으로 구분된) 동일한 구절이 반복되는 횟수를 세고, 가장 많이 반복된 횟수가 높은 노래가 더 반복을 많이 하는 노래라고 생각했다. 공백 단위로 구분한 이유는, 문장 단위로 자르기에는 "La La La" 와 "La La La La" 가 서로 다르게..
배경 노래를 꽤 다양하게 듣는 편인데 최근 한국 노래들에 이지리스닝류가 많아지기도 했고, 한국어 가사의 비중이 점점 줄어들고 있는 등 한국 노래 가사의 트렌드가 궁금해져서 한번 데이터를 분석해보기로 했다. 데이터는 멜론 연대별 TOP 100 차트로부터 제목/가수/가사 정도만 수집했고, 기억이 맞다면 약 8시간정도 걸렸다. 정말 영어가 많아졌는가? 마침 1964년부터 2023년까지 60년의 데이터가 쌓였고, 결론부터 말하자면 영어 비중은 많아졌다. 2023년에 들어서는 영어 가사의 비중이 25% 를 넘을 정도로 많아졌고, 최근에 사람들이 이런 사실을 체감하는 이유는 2011년 이후로 10년만에 영어 비율이 더 커지고 있기 때문으로 보인다. 영어 비중은 2008~2012년 사이에 잠시 상승하고 그 뒤로는 ..
눈코입 맞추기 게임 만들기 2편 눈코입 맞추기 게임 만들기 1편 예전부터 만들어보고 싶었는데 미루고 미루다가 이번에 만들만한 이유가 생겨서 구현해보기로 했다. 회사 티타임 내기용 게임을 준비하는데, 아래와 같이 눈코 blog.joonas.io 문제점 2편에서는 얼굴을 제대로 찾지 못하는 이슈를 고치면서, 사진에 있는 모든 얼굴을 인식해서 퍼즐을 만들도록 변경했다. 하지만 아래와 같이 고개를 갸울인 얼굴 사진은 결과가 원하는 대로 나오지 않았다. 따라서 아래의 빨간 네모처럼 얼굴이 회전한 각도를 새로 구하고, 그에 맞게 다시 face landmark를 찾아야한다. 얼굴 회전시키기 정확한 출처는 모르겠으나 주로 face landmark를 추출할 때 68개의 점을 찾는다. 지금까지의 결과 역시 위 68 fac..
눈코입 맞추기 게임 만들기 1편 예전부터 만들어보고 싶었는데 미루고 미루다가 이번에 만들만한 이유가 생겨서 구현해보기로 했다. 회사 티타임 내기용 게임을 준비하는데, 아래와 같이 눈코입을 보고 누구인지 맞추는 게임 blog.joonas.io 문제점 1편에서는, 사진에서 얼굴 부분의 비율이 작으면 얼굴을 제대로 찾지 못한다는 문제가 있었다. 1편의 마지막에 얼굴 부분만 잘라낸 이미지에서 face landmark를 찾도록 했더니 결과가 개선되는 것을 확인했으니, 이 작업을 그대로 코드로 작성했다. 해결 먼저 이미지에서 얼굴을 찾는 API로 faceapi.detectAllFaces 를 사용할 수 있다. 한 번의 호출로 이미지에서 찾은 모든 얼굴들의 bounding box 배열을 반환한다. const optio..
예전부터 만들어보고 싶었는데 미루고 미루다가 이번에 만들만한 이유가 생겨서 구현해보기로 했다. 회사 티타임 내기용 게임을 준비하는데, 아래와 같이 눈코입을 보고 누구인지 맞추는 게임을 쉽게 만들 수 있지 않을까했다. 얼굴에서 특징점을 추출하는 솔루션은 꽤 오래 전부터 있었기때문에, 어렵지 않게 찾을수 있을거라 생각했고 실제로도 그랬다. 우선은 이미지를 업로드하고 결과를 바로 보기에 웹이 편할 것 같고, 문제를 만드는 것을 포함해서 게임 UI 까지 구현하는 것도 고려해서 javascript 라이브러리로 찾아보았다. 처음에는 OpenCV-javascript 를 사용해보려고 했는데, 생각만큼 얼굴 사진에서 face landmark 를 잘 찾아내지 못했었다. 얼추 찾기는 하는데 만족스럽지는 못했다. 그래서 ML..
평소처럼 인터넷을 유영하다 세상에서 가장 작은 나라(micronation)라고 주장하는 시랜드(Sealand)라는 걸 발견했다. 어쩌다 이런 일을 벌였는지는 기억나지 않지만 분명 맨정신이었고 3월 어느 새벽에 재밌어보여서 시작했다. 결론부터 말하자면 시랜드 공국(Principality of Sealand)에 기사 작위를 신청했고 5월 쯤 되어서 소포가 도착했다. 일단 작위가 생긴다는 일 자체가 뭔가 재밌을 것 같아서 벌였는데, 시랜드는 매관매직으로 작위를 구매할 수 있으니 이런 매지컬한 일을 지나칠 수 없었다. 물론 시랜드 자체가 나라로 인정되지 않기 때문에..... 진짜로 책임이 없는 유희 그 자체다. 이해는 잘 안가지만 남작(Baron)보다 기사(Knight)가 더 비싸다. 흠... 우선 칭호에 있어..