Alternatywy dla TF-IDF i podobieństwa kosinusowego podczas porównywania dokumentów o różnych formatach

12

Pracowałem nad małym, osobistym projektem, który wymaga umiejętności zawodowych użytkownika i sugeruje najbardziej idealną karierę dla nich w oparciu o te umiejętności. W tym celu korzystam z bazy ofert pracy. W tej chwili kod działa w następujący sposób:

1) Przetwarzaj tekst każdej oferty pracy, aby wyodrębnić umiejętności wymienione w tej ofercie

2) Dla każdej kariery (np. „Analityk danych”) połącz przetworzony tekst ofert pracy dla tej kariery w jeden dokument

3) Oblicz TF-IDF każdej umiejętności w dokumentach kariery

Po tym nie jestem pewien, której metody powinienem użyć do oceny kariery na podstawie listy umiejętności użytkownika. Najpopularniejszą metodą, którą widziałem, byłoby traktowanie umiejętności użytkownika również jako dokumentu, a następnie obliczenie TF-IDF dla dokumentu umiejętności i użycie czegoś w rodzaju podobieństwa kosinusowego do obliczenia podobieństwa między dokumentem umiejętności a każdym z nich dokument kariery.

Nie wydaje mi się to idealnym rozwiązaniem, ponieważ podobieństwo cosinus jest najlepiej stosowane przy porównywaniu dwóch dokumentów tego samego formatu. W tym przypadku TF-IDF wcale nie wydaje się odpowiednią miarą do zastosowania na liście umiejętności użytkownika. Na przykład, jeśli użytkownik doda dodatkowe umiejętności do swojej listy, TF dla każdej umiejętności spadnie. W rzeczywistości nie obchodzi mnie częstotliwość umiejętności na liście umiejętności użytkownika - zależy mi tylko na tym, że mają one te umiejętności (i może na ile dobrze je znają).

Wydaje się, że lepszym miernikiem byłoby wykonanie następujących czynności:

1) Dla każdej umiejętności, którą posiada użytkownik, oblicz TF-IDF tej umiejętności w dokumentach kariery

2) Dla każdej kariery zsumuj wyniki TF-IDF dla wszystkich umiejętności użytkownika

3) Ranga kariery na podstawie powyższej sumy

Czy myślę tutaj w dobrym kierunku? Jeśli tak, to czy są jakieś algorytmy, które działają w tym kierunku, ale są bardziej wyrafinowane niż prosta suma? Dzięki za pomoc!

Richard Knoche
źródło
3
Sprawdź Doc2vec, Gensim ma implementację
Blue482

Odpowiedzi:

1

Być może możesz użyć osadzania słów, aby lepiej oddać dystans między niektórymi umiejętnościami. Na przykład „Python” i „R” powinny być bliżej siebie niż „Python” i „Zarządzanie czasem”, ponieważ oba są językami programowania.

Cała idea polega na tym, że słowa pojawiające się w tym samym kontekście powinny być bliżej.

Gdy już będziesz mieć takie osadzenie, będziesz mieć zestaw umiejętności dla kandydata i zestawy umiejętności o różnej wielkości do pracy. Następnie możesz użyć odległości Earth Mover do obliczenia odległości między zestawami. Ten pomiar odległości jest raczej wolny (czas kwadratowy), więc może nie być dobrze skalowany, jeśli masz wiele zadań do wykonania.

Aby poradzić sobie z problemem skalowalności, być może możesz uszeregować zadania na podstawie tego, ile umiejętności ma kandydat na pierwszym miejscu, i faworyzować te stanowiska.

Valentin Calomme
źródło
1

Powszechną i prostą metodą dopasowania „dokumentów” jest użycie ważenia TF-IDF, jak opisano. Jednak, jak rozumiem twoje pytanie, chcesz uszeregować każdą karierę (dokument) na podstawie zestawu umiejętności użytkowników.

Jeśli utworzysz „wektor zapytania” na podstawie umiejętności, możesz pomnożyć wektor przez swoją matrycę kariery (z wszystkimi wagami tf-idf jako wartości). Otrzymany wektor dałby wynik w rankingu według dokumentu kariery, którego można użyć do wybrania najlepszych karier dla zestawu „umiejętności zapytania”.

Np. Jeśli wektor zapytania składa się z zer i jedynek i ma rozmiar, a macierz termin-dokument ma rozmiar, wtedy spowoduje wektor o rozmiarzez elementami równymi sumie wagi TF-IDF każdego terminu zapytania na dokument kariery. 1×| terms| M| terms| ×| dOcUments| ˉ v M1×| dOcUments|q¯1×|terms|M|terms|×|documents|v¯M1×|documents|

Ta metoda rankingu jest jedną z najprostszych i istnieje wiele jej odmian. Wpis TF-IDF na Wikipedii również krótko opisuje tę metodę rankingu. Znalazłem też to pytanie i odpowiedzi na temat SO dotyczące dopasowywania dokumentów.

KorkiBuziek
źródło
Zaskakujące jest to, że prosta średnia osadzania słów jest często tak dobra, jak średnia ważona osadzeń wykonanych za pomocą wag Tf-Idf.
wacax
0

Możesz spróbować użyć „gensim”. Zrobiłem podobny projekt z nieustrukturyzowanymi danymi. Gensim dał lepsze wyniki niż standardowy TFIDF. Działał też szybciej.

Harsha Reddy
źródło