Code Monkey home page Code Monkey logo

industrial-project's Introduction

header

😄 안녕하세요 이진희입니다

  • 여러 기술을 배우고 적용해보는 것을 좋아합니다
  • 설계가 가장 중요하다고 생각합니다
  • 프론트엔드 외에도 많은 분야를 경험해 다른 분야 개발자와의 원활한 소통이 가능합니다

💬 깃허브 스탯

bebusl's Github Stats

🌱 주로 쓰는 기술

JavaScript TypeScript React Redux GraphQL styled-component

industrial-project's People

Contributors

bebusl avatar dungbik avatar leejeongeun0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

industrial-project's Issues

6주차 프로젝트 진행사항 공유

서버 : 이진희
모델 : 윤정환
앱 : 이정은

각자 맡은 부분에 대한 진행사항을 매주 알려주세요!
이번주에 한 부분, 다음주 계획 적어주시면 될 것 같습니다.

app

  • 앱 개발에 사용할 프로그램
  • 앱 구성에 대해 작성
  • 페이지 상세 구조

도서 데이터 수집

도서 추천 모델을 만들기 위한 데이터만 수집을 했었음

  • 작가
  • 가격

등 도서 데이터를 수집하여 db를 만들어야 함

데모용 플러터 앱

진행할 사항

  • 도서 검색
  • 리뷰에서 추출된 키워드 출력
  • 추출된 키워드 우선순위 적용하여 선택
  • 최종적으로 추천된 도서 목록 출력
  • 각 도서의 세부 정보 출력

키워드 기반 서적 추천 모델 학습

학습 데이터 생성

  1. 카테고리별 서적 데이터 수집 (제목, 소개, 목차)
  2. 서적 데이터 병합 (중복 서적 제거)
  3. 학습을 위해 데이터 전처리 (제목, 소개, 목차 에서 명사만 추출)

모델 학습

  1. 생성된 학습 데이터를 읽어옴
  2. TF-IDF 점수를 계산하여 매트릭스 생성

랭킹 알고리즘 로직

생각해야 할 것

  • 부정의 리뷰도 반영되게 공식이 구성되어야 함
  • 유의미한 결과가 나와야 함

책 추천 모델 데이터 생성

진행해야 할 항목

  1. 카테고리 별로 정해진 수의 서적 데이터 수집
  2. 중복 서적 제거 후 병합
  3. 병합된 서적 데이터 전처리 (핵심 키워드 추출)

window에서의 celery 에러

celery worker pool옵션을 default값으로 두었을 때 윈도우에서 제대로 동작하지 않는 문제가 있다.
pool옵션을 single 혹은 threads로 실행해주어야한다. (병렬처리할 것이므로 실제 동작시 threads모드로 실행. 테스트시에는 single옵션을 사용하였음)

또한 concurrency옵션을 통해 워커의 개수
Q옵션을 이용해 queue를 설정할 수 있으므로 참조.

추천 알고리즘 우선순위 적용 문제

현재 키워드 벡터와 사용자가 선택한 키워드 벡터간의 코사인 유사도를 통해 랭킹을 매겼음.

원래 선택 키워드에 관해 가중치를 곱해서 우선순위를 랭킹에 반영하려고 했으나
단순 값 조정으로는 우선순위를 정상적으로 반영하기 힘듦.

우선순위 반영 방법을 좀 더 생각해봐야 할 것 같음.

멘토링 내용 정리

1차 멘토링

긍/부정 키워드 추출 모델의 외래어 처리 이슈

  • 딥러닝 모델이 아닌 심플하게 모델 작성
  • 외래어 처리를 잘하는 pretrained model을 사용

2021.09.27

수집할 서적의 수 결정

카테고리 별로 1만권 씩 수집하여 전 처리 후 모델에 학습을 진행

  • 27만권 -> 23만권
    • 중복되는 서적 제거
  • numpy에서 메모리 부족 오류 발생
    • 중복되는 단어를 제거하여 배열의 크기를 줄여 해결
  • 만든 모델 로딩 시간: 약 24초
  • 결과 반환 시간: 약 0.3초

가능하다면 모든 서적을 수집하고 싶지만 학습시 메모리 부족으로 인해 총 서적 수는 30만권 미만으로 잡아야 할 것 같습니다.
카테고리 별로 어느 정도의 서적을 수집하는 것이 좋을지 정해야 합니다.

모델 설계

모델 구체화에 대한 정보

- 서비스에 적용할 모델.
(만약 모델이 없을 시 모델 제작에 필요한 데이터와 제작방법.)
- 필요한 데이터 , 사용할 테이터
(만약 데이터가 없을 시 가공해야 할 데이터 위치나 주소, 형식.)

필요한 api 정리

api 설계 전 필요한 api 리스트 정리.

  • app 작성자는 누락된 api가 있다면 코멘트를 달아주세요.

프로그램 개발 방향 (요구사항 정의서)

  1. 서 론
    1.1 문서 목적 및 범위
    1.2 대상 시스템 개요
    1.2.1 대상 시스템 정의
    해당 시스템, 연관 키워드 기반 도서 추천 서비스는 사용자의 기분과 취향 등을 나타내는 키워드에 밀접하게 연관된 도서를 추천해주는 안드로이드 기반 앱이다.
    1.2.2 주요 기능 설명
    1)사용자에게 입력받은 키워드를 이용하여 도서를 추천한다.
    사용자에게 원하는 장르나 취향의 키워드를 입력하게한다. 입력된 키워드는 TF-IDF를 이용해 유사한 키워드를 추출하고 본 키워드와 데이터 베이스에 저장해놓은 정보를 비교하여 연관성이 높은 도서를 사용자에게 추천한다.
    2)사용자는 입력한 키워드와 연관있는 키워드들의 선호도를 체크할 수 있다.
    입력한 키워드의 유사 키워드를 추출하였을 때, 사용자의 의도와 맞지 않은 키워드가 선별될 수 있으므로 사용자가 선호 키워드를 직접 선택할 수 있게하여 추천 서비스의 정확도와 만족감을 높인다.

  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. 비기능적 요구사항
    3-1 운영 환경에 대한 요구사항 - OR
    OR1. 시스템은 안드로이드 운영체제에서 동작해야 한다.
    3-2 성능 요구사항 - PR
    PR1. 시스템이 제공하는 도서 권수는 최소 20,000권으로 한다.
    3-3 보안 요구사항 - SR
    SR1. 회원의 개인정보는 암호화한다.
    3-4 문화 및 정책적 요구사항 - CR
    CR1. 시스템의 출력은 한국어를 사용하여 출력되어야 한다.
    CR2. 시스템의 시간은 한국 표준시(KST)를 따른다.

우리 프로젝트의 요구사항 정의서 초안 일부입니다.
굵은 글씨로 표시한 사용자 관리 기능(찜기능)이 추천 서비스 제공에 필요한 부분인지,
성능 요구사항의 시스템이 제공하는 도서의 정보량의 최소값이 적절한지 이야기하고싶습니다.
또한 추가하거나 수정해야하는 프로젝트의 요구사항도 말해주세요!

서적 추천 모델 데이터 병합

카테고리 별로 수집된 서적 데이터를 하나의 파일로 병합

  • 카테고리 별로 중복되는 서적 데이터가 존재
    • ISBN or ItemId or Title 로 중복 제거 필요
  • dataset이란 폴더 내에 서적 데이터 csv 파일를 넣고, output 폴더 내에 병합된 파일이 생성되게 할 예정

서적 추천 모델 데이터 전처리

전처리 단계

  • "작가의 말", "더 보기", "닫기" 등과 같은 서적과 상관없는 부분 제거
  • 한글을 제외한 나머지 요소 제거
  • 핵심 키워드 추출
    • 품사 태깅을 통해 명사만 남길 예정
    • Komoran, Okt, Kkma 중에 하나를 택하여 사용 예정
  • 불용어 제거

명사만 사용하기 때문에 위의 불용어 리스트는 의미가 없을 것 같다.

DB 설계

api 서버에서 사용하는 db 설계입니다.

분산처리 로직

  • 사용자가 책 제목 혹은 키워드를 검색
  • api서버에 책 제목/키워드 중 무엇으로 검색했는지와 검색어를 함께 파라미터로 보냄
  • api요청을 받으면 메시지 큐에 메시지 발행 -> 이 때 메시지 큐에서 처리할 것은 1.유사 도서 추출/2.리뷰 크롤링/3.키워드 추출 및 감성분석
  • 1+2는 한 태스크에서 실행할 것이고, 3은 별도의 태스크 생성하여 사용(키워드 추출 및 감성분석이 자원을 많이 소모하므로. .워커도 1+2에 비해 많이 둘 것임.), 즉 1+2, 3의 큐도 별도로 생성하여 사용할 예정.
  • 1+2의 태스크가 완료가 되면 키워드 추출/감성분석 된 리뷰가 결과로 오게 되고, 완료되었을 때 리뷰를 리뷰개수/worker개수 개로 나누어서 서브 태스크 만들어서 큐에 넣고 동시에 워커 돌릴 예정.

프로젝트 관리 방법

저희가 이번 솔루션을 진행하게 되면 크게 나누었을 때 최종 결과물로 아래와 같은 프로젝트들이 나옵니다.

  • Android App
  • API Server
  • Model Server

이를 루트에서 모두 관리하는 것을 불편하다고 생각이 들기 때문에 분리를 하기 좋은 방법을 정하고 싶습니다.
제가 생각한 방법은 아래와 같습니다. 다른 방안이 있다면 편하게 올려주세요!

  1. 프로젝트 별로 레포를 파서 Submodule로 연결
  2. 폴더로 한번 래핑해서 코드를 작성하고 브랜치로 구분

리뷰에서 책의 장/단점이 적혀있는 경우가 적음

리뷰에서 긍/부정 키워드를 추출하여 책의 장/단점을 한번에 보여주고 싶었으나 아래와 같이 리뷰가 별로 좋지 않은 경우가 많음

  • 【거대한 가속】-포스트 코로나 시대,우리 앞에 다가온 역사의 변곡점_스콧 갤러웨이/리더스북1.팬데믹은 많은 것을 바꿔놓았다.자연과 사람들 간의 흐름은 완만해졌고,사회에 존재하고 있던 여러 역학적 관계는 가속화되었다.흔히 하는 말들 중에 위기를 기회로 삼자는 말이 있다.위기가 크고 파괴적일수록 기회 또한 커진다고 한다.과연 그럴까?게임에 참여해도 할까?2.이 책의 저자 스콧 갤러웨이는 미국 비즈니스계에서 브랜드 전략과 트렌드 예측에 가장 정통한 전문가이자 실리콘밸리 창업자들이 두려워하는 분석가로 소개된다.그의 분석이 날카롭고 정확하다는 평가를 받고 있다고 느껴진다.3.저자는 이 책에서‘코로나 바이러스와 도태되는 기업’, ‘더욱 강력해진 플랫폼 제국의 미래’, ‘또 다른 시장 교란자들’, ‘지각변동을 앞둔 고등교육’그리고‘팬데믹이 우리에게 남긴 것들’등을 이야기한다.4.‘강한 자가 훨씬 더 강해지고 있다’는 분석은 참으로 씁쓸하다. ‘약한 자는 더욱 약해진다’로 들린다.저자는 코로나 위기에서 가장 놀라운 사실 중 하나가 미국 내‘자본시장의 회복력’이라고 한다.주요 시장지표들이 잠시 급락하긴 했지만 금세 제자리를 찾았다는 이야기다.코로나로2020년 여름까지18만 명이 넘는 미국인이 사망했고 실업률이 기록적으로 치솟았으며 바이러스는 쇠퇴할 기미가 전혀 보이지 않았음에도 주가는 하락 폭을 대부분 회복했다.이 현상을 어떻게 이해해야할까?팬데믹 국면에서 언론이 거대IT기업이나 대형주 지수 같은 화려한 쪽에 정신이 팔린 동안 한쪽에선 무자비한 집단 도태가 진행되고 있었다.저자의 표현을 빌리면 약자는 그냥 뒤처지는 정도가 아니라 잔인하게 학살당한다.코로나 이후 파산한 기업들의 명단은 길고도 충격적이다.돈이 한쪽으로 급 쏠림하고 있다.5.저자는 추상적인 추측을 늘어놓지 않고,구체적인 수치를 제시하며 이야기를 풀어나간다. ‘사업’이라는 렌즈를 통해 세상을 바라본다.팬데믹으로 기업 환경은 어떻게 재편될 것인가가 이 책의 주제다.저자가 기업에만 초점을 맞춘 것이 아니라‘고등교육’에 한 챕터를 할애할 정도로 깊은 관심을 기울이고 있는 점에도 주목한다.작년과 올해 학교 주변 환경을 보면,과연 교실이나 강의실이 그렇게 많이 필요할까?학교 건물이 그렇게 거대해질 필요가 있을까?생각하게 된다.저자는15년 안에 대학의25%가 사라질 것이라고 내다본다.팬데믹은 미국 대학 재정에 충격을 주었다. “대학에서20년간 일해 온 나는 대학이 내리는 거의 모든 결정이 한 가지 목표를 염두에 두고 이루어진다는 사실을 알게 되었다.그 목표란 바로 종신 재직 교수와 관리자들의 보상을 늘리고 책임을 줄일 방법을 찾는 것이다.”6.팬데믹은 우리에게 무엇을 남기고 있고,무엇을 남길까? “소수의 특권층이 캐리비안의 해적을 몇 번씩 타는 동안,대중은 뙤약볕이 내리쬐는 바깥에 서서 절대 오지 않을지도 모르는 차례를 기다리고 있다.”빈익빈 부익부 현상은 더욱 깊어지고 있다.멀리 갈 것도 없이 한국의 현주소이기도 하다.소수의 사람이 대부분의 이익을 차지하는 바람에 발생하는 비용은 단순히 경제적인 문제에서만 그치는 게 아니라 나라의 균형을 유지하는 중산층을 뒤흔들어놓았다.저자가‘연줄이 지배하는 사회’를 지적하며 염려하는 것은 마치 현 한국의 상황을 바라보며 내린 진단 같다.그저 답답하기만 한 현재에서 미래를 내다보는 저자의 시선을 따라가 보는 것도 의미 있는 일이다.- 접기
  • “거대한 가속 (스콧 갤러웨이 著, 박선령 譯, 리더스북, 원제 : Post Corona: From Crisis to Opportunity)”을 읽었습니다.저자인 스콧 갤러웨이 (Scott Galloway, 1964~)는 브랜드 전략과 트렌드 예측의 전문가로 알려져 있으며 우리나라에는 “플랫폼 제국의 미래 (이경식 譯, 비즈니스북스, 원제 : The Four: The Hidden DNA of Amazon, Apple, Facebook, and Google)로 유명합니다.저자는 이 책, “거대한 가속”을 통해 미래가 10년은 더 빨리 찾아왔다고 이야기합니다. 우리는 그 동안 ‘이전’을 살고 있었지만 어느날 갑자기 ‘이후’의 세계를 살게 되었습니다. 바로 COVID-19 팬데믹 때문입니다. 바이러스와 같이 아주 작은 것 때문에 일어난 변화입니다만 인류 역사의 흐름을 바꿀 변화이기도 하다는 것이 저자의 주장입니다.저자는 이 책을 통해 비즈니스 측면에서 COVID-19 팬데믹이 불러올 변화와 기업 환경의 재편을 살펴 보고 있습니다. 그리고 이러한 비즈니스 측면 뿐 아니라 변화가 불러오는 불평등의 심화를 비롯한 사회 문제도 함께 살펴 봅니다.저자는 COVID-19 팬데믹이 불러온 현상을 두가지 측면에서 접근합니다. 하나는 과거로부터 지금까지 이어져 온 현상 및 역학 관계를 더욱 가속화하는 현상 촉진제라는 측면입니다. 또한 하나는 이러한 가속 현상이 미치는 부정적인 영향에 대한 부분입니다. 저자는 이를 거대한 가속이라 명명하고 있습니다.이 책을 통해 펼치는 저자의 주장과 이야기에 대해 공감이 많이 되었습니다. 특히 엄청난 번영을 누리는 것처럼 보이지만 점점 발전이 없어져 가는 사회로 접어들면서 혁신보다는 착취 약탈 경제로 접어들고 있다는 저자의 우려는 너무나 빠른 변화로 인해 부정적인 영향을 회복할 수 있는 능력이 약화될 수 있다는 주장과 함께 크게 공감이 되었습니다.우리는 컴퓨터 화면을 통해 회의하고, 집에서 수업하고, 클라우드를 활용하여 공동 문서를 작업하고 있습니다. 불과 2년 전까지만 해도 지금 우리가 접하고 있는 세상은 생각하기 힘든 환경이었으나 불과 1-2년 사이에 큰 변화를 맞이하였습니다. 바로 COVID-19 팬데믹 사태 때문입니다.현대 문명의 취약점을 구석 구석 공격하며 사람과 사람을 강제로 떼어놓은 COVID-19, 그로 인해 불과 2년 전에는 생각도 못한 일들이 벌어지고 있습니다.백신 접종률이 올라가면서 한때 기대감을 가졌습니다. 하지만 그럼에도 불구하고 전 세계적으로 치솟는 확진자 숫자는 여전히 COVID-19가 끝날 수 있다는 전망을 회의적으로 바라보게 합니다. 용케 치료제가 개발되고, 모든 사람들이 백신을 맞게 되어 지금만큼 COVID-19를 무서워 하지 않게 되더라도 과연 옛날의 모습으로 돌아갈까요? 아닐 것 같습니다. 변화의 방아쇠는 이미 당겨졌고 날아가버린 총알을 되돌리는 것은 정말 어려운 일이기 때문입니다. 하지만 우리는 날아가는 총알이 어디로 갈지 모릅니다. 우리 앞에 어떤 변화가 기다리고 있을까요? 포스트 코로나 시대에 우리 앞에 펼쳐진 역사적 변곡점에 놓인 거대한 가속을 이 책으로 확인하는 것도 변화를 예측해보는데 도움이 될 것 같습니다.#거대한가속, #스콧갤러웨이, #박선령, #리더스북, #문화충전, #포스트코로나※ 본 포스팅은 네이버 카페 문화충전200%의 서평으로 제공 받아 솔직하게 작성한 리뷰입니다.- 접기

이를 어떻게 사용해야 할지 또는 다른 방식이 있는지 논의가 필요해 보임.

긍/부정 키워드 추출 모델 데이터 생성

진행해야 할 항목

  1. 카테고리 별로 1만권의 서적에서 리뷰 수집
  2. 긍/부정 키워드 라벨링 툴 구현
  3. 팀원에게 리뷰 데이터 분배
  4. 팀원 별로 리뷰 데이터 전처리

주제 및 모델 재선정

주제

  • 문제 정의 및 간략한 설명

모델

  • 서비스 구현에 필요한 모델
  • 모델에 필요한 데이터
    • 직접 가공해야 할 경우 원천 데이터 출처 및 데이터의 형태까지

서비스 평가 방식 선정

  1. 정확도 평가 - 대강X, 구체적으로 어떻게 정확도를 계산할 건지 필요
  2. 사용자 평가(혹은 설문 평가)
    등 서비스를 평가할 수 있는 지표를 만들어야 함.

교수님 예시 ) 넷플릭스
추천 영상에 대해 좋아요/쏘쏘/싫어요로 평가하게 함 -> 그 수치에 기반해 얼마나 잘 추천됐는지 평가

유사한 타 서비스와 비교가 가능하면 더 좋음.
-발표 시 어떤 모델을 사용하는지 구체적 설명하지말고, 모델 이름만 말하라고 하셨음.

어떤 방식으로 평가하면 좋을지 의견 공유해주세요

프로젝트 역할 배분

필요한 역할

  • FrontEnd
  • BackEnd(API Server + DB)
  • Model

본인이 익숙한 언어와 그동안 해본 프로젝트(했던 역할포함)의 간략한 설명과 원하는 역할을 적어주세요!

수집할 서적의 범위 설정

알라딘에서 모든 서적을 수집하기는 힘들 것 같아서 범위를 정해서 진행해야 할 것 같습니다.

알라딘에서 서적 데이터를 수집할 때 아래와 같은 EndPoint로 접근하여 크롤링을 할 예정입니다.

도서 추천 시퀀스 로직 구현

시퀀스

  1. 도서 검색
  2. 필터링된 도서의 리뷰 수집
  3. 수집된 리뷰의 긍/부정 키워드 추출
  4. 사용자의 선호 키워드 선택
  5. 랭킹 알고리즘을 적용하여 최종 추천 결과 출력

키워드 기반 서적 추천 모델 추천 시스템

키워드 기반 서적 추천

  1. 서적 데이터 읽기 (현재는 CSV, db에 넣을지 말지 상의 해야함)
  2. TF-IDF 모델 읽기
  3. 키워드의 TF-IDF 점수를 구하기
  4. 키워드의 점수와 서적의 점수의 유사도를 구함 (코사인 유사도)
  5. 내림차 순으로 정렬하여 해당 인덱스의 서적을 출력

긍/부정 키워드 추출 모델

기반 모델: E2E-ABSA

아키텍처

  • Pre-trained embedding layer: BERT-Base-Uncased (12-layer, 768-hidden, 12-heads, 110M parameters)
  • Task-specific layer:
    • Linear
    • Recurrent Neural Networks (GRU)
    • Self-Attention Networks (SAN, TFM)
    • Conditional Random Fields (CRF)

학습 데이터

  • But the staff was so horrible to us.####But=O the=O staff=T-NEG was=O so=O horrible=O to=O us=O .=O

긍/부정 키워드 추출 모델 데이터 라벨링 툴

기술 스택

  • 언어: Python
  • 중요 프레임워크/라이브러리: soynlp, PyQt5, transformers

사용법

실행 후 Select File로 수집된 리뷰 문서를 열어주면 토큰화된 문장이 하나씩 출력됩니다.
긍/부정 키워드에 해당하는 토큰을 왼쪽 마우스 버튼으로 클릭시 긍정/부정/중립 으로 상태가 변합니다.
키워드가 없을경우 Skip을 누르고 선택이 완료된 경우에는 Next를 누르면 됩니다.
작업을 완료 후에는 Save를 누르면 됩니다.

주제 선정

산학 프로젝트 주제 선정을 위한 의견 공유

웹 서비스 제작

  • react 기반
  • 사용 편의성 위해 웹 제작도 계획
  • 현재 앱과 같은 페이지 구조로 생각중.

키워드 기반 서적 추천 모델 학습시 메모리 초과

전처리된 23만권의 서적 데이터를 학습시 너무 많은 단어 수로 인해 numpy에서 메모리 초과 발생

생각 중인 해결 방안

  1. 물리적인 메모리가 큰 서버를 통해 학습을 시킨다.
  2. 추출된 핵심 키워드를 추려서 메모리 필요량을 줄인다.

서적 추천 모델 데이터 수집

학습 데이터

  • 제목 (title)
  • 소개 (intro)
  • 목차 (contents)

데이터 수집 목적

  • 제목/소개/목차에서 핵심 키워드를 추출 후 책 추천을 위한 TF-IDF Matrix 작성

수집 후 저장은 CSV 파일의 형태로 할 예정

7주차 프로젝트 진행사항 공유

각자 맡은 부분에 대한 진행 사항을 알려주세요!
이번 주에 한 부분, 다음 주 계획 적어주시면 될 것 같습니다.

이번 주 진행 계획

이정은

  • 비밀번호 분실 화면(본인인증->비밀번호 변경) 구현예정

윤정환

  • 서적 카테고리 별 수집 수 정해지면 그거대로 다시 서적 데이터 수집
  • 정적 리뷰 데이터 수집기 구현
  • 리뷰 데이터 긍/부정 키워드 라벨링 툴 구현

이진희

  • 찜 기능 api 구현
  • 모델 서버 구상

서적 데이터 수집기 속도 느림

수집기 속도 느린 원인

  • Selenium을 이용한 동적 크롤링 방식

해결 방안

  1. 수집기를 여러 개 실행하여 동시에 수집 진행
  2. 정적 크롤링 방식으로 변경

해결 방안의 어려운 점

  • 1번 방식의 경우 웹 드라이버를 여러 개 실행해야 하는데 같은 네트워크를 통해 통신을 하기 때문에 응답이 느릴 때가 종종 생겨서 이에 대한 예외 처리 혹은 재시도 기능을 구현해야 합니다.
  • 2번 방식의 경우 알라딘의 웹 방식이 스크롤을 내렸을 때 내용이 생기는 것이라 이때 요청되는 부분을 분석해서 구현해야 하는 것이 어렵습니다.

수집해야 할 데이터가 바뀔 수도 있고 많아지거나 적어질 수 도 있는데, 이 때마다 수집을 새로해야 하기 때문에 수집기의 속도를 올려야 합니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.