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
  • 검색 알고리즘 과정
  • 검색 키워드 토큰화
  • 검색 유사도
  • 게시물 제목 유사도 측정
  • 게시물 토큰 유사도
  • 키워드 토픽 유사도

Was this helpful?

  1. 프로젝트 설계
  2. 핵심 기능 설계
  3. 검색 알고리즘 설계

검색 알고리즘 1차 설계

검색 알고리즘 과정

검색 결과를 구하는 과정은 다음과 같다.

  • 검색 키워드에 대한 분석 및 토큰화를 수행한다.

  • 검색 키워드 및 문서 간의 유사도를 측정한다.

  • 유사도 순으로 게시물을 정렬한 후, 상위 X(불확정 변수) 개를 제외하고 제거한다.

  • 검색 결과를 반환한다.

검색 키워드 토큰화

다음과 같은 과정을 통해 해당 검색어에 대한 결과를 도출한다.

  • A를 원본 검색 키워드라고 가정한다.

A = "신희재는 사과와 컴퓨터를 좋아한다"
  • A를 공백 단위로 토큰화한 값을 B로 가정한다.

B = ["신희재는", "사과와", "컴퓨터를", "좋아한다"]
  • A의 형태소를 분석하여, 명사를 선별하여 토큰화한다.

C = ["신희재", "사과", "컴퓨터"]
  • C의 토큰을 기반으로 유사도 분석을 수행한 단어 X개를 토큰 D으로 나열한다.

D = ["김희제", "배", "과일", "IT", "소프트웨어", ...]
  • B, C, D 토큰에 대하여 각각 리스트 내에서 중복된 토큰을 제거한다.

B, C, D = Unique(B), Unique(C), Unique(D)

검색 키워드로 산출된 3가지 종류의 토큰(B, C, D)를 통하여 각 게시물에 대한 검색 키워드 유사도 점수를 측정한다.

검색 유사도

각 게시물에 대한 검색 키워드 간 유사도를 측정하는 공식은 다음과 같다. (X는 불확정 변수)

각 Score 변수는 아래와 같은 사항을 고려하여 게시물에 대한 검색 키워드 관련 유사도를 판별한다.

게시물 제목 유사도 측정

게시물의 제목을 공백 단위로 구분한 토큰(T라 가정)과 B 토큰을 비교하여 유사도를 측정한다. 유사도를 측정하는 공식은 다음과 같다.

B의 토큰이 각각 T의 토큰 내에 포함되는지 검사한다. B의 i번째 토큰(B[i])이 T 내에 존재할 경우, T 내에 존재하는 B[i] 토큰의 빈도수를 곱하여 스코어에 가산한다.

게시물 토큰 유사도

게시물 토큰 유사도 또한 위의 제목 유사도와 기본 원리는 똑같다. 게시물의 전체 내용에서 명사들만 추출한 토큰(P라 가정)과 C, D 토큰을 비교하여 각각의 유사도 스코어를 측정한다. (위와 마찬가지로 각 키워드 토큰의 총 길이를 n으로 가정)

검색 키워드 토큰 유사도

유사 키워드 토큰 유사도

키워드 토픽 유사도

해당 검색 키워드 C의 LDA Topic를 예측하여, 각 게시물과의 토픽 유사도를 다음과 같이 측정한다.

CT = C의 LDA Topic 중 가장 높은 비율의 토픽이거나 , 가장 높지 않더라도 40% 이상을 차지할 경우의 토픽들로 이루어진 집합

ex) CT = {7,2,..}

DT = 마찬가지로 각 문서의 LDA Topic 중 가장 높은 비율의 토픽이거나 , 가장 높지 않더라도 40% 이상을 차지할 경우의 토픽들로 이루어진 집합

ex) DT = {2,4,..}

다음 두 집합에 대한 교집합의 요소 갯수를 스코어로 가산한다.

Previous검색 알고리즘 설계Next검색 알고리즘 1차 개선안

Last updated 5 years ago

Was this helpful?