2021. 6. 20. 15:59ㆍProject
이번 9회 엔지니어링산업 설계대전에 제출했었던 서비스에 대해 작성해보려 합니다.
모든 코드는 아래 Github에 작성해 두었습니다.
이번 주제는 본인의 엔지니어링 설계 능력을 이용하여 자유롭게 어떠한 서비를 제공하는 것이었고,
저희는 최근 사람들의 가장 큰 관심사 중 하나인 취업에 대해 좀 더 유용하고 좋은 인사이트를 제공할 수 있는 서비스를 만들어 보고자 하였습니다.
따라서, 저희가 제공한 서비스는
- 1) 기업 분석
- 2) 분석한 기업들의 요소에 대한 시각화 대시보드
- 3) 본인의 자격 요소에 맞추어 지원할 수 있는 공고를 보여주는 인터페이스
이렇게 크게 3가지로 서비스를 제공하였습니다.
1)-1. 웹 스크래핑(잡플래닛)
먼저 잡플래닛 사이트 에스 필요한 정보에 대한 웹 스크래핑을 실시하였습니다.
잡플래닛 사이트 내 개발자 도구를 이용하여, 각 정보에 대한 속성명과 태그명을 분석하고 원하는 데이터만 추출할 수 있게 코드를 작성하였다. 원하는 정보를 추출한 다음에 data_rows라는 변수에 저장하였다. 그 후 data_rows라는 리스트 안에 들어있는 각각의 태그들에 대한 for문을 활용하여 원하는 정보를 더 추출하였습니다.
위와 같은 디버깅 값들이 나오는 것을 확인할 수 있었으며, 필요 없는. 간단한 while문을 통해 불필요한 값을 삭제할 수 있었고, 코드를 전부 완성시켜 전체 데이터에 대한 추출을 진행한 후 csv 파일로 저장하였습니다.
1)-2.DB 연결
저장된 csv 파일은 수천 개의Data를 담고 있기 때문에 이를 그대로 활용하기에는 안정성에 있어 문제가 있다고 판단하였고, 따라서 MS사에서 제공하는 MS-SQL Server 툴을 이용하여 DB를 구축하고 이를 csv파일과 연동하여 데이터 안정성을 확보하고, 관계 형성을 통해 구조화를 실시하였습니다.
위와 같은 모습으로 DB를 구축하였고, 간단히 저희가 생성한 DB에 대해 설명을 하자면, Web Scraping을 통해 생성한 CSV Data는 회사명, 사업분야, 지역, 평점, 연봉 이렇게 총 5개의 Column으로 구성돼있습니다.. 여기에서 회사명을 Primary Key로 설정하였고, 데이터의 특성상, 19개의 지역과 5개의 사업 분야로 데이터를 분류할 수 있었습니다. 보다 안정적인 데이터 관리를 위해 지역 코드와 사업분야 코드를 갖고 있는 테이블을 추가로 생성하여 위의 그림과 같은 관계를 구성하였습니다.
지역 테이블에선 지역명을 Primary Key로 지정하고, Master Table의 지역 Column을 Foreign Key로 설정하였습니다. 마찬가지로 사업 분야 테이블에선 사업 분야를 PK로 설정하고, 이는 Master Table의 사업분야와의 관계를 갖도록 설정하였다. 각 관계는 “일대다” 관계를 가정하고 있습니다.
당시, 유의미한 인사이트를 도출하기에는 너무 부족한 칼럼이라고 판단하여 사이트에 대한 웹 스크래핑을 추가로 실시하였고, 한 기업에 대한 총 8개의 칼럼을 추출하였습니다.
위 데이터의 모습은 다양한 분야 중 IT분야에 대한 기업만을 가져온 모습이고, 한 기업에 대해 총 8개의 칼럼이 구성되어 있는 모습입니다.
2)-1. 상관성 분석
상관성 분석을 실시하기 위해, seaborn, matplotlib.pyplot, matplotlib.font_manager 총 3개의 library를 호출하였습니다. sns.set 함수의 경우, Jupyter Notebook 자체가 히트맵 한글 인식이 불가한 까닭에, 한글 인식이 깨지는 것을 방지하고자 실시한 코드입니다. plt.figure 코드의 경우 추후에 확인할 상관성 분석 표의 크기를 결정하는 코드이고, 마지막으로 sns.heatmap(train.corr()) 코드의 경우, 이전에 저장해놓은 IT/웹/통신 기업에 대한 기업 정보를 저장한 train data에 대해 상관성 분석을 지정된 히트맵의 형식으로 실시하는 코드입니다.
IT/웹/통신 사업분야의 상관성 분석표의 결과를 살펴보면, 연봉과 면접 난이도 간 상관성이 양의 상관관계로 가장 뚜렷함을 알 수 있습니다. 다시 말해, 연봉이 높을수록 면접 난이도도 높고, 반대로 면접 난도가 높을수록 연봉 또한 높다고 결론 지을 수 있었습니다. 통상적으로 –1 < x < 1의 값을 갖는 상관성 분석치의 경우 양의 상관관계의 경우 0.3의 값 이상일 때, 유의미한 관계라고 결정합니다.
2)-2.Power BI Dash Board
지금까지는 SQL Database를 통해 DB를 생성하고 생성한 DB를 데이터 분석 기법을 통해 유의미한 인사이트를 도출하였습니다. 지금부터는 해당 DB와 분석 결과를 토대로 본격적인 취업 정보 대시보드를 작성한 결과를 설명하겠습니다.
우선 Dable 팀은 세 가지의 대시보드를 구상하였습니다. 첫 번째 대시보드는 ‘‘기업 추천 시스템’입니다.’ 입니다.
위 사진과 같이, 취업하고자 하는 선호 지역과, 사업분야, 그리고 희망 연봉을 위와 같은 슬라이서 형태로 입력할 수 있도록 작성하였습니다. 마지막으로 기업 형태에는 대기업, 중견기업, 중소기업, 외국계기업, 공기업이 있다. 해당 슬라이서를 통해 데이터를 입력하면 다음과 같은 형태로 기업 정보를 받아볼 수 있도록 설정하였습니다.
예를 들어,
이렇게 해당 기업을 선택하면 해당 기업의 평점과 연봉, 면접 난이도, 직원 수에 대한 정보를 다음과 같이 확인할 수 있습니다.
3) GUI 생성(잡코리아)
3)-1. 웹 스크래핑
위와 같은 코드를 이용하여 잡코리아에서 기업명에 따른 공고명, 링크, 경력, 학력, 마감시한 등에 데이터를 불러들였습니다.
즉,
위와 같은 모습으로, 사이트에서 데이터를 추출한 모습입니다.
3)-2.DB 연결
이후, 생성한 데이터들을 데이터의 안전성을 위해 DB에 연결하였습니다.
3)-3.인터페이스 설계
위와 같이 최대한 사용자가 보기 용이하도록 인터페이스의 프레임을 설계하였고,
위와 같은 코드를 작성하여 인터페이스의 버튼을 생성하였습니다.
각 버튼에 대한 설명은, 아래와 같습니다.
총 6개의 버튼은,
위와 같고 본인의 학력, 경력 요소에 맞춰 기업을 검색하고 마감시한이 급한 순서대로 공고명을 확인할 수 있습니다.
따라서, 최종 인터페이스 모습은 아래와 같습니다.
위와 같이, 본인의 학력, 경력에 맞춘 기업 공고명들을 확인할 수 있고, 마감시한이 급한 순서대로 확인할 수 있으며, 기업들을 검색할 수 있는 최종 GUI입니다.
-마무리-
이번 설계대전을 하면서 대부분의 사람들이 취업공고들을 확인하고 있고, 정보력이 곧 힘이라는 것처럼 다양한 사이트에서 대량의 정보들이 나오고 있습니다.
이런 상황에서 본인이 주도적으로 기업을 파악하고, 대량의 공고들 속에서 본인의 자격요건에 맞는 기업들을 확인할 수 있는 서비스를 제공해 보았습니다.
특히 잡플래닛 사이트는 유료사이트로서 제휴가 맺어져있지 않는 대학들을 사용에 어려움이 있습니다.
따라서 저희가 제공하는 서비스들을 이용하여 많은 취업준비생들이 취업 공고들을 학인함에 있어 주도적으로 기업을 파악하고, 본인에 맞는 공고들을 파악할 수 있으면 좋겠습니다.
'Project' 카테고리의 다른 글
[Dacon]영화 관객수 예측 모델 (0) | 2021.01.28 |
---|---|
[Dacon]따릉이 이용 예측 AI모델 (0) | 2021.01.27 |
[Kaggle]타이타닉 생존자 예측 프로젝트 (1) | 2021.01.24 |
[Kaggle]Covid in 한국 (0) | 2021.01.21 |