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?
Antworten:
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.
quelle
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.
quelle
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.
Wenn R keine Option ist, wird der Levenshtein-Distanzalgorithmus hier in vielen Sprachen implementiert: http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance
quelle
(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.
quelle