더북(TheBook)

구현 힌트

◼︎ HTTPS가 아니라 HTTP를 사용한다.

◼︎ 미디어위키에서 ‘simple example’을 읽어 보고, 작성할 프로그램의 기반으로 사용한다.

◼︎ 먼저 제목으로 페이지 ID를 얻은 후 그 ID로 페이지에 접근한다.

◼︎ JSON 데이터를 시각적으로 살펴본다. 특히 데이터의 상하 구조에서 사용된 키(key)를 눈여겨보자. 이 글을 쓰는 시점에서 답은 여섯 번째 하위 항목에 있다.

 

음악 장르 분류기(Music Genre Classifier) ★★★

위키피디아를 사용해서 록(rock)과 팝(pop) 음악 장르 간 의미론적 유사도를 계산하는 프로그램을 작성해 보자. 장르별12 주요 음악 그룹 리스트로 시작해 보자(리스트에는 위계가 있으며 하위 카테고리가 존재한다). 관련된 모든 그룹을 찾을 때까지 리스트와 하위 항목을 재귀적으로 처리하자(시간과 트래픽을 아끼려고 영국 록 그룹처럼 탐색 범위를 좁혀도 된다). 결과로 얻은 각 그룹에서 (가능하다면) 장르를 추출해 보자. 자카드( Jaccard) 유사도 인덱스13를 사용해서 의미론적 유사도를 계산하자. 장르 A와 B의 쌍에서 J(A,B)=|A∩B|/|A∪B|=|C|/(|A|+|B|-|C|)인데 |A|와 |B|는 각 장르에 속하는 그룹 개수이며, |C|는 A와 B에 모두 속하는 그룹 개수다. 결과를 pickle로 저장해 차후에 또 쓸 수 있게 하자. 이 프로그램을 두 번 다시 돌려 보고 싶지 않을 것이다.

전체적으로 몇 개의 장르가 있으며, 어떤 장르가 서로 가장 강하게 연결되어 있는가?




신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.