異なる形式のドキュメントを比較する場合のTF-IDFおよびコサイン類似性の代替


12

私は、ユーザーの仕事のスキルを取り入れ、それらのスキルに基づいてユーザーにとって最も理想的なキャリアを提案する小さな個人的なプロジェクトに取り組んできました。これを実現するために、求人リストのデータベースを使用しています。現時点では、コードは次のように機能します。

1)各ジョブリストのテキストを処理して、リストに記載されているスキルを抽出する

2)各キャリア(「データアナリスト」など)について、そのキャリアの求人情報の処理済みテキストを1つのドキュメントに結合します

3)キャリア文書内の各スキルのTF-IDFを計算する

この後、ユーザーのスキルのリストに基づいてキャリアをランク付けするためにどの方法を使用する必要があるかわかりません。私が見た最も人気のある方法は、ユーザーのスキルをドキュメントとしても扱い、スキルドキュメントのTF-IDFを計算し、コサイン類似度などを使用してスキルドキュメントと各ドキュメントの類似度を計算することですキャリア文書。

同じ形式の2つのドキュメントを比較するときにコサインの類似性が最もよく使用されるため、これは私にとって理想的な解決策ではないようです。さらに言えば、TF-IDFはユーザーのスキルリストに適用するのに適切なメトリックとは思えません。たとえば、ユーザーがリストに追加のスキルを追加すると、各スキルのTFは低下します。実際には、スキルの頻度がユーザーのスキルリストにあるかどうかは気にしません。ユーザーがそれらのスキルを持っていることを気にしています(そして、それらのスキルをどれだけよく知っているかもしれません)。

より良い測定基準は次のようにすることです。

1)ユーザーが持っているスキルごとに、キャリア文書でそのスキルのTF-IDFを計算します

2)各キャリアについて、ユーザーのすべてのスキルのTF-IDF結果を合計します

3)上記の合計に基づいてキャリアをランク付けする

私はここで正しい線に沿って考えていますか?もしそうなら、これらの線に沿って機能するが、単純な合計よりも洗練されたアルゴリズムはありますか?助けてくれてありがとう!


3
Doc2vecをご覧ください。Gensimには実装があります
-Blue482

回答:


1

おそらく、単語の埋め込みを使用して、特定のスキル間の距離をより適切に表すことができます。たとえば、「Python」と「R」はどちらもプログラミング言語であるため、「Python」と「時間管理」よりも互いに近いはずです。

全体の考え方は、同じコンテキストで表示される単語はより近くにあるということです。

これらの埋め込みができたら、候補者のスキルのセット、およびジョブのさまざまなサイズのスキルのセットがあります。次に、Earth Mover's Distanceを使用して、セット間の距離を計算できます。この距離の測定はかなり遅いため(2次時間)、通過するジョブが多い場合はうまくスケーリングされない可能性があります。

スケーラビリティの問題に対処するために、おそらく候補者が最初に共通するスキルの数に基づいてジョブをランク付けし、これらのジョブを優先することができます。


1

「ドキュメント」を一致させる一般的で簡単な方法は、説明したようにTF-IDFの重み付けを使用することです。ただし、私はあなたの質問を理解しているので、一連のユーザースキルに基づいて各キャリア(ドキュメント)をランク付けする必要があります。

スキルから「クエリベクトル」を作成する場合、そのベクトルに用語キャリアマトリックスを掛けることができます(すべてのtf-idfの重みを値として)。結果のベクトルは、キャリアドキュメントごとのランキングスコアを提供します。これを使用して、「クエリスキル」のセットのトップkキャリアを選択できます。

q¯1×|terms|M|terms|×|docあなたはments|v¯M1×|docあなたはments|

このランキング方法は最も単純な方法の1つであり、多くのバリエーションが存在します。ウィキペディアのTF-IDFエントリでも、このランキング方法について簡単に説明しています。また、一致するドキュメントに関するSOに関するこのQ&Aも見つけました。


驚いたことに、単語の埋め込みの単純な平均は、Tf-Idfの重みで行われた埋め込みの加重平均と同じくらい良いことがよくあります。
wacax


0

「gensim」を使用してみてください。非構造化データで同様のプロジェクトを行いました。Gensimは、標準のTFIDFよりも良いスコアを与えました。また、高速に実行されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.