Wie würden Sie Informationen aus Stellenbeschreibungen kategorisieren / extrahieren?

8

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.

fabrizioM
quelle
Können Sie diese manuell zuordnen?
Aksakal
Nein, es gibt mehr als 10.000 Arbeitsbeschreibungen.
FabrizioM
2
10.000 Wörter sind ungefähr 22 Seiten. Nicht so viel, wenn du mich fragst.
Aksakal

Antworten:

5

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.

Andy
quelle
2

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 .kk

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.

Chris
quelle
Es sollte relativ einfach sein, eine Rechtschreibprüfung durchzuführen. (oder vielmehr eine Liste aller Wörter zu erstellen, die mit der Wortanzahl verwendet werden, und diese (z. B. nur die seltensten Wörter betrachten) zu verwenden, um die korrekte Rechtschreibung neu zuzuordnen. Vielleicht möchten Sie sich das OpenRegine-Github-Projekt ansehen (früher Google Open Refine) für das
Aufräumen
1

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:

1011 Chief Executives Bestimmen und formulieren Sie Richtlinien und geben Sie die allgemeine Richtung von Unternehmen oder Organisationen des privaten und öffentlichen Sektors im Rahmen von Richtlinien an, die von einem Verwaltungsrat oder einem ähnlichen Leitungsgremium festgelegt wurden. Planen, leiten oder koordinieren Sie operative Aktivitäten auf höchster Führungsebene mit Hilfe von untergeordneten Führungskräften und Personalmanagern.

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.

Emre
quelle