- 여러 기술을 배우고 적용해보는 것을 좋아합니다
- 설계가 가장 중요하다고 생각합니다
- 프론트엔드 외에도 많은 분야를 경험해 다른 분야 개발자와의 원활한 소통이 가능합니다
bebusl / industrial-project Goto Github PK
View Code? Open in Web Editor NEW키워드 기반 도서 추천 서비스 키북키북
License: MIT License
키워드 기반 도서 추천 서비스 키북키북
License: MIT License
서버 : 이진희
모델 : 윤정환
앱 : 이정은
각자 맡은 부분에 대한 진행사항을 매주 알려주세요!
이번주에 한 부분, 다음주 계획 적어주시면 될 것 같습니다.
도서 추천 모델을 만들기 위한 데이터만 수집을 했었음
진행할 사항
train가 test 비율을 7:3으로 두고 학습하여 다양한 형태의 Layer로 성능 평가를 할 예정
진행해야 할 항목
celery worker pool옵션을 default값으로 두었을 때 윈도우에서 제대로 동작하지 않는 문제가 있다.
pool옵션을 single 혹은 threads로 실행해주어야한다. (병렬처리할 것이므로 실제 동작시 threads모드로 실행. 테스트시에는 single옵션을 사용하였음)
또한 concurrency옵션을 통해 워커의 개수
Q옵션을 이용해 queue를 설정할 수 있으므로 참조.
현재 키워드 벡터와 사용자가 선택한 키워드 벡터간의 코사인 유사도를 통해 랭킹을 매겼음.
원래 선택 키워드에 관해 가중치를 곱해서 우선순위를 랭킹에 반영하려고 했으나
단순 값 조정으로는 우선순위를 정상적으로 반영하기 힘듦.
우선순위 반영 방법을 좀 더 생각해봐야 할 것 같음.
긍/부정 키워드 추출 모델의 외래어 처리 이슈
2021.09.27
가능하다면 모든 서적을 수집하고 싶지만 학습시 메모리 부족으로 인해 총 서적 수는 30만권 미만으로 잡아야 할 것 같습니다.
카테고리 별로 어느 정도의 서적을 수집하는 것이 좋을지 정해야 합니다.
모델 구체화에 대한 정보
- 서비스에 적용할 모델.
(만약 모델이 없을 시 모델 제작에 필요한 데이터와 제작방법.)
- 필요한 데이터 , 사용할 테이터
(만약 데이터가 없을 시 가공해야 할 데이터 위치나 주소, 형식.)
api 설계 전 필요한 api 리스트 정리.
서 론
1.1 문서 목적 및 범위
1.2 대상 시스템 개요
1.2.1 대상 시스템 정의
해당 시스템, 연관 키워드 기반 도서 추천 서비스는 사용자의 기분과 취향 등을 나타내는 키워드에 밀접하게 연관된 도서를 추천해주는 안드로이드 기반 앱이다.
1.2.2 주요 기능 설명
1)사용자에게 입력받은 키워드를 이용하여 도서를 추천한다.
사용자에게 원하는 장르나 취향의 키워드를 입력하게한다. 입력된 키워드는 TF-IDF를 이용해 유사한 키워드를 추출하고 본 키워드와 데이터 베이스에 저장해놓은 정보를 비교하여 연관성이 높은 도서를 사용자에게 추천한다.
2)사용자는 입력한 키워드와 연관있는 키워드들의 선호도를 체크할 수 있다.
입력한 키워드의 유사 키워드를 추출하였을 때, 사용자의 의도와 맞지 않은 키워드가 선별될 수 있으므로 사용자가 선호 키워드를 직접 선택할 수 있게하여 추천 서비스의 정확도와 만족감을 높인다.
기능적 요구사항
2-1 도서 추천 서비스 이용 관련 기능 - WF
WF1. 사용자 관리 기능
WF1.1. 회원가입
WF1.1.1. 사용자는 회원가입 시 정보(아이디, 비밀번호, 닉네임 등)를 입력해야 한다.
WF1.1.2. 사용자는 기존 사용자와 중복되는 아이디를 사용할 수 없다.
WF1.2. 로그인
WF1.2.1. 사용자는 회원가입 시 등록한 아이디와 비밀번호로 로그인할 수 있다.
WF1.2.2. 사용자는 비밀번호 분실 시 본인 확인 후 비밀번호를 변경할 수 있다.
WF1.3. 마이페이지
WF1.3.1. 사용자는 이전 키워드 검색 기록을 확인할 수 있다.
WF1.3.2. 사용자는 찜한 도서 목록을 확인할 수 있다.
WF2. 키워드를 이용한 도서 추천 기능
WF2.1. 키워드 검색
WF2.1.1. 연관 키워드 선호도 선택
WF2.1.1.1. 사용자는 본인이 입력한 키워드와 유사한 키워드를 확인할 수 있다.
WF2.1.1.2. 사용자는 시스템이 제공한 유사한 키워드 중 본인의 의도와 가까운 키워드(선호 키워드)를 추가로 선택할 수 있다.
WF2.2. 추천 도서 목록 확인
WF2.2.1. 사용자는 본인이 입력,선택한 키워드와 유사한 도서를 추천받을 수 있다.
WF2.2.2. 도서 찜하기
WF2.2.2.1. 사용자는 추천 도서 목록에서 마음에 드는 도서를 찜할 수 있다
WF2.2.2.2. 찜한 도서는 사용자 개인의 마이페이지에서 확인할 수 있다.
2-2 사용자 데이터 분석 기능 - UF
UF1. 시스템은 수집한 도서의 키워드 데이터를 TF-IDF모델을 이용하여 메트릭스를 만들고 사용자에게 입력받은 키워드를 TF-IDF에 넣고 유사 키워드를 추출한다.
UF2. 시스템은 TF-IDF에서 추출된 키워드와 연관성이 높은 도서를 찾고, E2E ASBA모델을 이용해 책의 리뷰의 키워드와 선호도를 분석하여 반환하여 제공한다.
UF3. 사용자는 제공된 유사 키워드의 선호도를 선택하고 선호도에따라 필터링한 도서들에 우선순위를 매긴 후 추천 도서 목록을 제공한다.
비기능적 요구사항
3-1 운영 환경에 대한 요구사항 - OR
OR1. 시스템은 안드로이드 운영체제에서 동작해야 한다.
3-2 성능 요구사항 - PR
PR1. 시스템이 제공하는 도서 권수는 최소 20,000권으로 한다.
3-3 보안 요구사항 - SR
SR1. 회원의 개인정보는 암호화한다.
3-4 문화 및 정책적 요구사항 - CR
CR1. 시스템의 출력은 한국어를 사용하여 출력되어야 한다.
CR2. 시스템의 시간은 한국 표준시(KST)를 따른다.
우리 프로젝트의 요구사항 정의서 초안 일부입니다.
굵은 글씨로 표시한 사용자 관리 기능(찜기능)이 추천 서비스 제공에 필요한 부분인지,
성능 요구사항의 시스템이 제공하는 도서의 정보량의 최소값이 적절한지 이야기하고싶습니다.
또한 추가하거나 수정해야하는 프로젝트의 요구사항도 말해주세요!
명사만 사용하기 때문에 위의 불용어 리스트는 의미가 없을 것 같다.
api 서버에서 사용하는 db 설계입니다.
학습 데이터
수집 데이터
수집 후 저장은 CSV 파일의 형태로 할 예정
저희가 이번 솔루션을 진행하게 되면 크게 나누었을 때 최종 결과물로 아래와 같은 프로젝트들이 나옵니다.
이를 루트에서 모두 관리하는 것을 불편하다고 생각이 들기 때문에 분리를 하기 좋은 방법을 정하고 싶습니다.
제가 생각한 방법은 아래와 같습니다. 다른 방안이 있다면 편하게 올려주세요!
리뷰에서 긍/부정 키워드를 추출하여 책의 장/단점을 한번에 보여주고 싶었으나 아래와 같이 리뷰가 별로 좋지 않은 경우가 많음
진행해야 할 항목
주제
모델
교수님 예시 ) 넷플릭스
추천 영상에 대해 좋아요/쏘쏘/싫어요로 평가하게 함 -> 그 수치에 기반해 얼마나 잘 추천됐는지 평가
유사한 타 서비스와 비교가 가능하면 더 좋음.
-발표 시 어떤 모델을 사용하는지 구체적 설명하지말고, 모델 이름만 말하라고 하셨음.
어떤 방식으로 평가하면 좋을지 의견 공유해주세요
성인 인증 필요 서적 데이터 수집시 예외 발생
전처리 단계
출력할때마다 초기화 하기위해 clear()함수 만들어서 초기화 하였습니다.
본인이 익숙한 언어와 그동안 해본 프로젝트(했던 역할포함)의 간략한 설명과 원하는 역할을 적어주세요!
알라딘에서 서적 데이터를 수집할 때 아래와 같은 EndPoint로 접근하여 크롤링을 할 예정입니다.
리뷰가 많은 도서가 나오면서 이 프로젝트가 의미 있다는 것을 잘 보여줄 검색어를 찾아야 합니다.
키워드 기반 서적 추천
기반 모델: E2E-ABSA
아키텍처
학습 데이터
기술 스택
사용법
실행 후 Select File로 수집된 리뷰 문서를 열어주면 토큰화된 문장이 하나씩 출력됩니다.
긍/부정 키워드에 해당하는 토큰을 왼쪽 마우스 버튼으로 클릭시 긍정/부정/중립 으로 상태가 변합니다.
키워드가 없을경우 Skip을 누르고 선택이 완료된 경우에는 Next를 누르면 됩니다.
작업을 완료 후에는 Save를 누르면 됩니다.
celery node를 client로 사용시 rpc를 backend로 사용하지 못함.
-mongodb
-redis
-amqp
중에 적합한 backend를 설정할 예정
산학 프로젝트 주제 선정을 위한 의견 공유
생각 중인 해결 방안
학습 데이터
데이터 수집 목적
각자 맡은 부분에 대한 진행 사항을 알려주세요!
이번 주에 한 부분, 다음 주 계획 적어주시면 될 것 같습니다.
이정은
윤정환
이진희
수집기 속도 느린 원인
해결 방안
해결 방안의 어려운 점
수집해야 할 데이터가 바뀔 수도 있고 많아지거나 적어질 수 도 있는데, 이 때마다 수집을 새로해야 하기 때문에 수집기의 속도를 올려야 합니다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.