> For the complete documentation index, see [llms.txt](https://soojle.gitbook.io/project/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://soojle.gitbook.io/project/undefined/undefined-1/undefined-3/undefined-3/recommendation-score.md).

# 사용자-문서 유사도(Recommendation Score)

## 개요

각 사용자에게 적절한 뉴스피드를 생성하는 과정에 앞서,  본 문서에서는 사용자와 문서 간의 관련성을 수식화하는 과정에 대하여 서술한다.&#x20;

## 데이터 포맷

사용자 관심분야 측정을  통해, 각 사용자의 관심 분야는 문서의 주제를 나타내는 방식과 동일한 형태로 표현할 수 있다. 즉, 각 벡터 간의 유사도 측정이 가능하다. 사용자와 문서가 공통적으로 갖는 데이터 포맷은 다음과 같다.&#x20;

### LDA Topic  Format

```coffeescript
# (토픽 넘버, 성분 비율)
ToL = [
(1, 0.16926806), 
(2, 0.0), 
(3, 0.04034211), 
(4, 0.0), 
(5, 0.0), 
(6, 0.02776434),
...
]
```

### Tag Format

```coffeescript
# 성분 비율로 정렬 후, 상위 N개 추출
TaL = {IT:0, 컴터:3, 공모전:24, 동아리:19,...}
```

## 사용자-문서 유사도

사용자와 문서 간의 유사도를 구하는 공식은 다음과 같다.\
(X는 불확정 변수)

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnXfET5_JHgIYbYQGYQ%2F-LnXgjYv3QuJZaIEvv6k%2Fimage.png?alt=media\&token=07e83e66-5345-42cd-984a-67c342e1b21e)

## Topic Similarity(ToS)

사용자와 문서 간의 LDA Topic 유사도를 나타내는 변수이다. 두 벡터간의 유사도를 판단하기 위해 **Cosine Similarity**를 사용한다. 사용자와 문서의 ToL(Topic List)이 다음과 같이 주어졌을 때, 다음과 같이 유사도를 구할 수 있다.

<div align="left"><img src="https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnXi7E8g626vRnf4Cr_%2F-LnXj4TpfiGIEW7ch7wr%2Fimage.png?alt=media&amp;token=2eede0a0-8059-48db-9b20-d9dde33c6185" alt=""></div>

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnXi7E8g626vRnf4Cr_%2F-LnXiThpv5ba50Snsd9g%2Fimage.png?alt=media\&token=ea017659-6083-483b-ab27-4c2bdb6f5ec3)

단, 코사인 유사도의 경우, 공식의 특성상 음수 값이 나올 수 있기 때문에 아래와 같이 처리를 하여 0 \~ 1 사이의 결과로 고정시킨다.

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnY4ZG4lCpSeJy6TjEE%2F-LnY4n-RPO_593kBhVLN%2Fimage.png?alt=media\&token=c6e9e2a7-0efc-4ead-a2f7-bdb78890aa31)

## Tag Similarity(TaS)

사용자와 문서 간의 보유한 태그 유사도를 나타내는 변수이다. 태그의 경우, 각 태그에 대한 가중치 정보를 갖고 있지 않기 때문에 다음과 같이 TaL(태그 리스트)의 교집합 값을 통해 결과를 도출한다.

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnXkEL3KYr2WD14Kwlt%2F-LnXobMm4vB1JOR47rQY%2Fimage.png?alt=media\&token=195c1616-e120-4731-a716-98b67f397e45)

## Issue Score(IS)

해당 게시물의 인기도를 나타내는 변수이다. 인기도의 지표로 사용되는 수치는 해당 단일 글의 **"좋아요" 횟수**와 **조회수**이다.

**MaxInterests** : 현재까지 모든 게시물 중, 최대 "좋아요" 수\
**MaxViews** : 현재까지 모든 게시물 중, 최대 조회수\
**Interests**: 현재 게시물의 좋아요 수\
**Views:** 현재 게시물의 조회수 \
**X:** 불확정 변수

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnXkEL3KYr2WD14Kwlt%2F-LnXqWgWvxtDQAB0DkDy%2Fimage.png?alt=media\&token=a5b6c733-27c7-4a40-b518-80596f7b0193)

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnXkEL3KYr2WD14Kwlt%2F-LnXqLDce1mHR8emPb0R%2Fimage.png?alt=media\&token=062806f8-3d1d-4663-bf35-ed0907117b25)

![](https://3577294876-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-LnXkEL3KYr2WD14Kwlt%2F-LnXqE1GeT0akUnjy8sp%2Fimage.png?alt=media\&token=feb971da-6597-4455-a580-f81179026922)

## rand(X)

뉴스피드에 지속적으로 새로운 글을 표출하기 위한 어떠한 변수에도 종속되지 않는 랜덤 변수이다.

## except(X)

관리자 혹은 시스템이 직접 뉴스피드 생성에 관여하고 접근할 수 있도록 하기 위해 존재하는 예외 변수이다. 초값은 0으로 되어 있다. 해당 변수는 다음과 같은 형태로 사용된다.

* SOOJLE 메인 공지사항
* 학사 공지를 비롯한 교내 중요사항 공지&#x20;
