직무 관계 사전 구축

박소영
saraminlab
Published in
6 min readNov 24, 2022

사람인 서비스에는 각 분야 별로 다양한 직무 키워드가 있다. IT개발·데이터, 디자인, 상품기획·MD 등 총 21개의 대표 직무가 있는데, 직무 키워드는 각 대표 직무에 속하는 직무들을 정리한 것이다. 또한 각 직무 키워드가 어떤 분류에 속하는지 나타내는 직무 태그 값이 존재하며 직무 태그에는 “직무·직업”, “전문분야”, “기술스택”, “작업 Tool”, “근무장소” 등이 있다. 예를 들자면 “데이터분석가”는 “IT개발·데이터” 대표 직무에 속하는 “직무·직업”이고, “Python”은 “IT개발·데이터” 대표 직무에 속하는 “기술스택”이다.

이렇게 다양한 직무 키워드들이 있는데 모든 직무 키워드가 구직자나 구인사의 특성을 나타낼 때 같은 중요도를 갖는다고 볼 수는 없다. 따라서 어떤 직무가 더 상위 개념이고 어떤 직무가 더 하위 개념인지 정의한다면 상위 직무를 기준으로 이력서나 공고를 묶을 수도 있고 각 직무에 대해 중요도를 다르게 줄 수도 있다.

“Tensorflow를 활용한 프로젝트 경험이 있다”라고 하면 Python 활용 능력이 있다는 것을 짐작할 수 있다. 또한 인사기획, 상품기획, 기술기획 등의 직무는 세부적으로 하는 일은 다르지만 큰 틀에서 “기획”이라는 직무로 묶을 수 있다.
이렇게 직무 관련 단어에는 더 큰 범주가 있고 더 작은 범주가 있다. 따라서 직무 간의 상하 관계가 있다는 가정 하에 직무 계층 사전을 구축하였다.

직무 관계 사전의 필요성

구축된 사전을 사용하여 통계를 내보았는데 이력서 작성 시 사용자가 직무를 선택할 때 상위 키워드와 하위 키워드를 균형 있게 입력한 이력서는 18%에 불과했다. 따라서 계층 사전을 사용한다면 사용자가 입력하지 않았더라도 상위, 하위 키워드를 유추하여 서비스에 활용할 수 있을 것이라고 기대된다.

이력서 상/하위 키워드 입력 비율

Taxonomy와 Ontology

직무 관계 사전 구축 프로세스에 대해 설명하기 전 Taxonomy와 Ontology의 개념에 대해 살펴보자.

먼저 Taxonomy는 계층 관계를 갖는 분류 체계이다. 따라서 객체들은 서로 계층 관계를 갖고 그 관계를 나타낼 용어가 정의되어야 한다.

Ontology는 Taxonomy보다 더 확장된 개념으로 존재하는 모든 관계를 연결한 것이다. 조직 간에 합의된 모든 관계를 연결한 것으로 각 조직의 목적에 따라 활용될 수 있다.

Taxonomy는 일반적으로 상하 관계를 나타내는 경우가 많지만 이번 프로젝트에서는 “상하 관계”, “대등 관계” 두 가지 관계를 정의하고 직무 Taxonomy를 구축하였다. 두 직무가 연관성이 높고 한 직무가 다른 직무에 속하는 관계라면 상하 관계, 두 직무가 연관성이 높으나 서로 속하는 관계가 아니면 대등 관계로 정의하였다.

앞서 예시로 들었던 “Tensorflow를 활용한 프로젝트 경험이 있으니 Python 활용 능력이 있겠다”라는 지식을 통해 “Tensorflow”는 “Python”의 하위 직무이며 서로 상하 관계로 정의하였다. 또한 “Tensorflow 활용 경험이 있는 사람과 Pytorch 활용 경험이 있는 사람이 모델링과 관련하여 비슷한 지식을 갖추고 있겠다”라는 지식을 통해 “Tensorflow”와 “Pytorch”를 대등 관계로 정의하였다.

아래 그림은 직무 Taxonomy의 일부를 그림으로 나타낸 것이다.

직무 키워드 Taxonomy

직무 관계 사전 구축

앞서 설명한 내용은 직무 계층 사전과 관련된 내용이고 직무 관계 사전은 Taxonomy와 유사한 개념인 계층 사전과 일반 관계 사전으로 나누어 볼 수 있다. 일반 관계 사전은 “android는 앱 개발자의 기술 스택이다”와 같은 관계로 이외에도 “직무·직업”, “전문분야”, “작업 Tool”등의 일반 관계가 있다.

직무 계층 사전 구축

직무 계층 사전 구축 방법은 크게 2가지로 나눌 수 있다.

  1. Set intersection Mining
    이 방법에서는 사람인 내의 이력서 데이터를 사용하였다. 단어 1이 등장한 이력서와 단어 2가 등장한 이력서의 교집합이 충분히 크면 단어 2와 단어 1은 연관성이 높다고 정하였다. 그리고 여기서 어떤 단어가 상위이고 어떤 단어가 하위인지 정의해야 했다. 이를 위해서 단어 2가 포함된 이력서의 80% 이상이 단어 1, 단어 2가 모두 포함된 이력서 (이하 교집합)이면 단어 2를 단어 1의 하위 계층으로 정의하였다. 단어 1이 포함된 이력서도 80% 이상이 교집합일 수 있는데 이런 경우에는 동일 계층으로 정의하였다.
  2. 복합 명사 구조 분석
    “해외영업”이라는 직무를 보면 “영업”에 속하는 직무라는 생각을 할 수 있다. 따라서 복합 명사 구조인 직무에 대하여 그 복합 명사를 이루는 명사 중에 직무가 있으면 복합 명사가 해당 명사의 하위 직무라고 정의하였다.

앞서 설명한 2가지 방법을 통해 구축된 직무 계층 사전에 대하여 단어 간의 유사성이 높은지 검증하기 위하여 단어 간의 “Vector 공간 유사도 분석”을 진행하였다. 단어 간의 유사도가 낮은 경우에는 계층 사전에서 제외하였다.

Vector 공간 유사도 분석에는 본 블로그에 게시된 사람인LAB 신입 개발자는 어떤 일을 할까요? 의 “✔ Project 1. 직무 추천 서비스”에서 사용 중인 분석 방법을 사용하였다. 이력서, 공고 내에서 등장한 단어들 중 직무를 포함한 주요 단어들을 벡터화하여 벡터 간의 유사도를 연산하였다. 단어들의 벡터화에는 FastText embedding model을 직접 학습하여 사용하였고, 벡터 간의 유사도 연산에는 cosine similarity 알고리즘을 사용하였다.

직무 계층 사전 구축

직무 일반 관계 구축

일반 관계 구축은 앞서 설명한 직무 태그 값을 이용하였다. “android는 앱 개발자의 기술 스택이다.”라는 관계도 “android”의 직무 태그가 “기술 스택”이라는 것을 활용하여 구축하였다.

직무 계층 사전 구축을 위해서는 사람인에서 사용 중인 직무 키워드 풀을 사용하였으며 검증까지 마친 계층 사전에 대해 수동 검수를 진행하여 최종적으로 관계 사전을 구축하였다.

직무 관계 사전의 활용

현재 직무 관계 사전은 면접 질문 생성 서비스에서 활용되고 있다. 또한 직무 풀 내에서 유사한 직무끼리 그룹핑하여 직무 그룹 사전을 구축하였는데 직무 관계 사전이 이에 활용되었다. 이를 비롯하여 추후에는 추천 등 다양한 서비스에서 활용 가능할 것이라고 보고 있다.

참고문헌

[1] https://www.earley.com/insights/what-difference-between-taxonomy-and-ontology-it-matter-complexity

[2] https://medium.com/saraminlab/%EC%82%AC%EB%9E%8C%EC%9D%B8lab-%EB%A7%89%EB%82%B4%EB%8A%94-%EC%96%B4%EB%96%A4-%EC%9D%BC%EC%9D%84-%ED%95%A0%EA%B9%8C%EC%9A%94-9445f11d1151

--

--