Ich habe eine Reihe von Stellenbeschreibungen von Benutzern eingegeben. Es gibt alle Arten von Rechtschreibfehlern und schlechten Daten. dh:
...
tulane univ hospital
tulip
tullett prebon
...
weik investment
weill cornell university medical center
weis
weiss waldee hohimer dds
welded constrction l.p.
welder
welder
welder
...
Welche Schritte würden Sie unternehmen, um diese Werte durch berufsbezogene Erkenntnisse zu erweitern?
Das Beste, was ich mir vorstellen kann, ist, es Wolfram Alpha zu geben. Aber ich frage mich, ob es andere zugängliche Techniken gibt, die ich mit Python verwenden kann.
Update: Ich habe herausgefunden, dass es eine Standardberufsklassifikation gibt. Ich möchte den Namen wirklich dem SOC und dem SOC einer Reihe von Durchschnittsgehältern zuordnen.
classification
categorical-data
text-mining
fabrizioM
quelle
quelle
Antworten:
Eine mögliche Möglichkeit, dies zu starten, besteht darin, das Natural Language Tool Kit (NLTK) von Python zu verwenden, das für die Text- und Themenanalyse verwendet werden kann, aber auch nützliche Funktionen zum Extrahieren bestimmter Wörter aus Zeichenfolgen bietet. Zum Beispiel könnten Sie aus der Stellenbeschreibung die Wörter "medizinisch", "Krankenhaus" usw. extrahieren, um breite Berufe und Sektoren zu finden. Aufgrund der Rechtschreibfehler und der Qualität der Daten glaube ich nicht, dass dies vollautomatisch erfolgen kann, sodass Sie die SOCs möglicherweise selbst codieren. Die breiten Berufe und Sektoren auf diese Weise zu haben, erleichtert die Aufgabe jedoch erheblich.
Wenn Sie sich für die Verarbeitung natürlicher Sprache / Text- und Themenanalyse / Text Mining darüber hinaus interessieren, ist ein ziemlich kostengünstiges, aber nützliches Buch von Bird et al. (2009) "Verarbeitung natürlicher Sprache mit Python" .
Berufsbezeichnungen wurden von David Autor mit Gehältern verknüpft. Er verknüpfte Daten in der aktuellen Bevölkerungsumfrage (die Daten, aus denen auch US-Arbeitslosenzahlen ermittelt werden) mit den SOC-Titeln, aus denen Sie auch Gehälter für jeden Beruf erhalten können. Daraus können Sie leicht die Durchschnittsgehälter in jedem Beruf berechnen und sogar eine Vorstellung von der Varianz (innerhalb der beruflichen Einkommensungleichheit) in jedem Beruf haben. David stellt seine Datensätze in seinem Datenarchiv am MIT zur Verfügung.
quelle
Ich hatte Erfolg mit Latent Dirichlet Allocation (LDA), um die latenten Themen oder "Themen" in Textdaten zu finden. LDA erstellt Themen aus Begriffen (Wörtern) aus Ihrem Korpus von Stellenbeschreibungen. Jede Stellenbeschreibung erhält eine Wahrscheinlichkeit, jedes der Themen zu enthalten. Wenn Sie beispielsweise LDA gebeten haben, einen Korpus in drei Themen zu klassifizieren, enthält eine Stellenbeschreibung für einen Grafikdesigner möglicherweise 80% "Photoshop Graphic Illustrator ...", 18% "HTML CSS JS ..." und 2% "Java" Frühling objektorientiert ... ". Es gibt viel über die LDA zu lesen, suchen Sie einfach oder beginnen Sie mit der Quora-Frage .k k
Meine Analyse mit LDA war in R, aber es gibt natürlich ein Python-Paket, obwohl ich es nie in meiner eigenen Arbeit verwendet habe.
Sie können eine Themennummer auswählen, die den Nummernberufen im SOC entspricht. Nachdem Sie die Themen generiert haben, überprüfen Sie sie und prüfen Sie, ob Sie aussagekräftige Links zum SOC finden. Passen Sie die Themennummer entsprechend an, bis Sie zufrieden sind.
Um Gehaltsschätzungen für jede Stellenbeschreibung vorzunehmen, sollten Sie jedes Gehalt anhand der Themenwahrscheinlichkeiten gewichten. Wenn beispielsweise eine Stellenbeschreibung eine Wahrscheinlichkeit von 80% hat, ein Softwareentwickler zu sein, gewichtet der SOC das Gehalt mit 0,80 und die übrigen Themen ebenfalls. Wenn dies zu viel Lärm verursacht, setzen Sie einfach einen Grenzwert (möglicherweise 20%) und entfernen Sie die verbleibenden Themengewichte aus der Gehaltsschätzung.
Bei Rechtschreibfehlern können Sie es jederzeit mit einer Rechtschreibprüfung angreifen und sehen, wie es mit den Ergebnissen ohne das Tool verglichen wird. Stellen Sie außerdem sicher, dass Sie Standard-NLP-Techniken wie das Entfernen von Satzzeichen und das Steming von Wörtern verwenden, bevor Sie LDA ausführen.
quelle
Das sind weniger Stellenbeschreibungen als Berufsbezeichnungen. Wenn Sie Beschreibungen wie dieses Beispiel aus den SOC-Definitionen hätten , könnten Sie ein Themenmodell verwenden, wie von Chris vorgeschlagen:
Wenn kein Langtext vorhanden ist, können Sie einen naiven Bayes'schen Klassifikator verwenden (da Sie ein Klassifizierungsproblem haben), der das soziale Netzwerk als Feature verwendet, da Personen wahrscheinlich in denselben Jobs wie ihre Freunde arbeiten. Ein weiteres Merkmal könnte die Ähnlichkeit der Zeichenfolge mit der Direct Match Title-Datei sein (ich denke, diese Datenbank ist genau das, was Sie benötigen), die eine Zuordnung zwischen Jobtiteln und dem SOC bietet.
quelle