2월 14일에 부캠이 끝났는데 지금 글을 쓰는 이유는 간단하다. 그냥 좀 쉬고 싶었다. 최종 프로젝트 때문에 근래에 잠을 제대로 못잤는지 모니터만 봐도 머리가 아팠다. 그래서 한 1-2주 정도 쉬고 이렇게 글을 쓴다.
간단하게 말하면 유저가 지원하고자 하는 회사, 직무, 찾아보고 싶은 질문 종류, 작성하고 있던 답변(선택)을 입력하면 거기에 맞는 합격 자기소개서를 추천해주는 서비스다.
답변을 입력하면 더 나은 추천을 받을 수 있다.
자기소개서를 클릭하면 스크랩 아이콘이 있는데 이 아이콘을 클릭하면 마이페이지에서 스크랩한 자기소개서를 볼 수 있다.
현재에도 링크를 통해서 서비스를 이용해볼 수 있다.
자소서 쓰시는 분들 많이 이용해 주세용ㅎㅎ
Link : recommendu
Github : recommendu github
프로젝트 전체 과정에서 가장 중요했던 과정이 user-item interaction data 였다. 즉, 유저가 남긴 로그데이터가 있어야지 모델링을 통해서 추천시스템을 구현할 수 있었다. 그래서 그데이터를 쌓을 수 있도록 어느정도 추천 성능이 있는 서비스를 구현하는 것이 처음 목표였다.
일단 user-item interaction data가 없기 때문에 추천 모델링으로 서비스를 구축하는 것은 불가능했다. 그렇기에 회사, 직무, 질문, 답변을 모두 고려해서 서로 가중치가 다르게 점수를 매겨 추천을 해주는 서비스를 우선 개발하기로 했다.
질문은 라벨링을 통해서 분류했고 답변은 BERT계열의 모델 RoBerTa를 사용해서 사용자가 입력한 답변과 합격 자기소개서의 답변의 유사성을 구해 계산했다.
우리는 사용자가 입력한 답변이 무조건적으로 필요했기 때문에 유저 경험의 진입장벽을 낮추기 위해 질문별 샘플 답변을 보여줄 수 있는 기능을 구현해 사용자가 버튼 하나만 눌러도 임의로 답변을 채울 수 있도록 했다.
샘플 답변이 잘려있는 것을 확인할 수 있는데, 그것은 우리 서비스의 취지가 중간에 자기소개서를 쓰다가 막혔을 때 추천을 받기 위해서 설계된 프로젝트이기 때문에 그 취지에 맞게 답변을 일부러 잘랐다.
7일 동안 1차 배포한 결과, 140명의 유저와 1600여개의 로그데이터를 모을 수 있었다. 그리고 유저피드백을 통해서 2차 배포때 기능을 추가하기로 했다.
1차배포때는 마이페이지를 구현하지 못했기 때문에 마이페이지를 구현했다. 또한 로그데이터를 토대로 모델링을 설계했는데, 애초에 기간이 짧기도 했고 데이터의 양이 턱없이 부족했기 때문에 user와 자기소개서의 meta data를 이용한 context-aware 모델을 사용하기로 했다. 그 중에서 실험을 한 결과 CatBoost가 AUC는 물론 Precision에도 높은 성능을 보여줬다. 또한 KeyBERT를 사용해 자기소개서의 중요 단어를 해시태그 형식으로 보여주기로 했다.
2차 배포를 한 후, 약 3주정도 시간이 흘렀는데 현재 3700여개의 로그데이터를 수집했다.
현재 자기소개서 데이터뿐만 아니라 계속해서 잡코리아에 올라오는 합격 자기소개서를 반영하기 위해 AirFlow를 사용해 크롤링&전처리 자동화와 모델링 자동화를 하기로 했다. 이미 크롤링과 전처리과정에 대한 코드는 다 완성이 되어있기 때문에 쉽게 구현할 수 있었다.
이 과정을 5주만에 하다보니 진지하게 정신이 나갈뻔 했다. 애초에 AI를 공부하는 과정이었기 때문에 프론트엔드가 가능한 사람이 없다보니 백엔드를 담당하는 팀원이 자동으로 자바스크립트를 공부해야했다. 게다가 AI 서비스를 구축해본 경험이 없다보니 아키텍쳐 설계에 많은 시간이 들었다.
하지만 거기에 따른 로그 시스템 구축뿐만 아니라 데이터베이스 스키마 설계와 같은 백엔드적 지식을 많이 얻어갈 수 있었을 뿐만 아니라 모델링과 데이터 엔지니어링적인 스킬을 기를 수 있어서 좋았다.
가장 좋았던 점은 팀원들이 너무나도 열심히 해줘서 거기에 나도 힘을 많이 얻을 수 있었던 것 같다. 이번 기회에 만약에 부캠을 고민하는 사람이 있으면 한번쯤 해보면 좋은 경험이라고 생각하고 추천해줄만 하다고 느꼈다.
끝..