¿Cómo categorizaría / extraería información de las descripciones de trabajo?

8

Tengo un montón de descripciones de trabajo ingresadas por los usuarios. Hay todo tipo de errores ortográficos y datos incorrectos. es decir:

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

¿Qué pasos tomaría para 'aumentar' estos valores con información relacionada con el trabajo?

Lo mejor que puedo pensar es dárselo a Wolfram Alpha. Pero me pregunto si hay otras técnicas accesibles que pueda utilizar con Python.

Actualización: descubrí que hay una Clasificación Ocupacional Estándar , realmente me gustaría hacer coincidir el nombre con el SOC y el SOC con un rango de salarios promedio.

fabrizioM
fuente
¿Puedes mapear esto manualmente?
Aksakal
No, hay más de 10,000 descripciones de trabajo ..
fabrizioM
2
10,000 palabras son aproximadamente 22 páginas. No tanto si me preguntas.
Aksakal

Respuestas:

5

Una forma potencial de comenzar esto es utilizar el Kit de herramientas de lenguaje natural (NLTK) de Python, que puede utilizarse para el análisis de texto y temas, pero también tiene funciones útiles para extraer ciertas palabras de cadenas. Por ejemplo, puede extraer de la descripción del trabajo las palabras "médico", "hospital", etc. para encontrar ocupaciones y sectores amplios. Debido a los errores de ortografía y la calidad de los datos, no creo que se pueda hacer de manera totalmente automatizada, de modo que pueda terminar codificando los SOC usted mismo. Sin embargo, tener las amplias ocupaciones y sectores de esta manera ya hace la tarea mucho más fácil.

Si está interesado en el procesamiento del lenguaje natural / análisis de texto y tema / minería de texto más allá de esto, Bird et al. (2009) "Procesamiento de lenguaje natural con Python" .

Los títulos ocupacionales han sido vinculados a los salarios por David Autor. Vincula los datos de la Encuesta de población actual (los datos que también se utilizan para generar cifras de desempleo en los EE. UU.) Con los títulos del COS de los que también puede obtener salarios en cada ocupación. A partir de estos, puede calcular fácilmente los salarios medios en cada ocupación e incluso puede tener una idea sobre la variación (dentro de la desigualdad de ingresos ocupacionales) en cada ocupación. David pone a disposición sus conjuntos de datos en su archivo de datos en el MIT.

Andy
fuente
2

He tenido éxito con la asignación de Dirichlet latente (LDA) para encontrar los temas latentes o "temas" en los datos textuales. LDA creará temas a partir de términos (palabras) a partir de su corpus de descripciones de trabajo. Cada descripción de trabajo tiene una probabilidad de contener cada uno de los temas. Por ejemplo, si le pidió a LDA que clasificara un corpus en 3 temas, una descripción del trabajo para un diseñador gráfico podría tener un 80% de "ilustrador gráfico de Photoshop ...", un 18% de "HTML CSS JS ..." y un 2% de "Java Muelle orientado a objetos ... ". Hay mucho que leer sobre la LDA, solo busque o comience con la pregunta de Quora .kk

Mi análisis con LDA fue en R pero, por supuesto, hay un paquete de Python, aunque nunca lo he empleado en mi propio trabajo.

Puede considerar seleccionar un número de tema que corresponda con las ocupaciones de números en el SOC. Una vez que haya generado los temas, inspecciónelos y vea si puede encontrar enlaces significativos al SOC y ajuste el número del tema en consecuencia hasta que esté satisfecho.

Para hacer estimaciones salariales para cada descripción de trabajo, considere ponderar cada salario usando las probabilidades del tema. Por ejemplo, si la descripción de un trabajo tenía un 80% de probabilidad de ser un desarrollador de software, SOC ponderaría el salario en .80 y los temas restantes también. Si eso genera demasiado ruido, simplemente establezca un límite (tal vez 20%) y elimine los pesos de tema restantes de la estimación de salario.

Para errores ortográficos, siempre puede atacarlo con un corrector ortográfico y ver cómo se compara con los resultados sin la herramienta. También asegúrese de emplear técnicas estándar de PNL como la eliminación de puntuación y la derivación de palabras antes de ejecutar LDA.

Chris
fuente
debería ser relativamente fácil realizar el procedimiento de corrección ortográfica (o más bien crear una lista de todas las palabras que se usan con el recuento de palabras y usar eso (por ejemplo, mirar solo las palabras más raras) para reasignar para corregir la ortografía). (anteriormente google open refine) para el orden
seanv507
1

Esas no son tanto descripciones de trabajo como títulos de trabajo. Si tuviera descripciones como este ejemplo de las definiciones de SOC , podría usar un modelo de tema como lo sugiere Chris:

1011 Directores Ejecutivos Determinar y formular políticas y proporcionar dirección general de empresas u organizaciones del sector público y privado dentro de las pautas establecidas por una junta directiva u órgano de gobierno similar. Planifique, dirija o coordine actividades operativas al más alto nivel de gestión con la ayuda de ejecutivos subordinados y gerentes de personal.

En ausencia de texto de formato largo, podría usar un clasificador bayesiano ingenuo (ya que tiene un problema de clasificación) que usa la red social como característica, ya que es probable que las personas trabajen en el mismo tipo de trabajo que sus amigos. Otra característica podría ser la similitud de cadena con el archivo de título de coincidencia directa (creo que esta base de datos es justo lo que necesita), que proporciona una asignación entre los títulos de trabajo y el SOC.

Emre
fuente