SOOJLE
1.0.0
1.0.0
  • SOOJLE Document
  • 프로젝트 요약
  • 프로젝트 개요
    • 프로젝트 소개
    • 추진 배경 및 필요성
    • 프로젝트 내용
      • 기능적 요구사항
      • 비기능적 요구사항
    • 개발환경 및 팀 구성
    • 워크플로우
      • 계획 수립 & 설계
      • 데이터 수집 및 정규화
      • 인공지능 개발
      • 서비스 모듈 개발
      • 성능 평가 및 보고
    • 프로젝트 예산 내역
  • 사전조사 & 의사결정
    • 사전조사
      • 재학생 대상 사전조사
      • 수집 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 토픽
  • Rule Based Tag
  • 결론

Was this helpful?

  1. 프로젝트 설계
  2. 핵심 기능 설계

게시물 토픽 정의 및 분류

개요

크롤러에 의해 수집된 문서에 대하여 토픽을 정의해야 한다. 문서의 토픽을 결정하기 위해 LDA 알고리즘을 사용하며, 추천 시스템의 성능을 높이기 위하여 Rule Based 기반으로 해당 문서를 수집한 게시판의 본래 목적 등을 토대로 일정 부분 기여하도록 한다.

LDA 토픽

LDA는 학습된 문서 내의 단어 빈도수 통계를 기반으로 해당 문서에 지정된 복수의 토픽을 예측한다. 예를 들어 아래와 같은 토픽 목록을 LDA가 학습을 통해 도출했다고 가정한다.

(0, '0.015*"drive" + 0.014*"thanks" + 0.012*"card" + 0.012*"system"')
(1, '0.009*"back" + 0.009*"like" + 0.009*"time" + 0.008*"went"')
(2, '0.012*"colorado" + 0.010*"david" + 0.006*"decenso" + 0.005*"tyre"')
(3, '0.020*"number" + 0.018*"wire" + 0.013*"bits" + 0.013*"filename"')
(4, '0.038*"space" + 0.013*"nasa" + 0.011*"research" + 0.010*"medical"')
(5, '0.014*"price" + 0.010*"sale" + 0.009*"good" + 0.008*"shipping"')
(6, '0.012*"available" + 0.009*"file" + 0.009*"information" + 0.008*"version"')
(7, '0.021*"would" + 0.013*"think" + 0.012*"people" + 0.011*"like"')
...(생략)

각 토픽은 위와 같이 각 단어에 따라 해당 문서의 토픽 분류에 기여하고 있는 수치를 나타내고 있다. 다음과 같이 정의된 모델에서 특정 문서를 입력 값으로 넣었을 경우, 아래와 같은 분석 결과를 확인할 수 있다.

해당 문서의 topic 비율은 [
(7, 0.3050222), (9, 0.5070568), (11, 0.1319604), (18, 0.042834017)
]

모델은 위의 문서가 7, 9, 11, 18번 토픽과 관련이 있으며 그중에서도 9번 토픽이 양 50%의 비중을 차지하고 있다고 예측을 내린 것이다.

단, 해당 알고리즘은 문서 내의 단어의 빈도 수에 따라 토픽을 결정하기 때문에 학습되지 못한 단어나 매우 복잡한 토픽을 다루는 문서에 대하여 성능이 떨어지는 단점이 존재한다.

Rule Based Tag

문서의 크롤링을 수행하는 도중에 얻을 수 있는 정보를 토대로 정적으로 주제 분류를 도출해낼 수 있다. 대표적으로 아래와 같은 경우가 있다.

  • 해당 문서는 어떤 사이트의 어떤 게시판에서 수집된 것인가

  • 해당 문서의 제목에는 보편적으로 특정 토픽을 가리키는 단어가 포함되어 있는

예를 들어 학생경력개발 시스템 사이트의 채용 공고 게시판에서 문서를 수집할 경우, "경력"이라는 단어가 제목에 포함되어 있을 경우, "경력" 태그를 추가하는 방식이다.

{"title" : "[장학공지] 2019-2 국가장학금 및 에델바이스 추가 신청안내", 
"author" : "14141414", "date" : 1566367860, "post" : 
"도 2학기 국가장학금 및 에델바이스 신청안내2019학년도 2학기 국가장학금 신
청이 아래와 같이 진행될 예정이오니, 재학예정인 학생(대학원생, 글로벌지식교육원 제외)은 
반드시 신청하시기 바랍니다. - 아   래 -1) 소득분위별 장학금액 ※ 국가장학금 신청 시, 
국가Ⅰ유형 및 국가Ⅱ유형, 에델바이스Ⅱ 장학금 통합신청 구 분국가Ⅰ유형국
가Ⅰ다자녀구 분국가Ⅱ유형에델바이스Ⅱ0...", 

# 정적 분석 태깅 결과
"tag" : ["장학", "공지", "세종대역"] }

이러한 정적 분석 방식은 조건에 충족될 경우, 높은 확률로 정확한 토픽 선정이 가능하지만 모든 경우의 수 중, 일부분 만을 반영하지 못한다는 단점이 존재한다.

결론

각 토픽 분류 방법에 대하여 서로의 단점을 보완하기 위해 두가지 방법을 병행하여 토픽 분류를 수행하기로 한다.

Previous데이터 크롤러 설계Next사용자 관심분야 측정

Last updated 5 years ago

Was this helpful?