Skip to content

2unju/Doc_Recommendation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Document Recommendation system


Prerequisites

  • python 3.8+
  • sklearn
  • selenium, bs4
  • pandas, numpy
  • django
  • PostgreSQL
  • konlpy

개요

  • NLP(konlpy), 코사인 유사도를 기반으로 한 문서 유사도 검색 프로그램
  • 단어 수준의 방법론 이용

TF-IDF (Term Frequency-Inverse Document Frequency)

단어의 빈도와 역 문서 빈도(문서의 빈도에 특정 식을 취함)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치 배정. 주로 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내에서 특정 단어의 중요도를 구하는 작업 등에 사용됨.

Cosine Similarity

다운로드

어떤 차원 공간내에 분포된 데이터에 대하여 인근에 위치한 데이터들끼리의 군집화(Clustering)를 시행할 때 이용되는 방법 중 하나.

konlpy

한국어는 영어와 달리 '어근+어미' 형태, '명사+조사' 형태 등 단순 띄어쓰기로는 품사를 구분할 수 없는 경우가 많기에 영어와는 다른 독자적 자연어처리 패키지를 필요로 한다. 이를 위한 패키지 중에서도 꼬꼬마, 한나눔, MeCab-ko 등 국내외에서 개발된 여러 형태소 분석기를 포함하고 있는 한국어 정보처리 패키지인 konlpy를 사용하였다.

References

https://wikidocs.net/92961
https://wikidocs.net/31698
https://wikidocs.net/21698
https://ratsgo.github.io/from%20frequency%20to%20semantics/2017/04/20/docsim/

Work

캡처

  • 웹에서 데이터를 받아와 DB에 저장(default: daum news, 1000 documents)
  • Django 서버 실행
  • Document Recommendation, Search, Top Ranking Word 기능 제공
  • Document Recommendation 기능 최초 실행시, 크롤링한 모든 데이터의 단어(okt.nouns)를 담은 json 파일 생성
  • 크롤링할 웹사이트/문서 주제 선택/tokenizer 선택 기능 제공(미구현)

Demo

  • 크롤링 데이터가 저장된 DB ; PostgreSQL, paAdmin4

  • 메인 페이지 ; index, back/next, search

  • Search ERROR: 정상적인 출력 중간에 튀는 값 발생(유사 문서 추천도 동일/같은 문서가 여러번 출력되는 것은 정상. 크롤링한 사이트인 daum news/ranking 카테고리가 일자별로 뉴스를 분류할 때 중복된 뉴스도 넣어놓기 때문) 크롤링으로 가져온 값을 PostgreSQL에 저장하는 과정에서 PRIMARY KEY의 값이 (SERIAL 설정에도 불구하고) 중간중간 튀어있는 것이 관찰됨. SERIAL KEY 오류의 원인은 찾지 못함. CSV 입출력 형식으로 변경할 예정.

  • 모든 단어에 대한 VOCA 출력 예시

About

nlp lab project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published