Ähnlichkeit der Berufsbezeichnung

8

Ich versuche, eine Metrik zwischen Berufsbezeichnungen im IT-Bereich zu definieren. Dazu benötige ich eine Metrik zwischen Wörtern von Berufsbezeichnungen, die nicht zusammen in derselben Berufsbezeichnung erscheinen, z. B. eine Metrik zwischen den Wörtern

Senior, Primary, Lead, Head, VP, Director, Zeug, Principal, Chief,

oder die Wörter

Analyst, Experte, Modellierer, Forscher, Wissenschaftler, Entwickler, Ingenieur, Architekt.

Wie kann ich all diese möglichen Wörter mit ihrer Entfernung erhalten?

Mher
quelle
Ich denke, Sie werden einige zusätzliche Informationen benötigen, um dies zu lernen. Haben Sie beispielsweise Gehaltsinformationen, Branche und Anzahl der direkten Berichte? Dies definiert, wann zwei Rollen als ähnlich betrachtet werden sollten. Dann können Sie fragen, welche Begriffe unter ähnlichen Rollen synonym zu sein scheinen. Aber wenn Sie nichts darüber wissen, was die Dinge ähnlich macht, bin ich mir nicht sicher, was Sie tun können.
Sean Owen

Antworten:

4

Das ist ein interessantes Problem, danke, dass Sie es hier auf Stapel gebracht haben.

Ich denke, dieses Problem ähnelt dem, wenn wir LSA (Latent Semantic Analysis) in der Stimmungsanalyse anwenden , um eine Liste positiver und negativer Wörter mit Polarität in Bezug auf einige vordefinierte positive und negative Wörter zu finden.

Gut liest:

Meiner Meinung nach ist LSA in dieser Situation Ihr bester Ansatz, da es die zugrunde liegende Beziehung zwischen den Wörtern aus dem Korpus lernt und wahrscheinlich genau das ist, wonach Sie suchen.

Ankit
quelle
Verwandte Methoden wie LDA können ebenfalls eine gute Wahl sein.
Madison
2

Wenn ich Ihre Frage verstehe, können Sie sich die Koexistenzmatrix ansehen, die mit den Begriffen nach dem Titel erstellt wurde. Beispiel: Senior FOO, Primary BAR usw. Anschließend können Sie die Ähnlichkeit zwischen einem beliebigen Begriffspaar wie "Senior" und "Primary" mithilfe einer geeigneten Metrik berechnen. zB die Kosinusähnlichkeit.

Emre
quelle
Das Problem ist jedoch, dass "Senior" und "Primary" nicht in einem Titel vorkommen. Wie kann ich diese beiden Wörter überhaupt anhand einer Liste von Berufsbezeichnungen vergleichen?
Mher
Ja, dies könnte Ihnen helfen zu lernen, dass "Senior" und "Entwickler" zusammenpassen, aber nicht, dass "Senior" und "Lead" ähnliche semantische Inhalte haben.
Sean Owen
@Mher, Sie sollen nicht im selben Titel vorkommen; die Begriffe folgende ihnen sollen sowohl zB Senior auftreten Entwickler oder primäre Entwickler .
Emre
@ SeanOwen, Wenn die Titel semantisch ähnlich sind, würden Sie erwarten, dass auch ihre Vektoren für das gleichzeitige Auftreten ähnlich sind, da sie austauschbar verwendet werden.
Emre
1
Ja, es muss um Level und Rolle gehen. Zwei "Köpfe" sind ähnlich, aber das ist offensichtlich, weil beide das Wort "Kopf" haben. Mein Punkt war, dass "Koch" und "Ballerina" nicht unbedingt ähnlich sind, nur weil man "Chefkoch" und "Kopfballerina" sieht, wie ich die Idee des Zusammentreffens verstanden habe. Wie erfahren Sie, dass "Lead Developer" und "Senior Developer" ähnlich sind, "Junior Developer" jedoch nicht? Ich denke, einige andere Daten müssen ins Bild kommen, um uns zu sagen, dass die ersten beiden ähnlich sein sollen. Dann können wir herausfinden, warum Begriffe dies erklären.
Sean Owen
1

Ich bin mir nicht sicher, ob dies genau das ist, wonach Sie suchen, aber r-base hat eine Funktion namens "adist", die eine Distanzmatrix mit ungefähren String-Abständen (entsprechend dem Levenshtein-Abstand) erstellt. Geben Sie '? Adist' ein, um weitere Informationen zu erhalten.

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

Wenn R keine Option ist, wird der Levenshtein-Distanzalgorithmus hier in vielen Sprachen implementiert: http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance

nfmcclure
quelle
Ich bin mir der Bearbeitungsentfernung wie der Levenshtein-Entfernung bewusst, aber ich suche nach etwas wie semantischer Ähnlichkeit.
Mher
Das ist deutlich schwieriger. Die einzige Möglichkeit, so etwas zu tun, besteht darin, auf ein Wörterbuch zugreifen zu können. Dann könnten Sie sich die Text-Mining-Definitionen der Wörter ansehen. Versuchen Sie, auf 'wordnet' zuzugreifen, vielleicht könnte das helfen. wordnet.princeton.edu/wordnet
nfmcclure
1
-0 für den Vorschlag der Levenshtein-Entfernung.
Slater Victoroff
1

(zu lang für einen Kommentar)

Grundsätzlich ist die Antwort von @ Emre richtig: Einfache Korrelationsmatrix und Kosinusabstand sollten gut funktionieren *. Es gibt jedoch eine Subtilität: Berufsbezeichnungen sind zu kurz, um einen wichtigen Kontext zu bieten. Lassen Sie mich das erklären.

Stellen Sie sich LinkedIn-Profile vor (eine ziemlich gute Datenquelle). Normalerweise enthalten sie 4-10 Sätze, die die Fähigkeiten und Qualifikationen einer Person beschreiben. Es ist ziemlich wahrscheinlich, dass Sie Ausdrücke wie "Lead Data Scientist" und "Professional Knowledge of Matlab and R" in demselben Profil finden, aber es ist sehr unwahrscheinlich, dass darin auch "Junior Java Developer" zu sehen ist. Wir können also sagen, dass "Lead" und "Professional" (sowie "Data Scientist" und "Matlab" und "R") häufig in denselben Kontexten vorkommen, aber sie werden selten zusammen mit "Junior" und "Java" gefunden.

Die Koexistenzmatrix zeigt genau dies. Je mehr 2 Wörter im selben Kontext vorkommen, desto ähnlicher sehen ihre Vektoren in der Matrix aus. Der Kosinusabstand ist nur ein guter Weg, um diese Ähnlichkeit zu messen.

Aber was ist mit Berufsbezeichnungen? Normalerweise sind sie viel kürzer und erstellen nicht genügend Kontext, um Ähnlichkeiten zu erkennen. Glücklicherweise benötigen Sie keine Quelldaten, um selbst Titel zu sein - Sie müssen Ähnlichkeiten zwischen Fähigkeiten im Allgemeinen und nicht speziell in Titeln finden. Sie können also einfach eine Matrix für das gleichzeitige Auftreten aus (langen) Profilen erstellen und diese dann verwenden, um die Ähnlichkeit von Titeln zu messen.

* - Tatsächlich hat es bei einem ähnlichen Projekt bereits für mich funktioniert.

Freund
quelle