다른 형식의 문서를 비교할 때 TF-IDF 및 코사인 유사성에 대한 대안


12

저는 작고 개인적인 프로젝트를 진행하고 있는데,이 프로젝트는 사용자의 직무 기술을 활용하고 그 기술을 기반으로 가장 이상적인 경력을 제안합니다. 나는 이것을 달성하기 위해 직업 목록 데이터베이스를 사용합니다. 현재 코드는 다음과 같이 작동합니다.

1) 각 직업 목록의 텍스트를 처리하여 목록에 언급 된 기술을 추출합니다.

2) 각 경력 (예 : "데이터 분석가")에 대해 해당 경력에 대한 작업 목록의 처리 된 텍스트를 하나의 문서로 결합하십시오.

3) 경력 문서 내 각 기술의 TF-IDF 계산

이 후에는 사용자의 기술 목록을 기반으로 경력을 평가하는 데 어떤 방법을 사용해야하는지 잘 모르겠습니다. 내가 본 가장 인기있는 방법은 사용자의 기술을 문서로 취급 한 다음 기술 문서의 TF-IDF를 계산하고 코사인 유사성과 같은 것을 사용하여 기술 문서와 각각의 유사성을 계산하는 것입니다. 경력 문서.

동일한 형식의 두 문서를 비교할 때 코사인 유사성이 가장 적합하기 때문에 이것은 나에게 이상적인 솔루션처럼 보이지 않습니다. 그 점에서 TF-IDF는 사용자의 기술 목록에 적용하기에 적합한 지표처럼 보이지 않습니다. 예를 들어, 사용자가 목록에 추가 기술을 추가하면 각 기술에 대한 TF가 떨어집니다. 실제로, 나는 사용자의 기술 목록에 기술의 빈도가 무엇인지 상관하지 않습니다. 단지 그 기술을 보유하고 있는지 (그리고 기술을 얼마나 잘 알고 있는지) 관심이 있습니다.

더 나은 메트릭은 다음을 수행하는 것 같습니다.

1) 사용자가 가진 각 스킬에 대해 경력 문서에서 해당 스킬의 TF-IDF를 계산하십시오.

2) 각 경력에 대해 모든 사용자 기술에 대한 TF-IDF 결과를 합산하십시오

3) 위의 합계를 기반으로 순위 경력

올바른 줄을 따라 생각하고 있습니까? 그렇다면 이러한 라인을 따라 작동하지만 단순한 합계보다 더 정교한 알고리즘이 있습니까? 도와 주셔서 감사합니다!


3
Gen2에 구현 된 Doc2vec을 확인하십시오
Blue482

답변:


1

어쩌면 특정 기술 사이의 거리를 더 잘 표현하기 위해 단어 임베딩을 사용할 수 있습니다. 예를 들어, "Python"과 "R"은 모두 프로그래밍 언어이므로 "Python"과 "Time management"보다 서로 더 가까워 야합니다.

전체적인 아이디어는 같은 맥락에서 나타나는 단어가 더 가까워 야한다는 것입니다.

이러한 임베딩이 있으면 후보자를위한 기술 세트와 작업을위한 다양한 크기의 기술 세트를 갖게됩니다. 그런 다음 Earth Mover 's Distance 를 사용 하여 세트 간 거리 를 계산할 수 있습니다. 이 거리 측정은 다소 느리기 때문에 (이차 시간) 통과해야 할 작업이 많으면 확장이 잘되지 않을 수 있습니다.

확장 성 문제를 해결하기 위해 후보자가 처음에 공통적으로 가지고있는 기술의 수를 기준으로 작업 순위를 정하고 이러한 작업을 선호 할 수 있습니다.


1

"문서"와 일치하는 일반적이고 간단한 방법은 설명한대로 TF-IDF 가중치를 사용하는 것입니다. 그러나 귀하의 질문을 이해함에 따라 일련의 사용자 기술을 기반으로 각 경력 (문서)의 순위를 매기려고합니다.

기술에서 "쿼리 벡터"를 생성하면 벡터에 항-경력 행렬 (모든 tf-idf 가중치를 값으로 사용)을 곱할 수 있습니다. 결과 벡터는 경력 문서 당 순위 점수를 제공하며, "쿼리 기술"집합에 대한 최상위 경력을 선택하는 데 사용할 수 있습니다.

예를 들어, 쿼리 벡터 가 0과 1로 구성되고 크기가용어 문서 행렬 의 크기는그러면 은 크기의 벡터가됩니다.경력 문서 당 모든 검색어의 TF-IDF 가중치의 합과 동일한 요소로 구성됩니다. 1×| terms| | terms| ×| documents| ˉ v M1×| documents|q¯1×|terms|M|terms|×|documents|v¯M1×|documents|

이 순위 지정 방법은 가장 단순하고 많은 변형 중 하나입니다. Wikipedia 의 TF-IDF 항목에도이 순위 지정 방법이 간략하게 설명되어 있습니다. 또한 일치하는 문서와 관련하여 SO에 대한 이 Q & A 를 발견했습니다 .


놀랍게도, 간단한 평균 단어 임베딩은 종종 Tf-Idf 가중치로 수행 된 가중 평균 임베딩만큼 우수합니다.
wacax


0

"gensim"을 사용해보십시오. 구조화되지 않은 데이터로 비슷한 프로젝트를 수행했습니다. Gensim은 표준 TFIDF보다 높은 점수를 받았습니다. 또한 더 빨리 달렸다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.