IT分野の役職間のメトリックを定義しようとしています。このため、同じ役職で一緒に表示されない役職の単語間のいくつかのメトリックが必要です。たとえば、単語間のメトリック
シニア、プライマリ、リード、ヘッド、VP、ディレクター、スタッフ、プリンシパル、チーフ、
または言葉
アナリスト、エキスパート、モデラー、研究者、科学者、開発者、エンジニア、建築家。
どのように私はそれらの距離でそのような可能な単語をすべて得ることができますか?
IT分野の役職間のメトリックを定義しようとしています。このため、同じ役職で一緒に表示されない役職の単語間のいくつかのメトリックが必要です。たとえば、単語間のメトリック
シニア、プライマリ、リード、ヘッド、VP、ディレクター、スタッフ、プリンシパル、チーフ、
または言葉
アナリスト、エキスパート、モデラー、研究者、科学者、開発者、エンジニア、建築家。
どのように私はそれらの距離でそのような可能な単語をすべて得ることができますか?
回答:
これは興味深い問題です。スタックに入れてくれてありがとう。
この問題は、感情分析にLSA(潜在的意味分析)を適用して、いくつかの事前定義された正と負の単語に関して極性を持つ正と負の単語のリストを見つける場合と似ていると思います。
良い読み物:
したがって、私によれば、LSAはコーパスからの単語間の根本的な関係を学習し、おそらくそれがあなたが探しているものであるため、この状況で始めるのに最適なアプローチです。
あなたの質問を理解したら、タイトルに続く用語を使用して形成された共起マトリックスを見ることができます。たとえば、senior FOO、primary BARなど。その後、適切なメトリックを使用して、「senior」と「primary」などの用語のペア間の類似性を計算できます。たとえば、コサイン類似度。
これがまさにあなたが探しているものかどうかはわかりませんが、r-baseには、(レーベンシュタイン距離に応じた)近似文字列距離の距離行列を作成する「adist」と呼ばれる関数があります。詳細については、「?adist」と入力してください。
words = c("senior", "primary", "lead", "head", "vp", "director", "stuff", "principal", "chief")
adist(words)
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 0 6 5 5 6 5 5 7 5
[2,] 6 0 6 6 7 7 7 6 6
[3,] 5 6 0 1 4 7 5 8 5
[4,] 5 6 1 0 4 7 5 8 4
[5,] 6 7 4 4 0 8 5 8 5
[6,] 5 7 7 7 8 0 8 8 7
[7,] 5 7 5 5 5 8 0 9 4
[8,] 7 6 8 8 8 8 9 0 8
[9,] 5 6 5 4 5 7 4 8 0
また、Rがオプションではない場合、レーベンシュタイン距離アルゴリズムは多くの言語でここに実装されています:http : //en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance
(コメントするには長すぎます)
基本的に、@ Emreの答えは正しいです。単純な相関行列と余弦距離がうまく機能するはずです*。ただし、微妙な点が1つあります。役職は短すぎて、重要なコンテキストを伝えることができません。これについて説明しましょう。
LinkedInのプロファイルを想像してみてください(これはデータの非常に優れたソースです)。通常、彼らは人のスキルと資格を説明する4-10文を含みます。「リードデータサイエンティスト」や「MatlabとRの専門知識」などのフレーズが同じプロファイルに含まれている可能性は高いですが、「ジュニアのJava開発者」も含まれている可能性はほとんどありません。したがって、「リード」と「プロフェッショナル」(および「データサイエンティスト」と「Matlab」と「R」)は同じコンテキストで発生することが多いと言えますが、「ジュニア」や「Java」と一緒に見つかることはめったにありません。
共起行列はまさにこれを示しています。2つの単語が同じコンテキストで出現するほど、マトリックス内のそれらのベクトルはより似たものになります。そして、余弦距離は、この類似性を測定するためのちょうど良い方法です。
しかし、役職についてはどうですか?通常、これらははるかに短く、実際には類似点をキャッチするのに十分なコンテキストを作成しません。幸いなことに、ソースデータをタイトル自体にする必要はありません。タイトルではなく、スキル全般の類似点を見つける必要があります。したがって、(長い)プロファイルから共起行列を作成し、それを使用してタイトルの類似性を測定できます。
* -実際、同じようなプロジェクトですでに機能しています。