SOOJLE
수즐 커뮤니티
수즐 커뮤니티
  • SOOJLE Document
  • 프로젝트 요약
  • Untitled
  • 프로젝트 개요
    • 프로젝트 소개
    • 추진 배경 및 필요성
    • 프로젝트 내용
      • 기능적 요구사항
      • 비기능적 요구사항
    • 개발환경 및 팀 구성
    • 워크플로우
      • 계획 수립 & 설계
      • 데이터 수집 및 정규화
      • 인공지능 개발
      • 서비스 모듈 개발
      • 성능 평가 및 보고
    • 프로젝트 예산 내역
  • 사전조사 & 의사결정
    • 사전조사
      • 재학생 대상 사전조사
      • 수집 URL 대상 목록
        • 세종대학교 직할
        • 세종대학교 학과
        • 공식 공지사항
        • 세종대 평생교육원
        • 외부 웹사이트
      • 학습 모델 사전조사
        • LSA - 잠재 의미 분석
        • LDA - 잠재 디리클레 할당
        • Word2Vec - 워드투벡터
        • FastText - 패스트텍스트
    • 의사결정
      • 사용자 인증 방식 의사결정
      • 데이터베이스 의사결정
        • MySQL vs MongoDB 성능 분석
      • 토픽별 의사결정
      • 부가 기능 의사 결정
  • 프로젝트 설계
    • 시스템 구조 설계
    • 핵심 기능 설계
      • 데이터 크롤러 설계
      • 게시물 토픽 정의 및 분류
      • 사용자 관심분야 측정
      • 뉴스피드 설계
        • 사용자-문서 유사도(Recommendation Score)
        • FaS (관심 분야 및 유사도 측정 - 추가)
        • 토픽 뉴스피드 목록
      • 검색 알고리즘 설계
        • 검색 알고리즘 1차 설계
        • 검색 알고리즘 1차 개선안
        • 검색 알고리즘 2차 설계
    • 요구사항 목록
      • DB 요구사항
      • 기능 요구사항
      • 품질 요구사항
      • 관리 요구사항
  • DB
    • 구조 설계
    • 테이블 명세
  • 데이터 크롤러
    • 데이터 크롤러 개요
    • 크롤링 URL 선정
    • 크롤러 구현을 위한 사전조사
    • 크롤러 개발 과정
      • 크롤러 프로그램 설계
      • 크롤러 규격화
      • 크롤러 정규화
      • 데이터 정제 과정
      • 에러 핸들러 구현
      • 배포 환경 이식을 위한 Porting
    • Issue & Exception
    • 결과 보고
  • 인공지능 개발
    • 인공지능 개발 개요
    • NLP 스터디
      • Bag of Words(BoW)
      • Document Term Matrix(DTM)
      • TF-IDF(Term Frequency-Inverse Document Frequency)
      • 문서 유사도(Document Similarity)
    • 데이터 전처리 과정
    • 개발 과정
      • 토크나이저 구현
      • LDA 모델 학습 및 구현
    • LDA 학습 모델링
      • 1차 파라미터 튜닝 결과 (NUM_TOPICS)
      • 2차 파라미터 튜닝 결과 (NUM_TOPICS)
      • 3차 파라미터 튜닝 결과 (NUM_TOPICS)
      • NUM_TOPICS 파라미터 의사결정
      • 4차 파라미터 튜닝 결과 (PASESS, ITERATION)
      • 최종 학습 모델 명세
    • Word2Vec(FastText) 학습 모델링
    • Issue & Exception
    • 성능 분석 결과
  • BackEnd
    • 서버 구축 및 배포
      • SOOJLE 서버 구조
      • 상용 서버 (UWSGI + NGINX) 구축
      • HTTPS 서버 구현
    • API 문서 개요
    • API 목록
      • Analysis
      • Auth API
      • Newsfeed API
      • Post API
      • Search API
      • Admin API
    • 세종 Auth API
    • 통계 기능 설계
    • Issue & Exception
    • 성능 분석 결과
  • FRONTEND
    • 프론트엔드 설계 개요
    • 디자인 설계 의사결정
      • 디자인 컨셉 및 기능 정의
      • 컴포넌트 디자인
      • Logo Variation
    • 화면 흐름도
    • 페이지 UI 명세
      • Main Page
      • Header
      • Footer
      • Mobile Control Bar
      • Login Page
      • Timeline Page
      • Menu Page
      • Hyperlink Icons Page
      • Search Component & Mobile Search Modal
      • Search Page
      • Post Block
      • Snackbar
  • 프로그램 배포
    • 프로그램 개요
    • 시스템 아키텍쳐
    • 주요 기능 및 명세
    • 프로그램 테스트
    • 구현 결과물 배포
  • 마무리
    • References
  • SOOJLE AI
  • SEJONG AUTH
  • IML Tokenizer
  • SOOJLE Crawler
  • SOOJLE Frontend
  • SOOJLE Backend
Powered by GitBook
On this page
  • 개요
  • 데이터 포맷
  • LDA Topic Format
  • Tag Format
  • 사용자-문서 유사도
  • Topic Similarity(ToS)
  • Tag Similarity(TaS)
  • Issue Score(IS)
  • rand(X)
  • except(X)

Was this helpful?

  1. 프로젝트 설계
  2. 핵심 기능 설계
  3. 뉴스피드 설계

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

개요

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

데이터 포맷

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

LDA Topic Format

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

Tag Format

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

사용자-문서 유사도

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

Topic Similarity(ToS)

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

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

Tag Similarity(TaS)

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

Issue Score(IS)

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

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

rand(X)

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

except(X)

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

  • SOOJLE 메인 공지사항

  • 학사 공지를 비롯한 교내 중요사항 공지

Previous뉴스피드 설계NextFaS (관심 분야 및 유사도 측정 - 추가)

Last updated 5 years ago

Was this helpful?