23.1 문헌 탐색과 지식 관리

실습 · 연습문제 1개

인용 그래프의 PageRank citation-pagerank

논문 nn편의 인용 관계가 행렬 A(shape (n, n))로 주어진다. A[j, i] = 1이면 논문 ii가 논문 jj를 인용한다. 즉 열 ii는 논문 ii의 참고문헌 목록이다.

pagerank(A, d=0.85, tol=1e-12, max_iter=1000)을 완성한다.

  1. 열마다 합이 1이 되도록 나눠 전이행렬 P\mathbf{P}를 만든다. 참고문헌이 하나도 없는 논문(열의 합이 0)의 열은 모든 논문에 1/n1/n씩 나눠 준다.
  2. r=1−dn1+d Pr\mathbf{r} = \frac{1 - d}{n}\mathbf{1} + d\,\mathbf{P}\mathbf{r}를 반복한다. 시작값은 r=1n1\mathbf{r} = \frac{1}{n}\mathbf{1}이다.
  3. 이전 값과의 차이의 절댓값 합이 tol보다 작아지면 멈추고, shape (n,)의 r\mathbf{r}을 반환한다.

테스트는 결과의 합이 1인지, 대칭인 그래프에서 모든 값이 같은지, 반복의 고정점 식을 만족하는지, 참고문헌이 없는 논문이 있어도 값이 정의되는지, 그리고 피인용 수가 같아도 중요한 논문에게 인용된 논문이 더 높은 값을 받는지 확인한다.