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.
classification
categorical-data
text-mining
fabrizioM
fuente
fuente
Respuestas:
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.
fuente
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 .k k
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.
fuente
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:
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.
fuente