# 통계 기능 설계

## 개요&#x20;

본 항목에서는 SOOJLE 서비스가 운영되는 동안 수집된 데이터를 시각화하여 사용 자에게 보여줄 통계 기능에 대하여 다룬다. 본 문서에서 다루는 내용은 통계 기능으로 표출한 대표적인 아이디어의 프로토 타이핑이며, 아이디어(즉, 통계로써 제시할 항목)는 지속적으로 갱신될 수 있다.

## 통계 기능 명세

### 사용자 접근 통계

회원/비회원을 포함하여, 해당 서비스를 이용한 방문자 수를 조회한다. 방문자 수는 시간/일/월 단위로 표시되며, 사용자가 지정한 항목에 따라 원하는 기간 사이의 값을 표출할 수 있어야 한다.

**통계 반영 조건**: 각 사용자(비회원/회원)에 대하여 모든 템플릿 페이지 호출, API 호출에 대한 사용 기록을 저장해야 한다

**통계 표출 단위:** 표출할 단위는 시간/일/월이며, 최대 한 그래프 내에서 시간(24시 간전까지), 일(7일전까지), 월(6월전까지)의 정보를 출력한다.

### 실시간&누적 인기 검색어

DB에 저장된 데이터 중, 최근에 특정 구간 내에서 모든 사용자가 검색한 키워드의 빈도수 순위를 출력한다. 해당 검색어는 띄어쓰기 단위로 구분한 Split Token만을 통해 도출한다. **토크나이저의 성능으로 봤을 때, 잘못된 형태소 분석으로 인해 전 혀 다른 결과가 출력될 수 있기 때문**이다.

**통계 반영 조건**: 각 사용자(비회원/회원)에 대하여 수행한 검색 기능 수행에 사용된 키워드를 저장한다.

**통계 표출 단위:** 가장 최근 순으로 수행된 검색 기록 중, 특정 기간만을 선정하여 해당 기간 내의 모든 키워드를 합쳐 빈도수를 계산한다.

#### **실시간 키워드 도출 알고리즘**

해당 키워드는 단순한 단일 키워드의 빈도수 계산이 아닌, 한 Set의 키워드 집합 내에서 항상 함께 나타나는 인접 단어가 존재할 경우, 해당 경우를 함께 카운트하 여야 한다.

#### Input Example

* 검색어1: IT 공모전&#x20;
* 검색어2: IT 공모전&#x20;
* 검색어3: IT&#x20;
* 검색어4: 컴퓨터 공모전

#### Output Example

* 1위 IT (빈도수:3)&#x20;
* 2위 공모전(빈도수:3)&#x20;
* 3위 IT 공모전 (빈도수:2)&#x20;
* 4위 컴퓨터 공모전 (빈도수:1)

즉, 위와 같이 IT 자체의 빈도수는 물론이고, “IT 공모전” 이라는 키워드 자체가 많 이 호출된다면 해당 키워드 set도 높은 순위를 주어야 한다는 것이다. 그러나 본래 5위로써 “컴퓨터” 키워드가 빈도수 1로써 순위에 포함되어야 하지만 상위 순위에 해당 토큰을 모두 포함하는 키워드가 존재하며, 해당 키워드가 상위의 키워드보다 빈도수가 높지 않을 경우 순위에서 제외한다.

* 누적 인기 검색어 순위 또한 위의 알고리즘과 완전히 일치하며, 특정 구간이 아

  닌, 전체 검색 단어를 대상으로 한다.
* 실시간 인기 검색어의 경우, 구간 자체를 짧게 하고 자주 백그라운드 캐싱 작업

  을 수행해야 한다.
* 누적 인기 검색어의 경우, 전체 구간을 대상으로 하므로, 최소 1주 정도의 백그

  라운드 캐싱 작업 수행한다.&#x20;

### 워드 클라우드

상단의 실시간 인기 검색어의 모든 키워드와 DB 내의 전체 포스트에 대한 Title Token, Tag, Token 정보를 모두 추합하여 전체 단어 빈도수를 통해 워드 클라우드 를 생성한다. 해당 워드 클라우드가 표출하는 각 단어의 color, size는 디자이너 자 율적으로 결정한다.

* 각 단어의 빈도수와 무관하게, "SOOJLE", "세종대학교"라는 키워드는 항상 공동 1

  위의 빈도수로 취급하여 고정시킬 것<br>
* 백그라운드 캐싱 작업은 실행 시간을 고려하여 최소 월별 단위로 진행한다.&#x20;

### Word Cloud Example

![](https://728901758-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L_Wo7SRUvbKJuPojzzZ%2F-Lv0PGSiQsiU7nNcp-_S%2F-Lv0Q30duX_Imnqb0_Ld%2Fimage.png?alt=media\&token=89453bc6-2350-4987-94bc-bbc9bb565f8e)
