Eu tenho várias descrições de trabalho inseridas pelos usuários. Há todo tipo de erro de ortografia e dados incorretos. ou seja:
...
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
...
Quais etapas você adotaria para "aumentar" esses valores com informações relacionadas ao trabalho?
O melhor que consigo pensar é entregá-lo ao wolfram alpha. Mas eu me pergunto se existem outras técnicas acessíveis que eu possa utilizar usando python.
Atualização: eu descobri que existe uma Classificação Ocupacional Padrão , eu realmente gostaria de associar o nome ao SOC e o SOC a uma faixa de salários médios.
classification
categorical-data
text-mining
fabrizioM
fonte
fonte
Respostas:
Uma maneira potencial de começar isso é usar o NLTK ( Natural Language Tool Kit ) do Python, que pode ser utilizado para análise de texto e tópico, mas também possui funções úteis para extrair determinadas palavras de strings. Por exemplo, você pode extrair da descrição do trabalho as palavras "médico", "hospital" etc. para encontrar ocupações e setores amplos. Devido aos erros de ortografia e à qualidade dos dados, não acho que isso possa ser feito de maneira totalmente automatizada, de modo que você possa acabar codificando os SOCs. No entanto, ter amplas ocupações e setores dessa maneira já facilita muito a tarefa.
Se você está interessado em processamento de linguagem natural / análise de texto e tópico / mineração de texto além disso, um livro bastante barato, mas útil, é de Bird et al. (2009) "Processamento de linguagem natural com Python" .
Os títulos ocupacionais foram vinculados aos salários por David Autor. Ele vinculou os dados da Pesquisa de população atual (os dados que também são usados para produzir números de desemprego nos EUA) aos títulos do SOC, dos quais você também pode obter salários em cada ocupação. A partir deles, você pode calcular facilmente os salários médios em cada ocupação e pode até ter uma idéia da variação (dentro da desigualdade de ganhos ocupacionais) em cada ocupação. David disponibiliza seus conjuntos de dados em seu arquivo de dados no MIT.
fonte
Minha análise com o LDA foi em R, mas é claro que existe um pacote Python, embora eu nunca o tenha empregado em meu próprio trabalho.
Você pode considerar selecionar um número de tópico que corresponda às ocupações numéricas no SOC. Depois de gerar os tópicos, inspecione-os e veja se você pode encontrar links significativos para o SOC e ajuste o número do tópico de acordo até ficar satisfeito.
Para fazer estimativas salariais para cada descrição de cargo, considere ponderar cada salário usando as probabilidades do tópico. Por exemplo, se uma descrição de cargo tivesse 80% de probabilidade de ser um desenvolvedor de software, SOC ponderaria o salário em 0,80 e os demais tópicos da mesma forma. Se isso criar muito ruído, basta definir um limite (talvez 20%) e remover os pesos restantes do tópico da estimativa salarial.
Para erros de ortografia, você sempre pode atacá-lo com um verificador ortográfico e ver como ele se compara aos resultados sem a ferramenta. Também certifique-se de empregar técnicas padrão de PNL, como remoção de pontuação e busca de palavras antes de executar o LDA.
fonte
Essas não são tanto descrições de cargo quanto cargos. Se você tivesse descrições como este exemplo nas definições de SOC , poderia usar um modelo de tópico conforme sugerido por Chris:
Na ausência de texto longo, você pode usar um classificador bayesiano ingênuo (já que possui um problema de classificação) que usa a rede social como um recurso, pois as pessoas provavelmente trabalharão nos mesmos tipos de trabalho que seus amigos. Outro recurso pode ser a semelhança de string com o arquivo de título de correspondência direta (acho que esse banco de dados é exatamente o que você precisa), que fornece um mapeamento entre os títulos de trabalho e o SOC.
fonte