Semelhança no cargo

8

Estou tentando definir uma métrica entre os cargos no campo de TI. Para isso, preciso de alguma métrica entre as palavras dos cargos que não aparecem juntas no mesmo cargo, por exemplo, métrica entre as palavras

sênior, primário, líder, chefe, vice-presidente, diretor, coisas, diretor, chefe,

ou as palavras

analista, especialista, modelador, pesquisador, cientista, desenvolvedor, engenheiro, arquiteto.

Como posso obter todas as palavras possíveis à distância?

Mher
fonte
Eu acho que você precisará de algumas informações extras para aprender isso. Por exemplo, você tem informações sobre salário, setor e número de subordinados diretos? Isso define quando duas funções devem ser consideradas semelhantes. Em seguida, você pode perguntar quais termos parecem ser sinônimos entre papéis semelhantes. Mas se você não sabe nada sobre o que torna as coisas semelhantes, não sei ao certo o que você pode fazer.
Sean Owen

Respostas:

4

Esse é um problema interessante, obrigado por trazer aqui na pilha.

Penso que este problema é semelhante a quando aplicamos o LSA (Análise Semântica Latente) na análise de sentimentos para encontrar uma lista de palavras positivas e negativas com polaridade em relação a algumas palavras positivas e negativas predefinidas.

Boas leituras:

Portanto, para mim, a LSA é sua melhor abordagem para começar nessa situação, pois ela aprende a relação subjacente entre as palavras do corpus e provavelmente é isso que você está procurando.

Ankit
fonte
Métodos relacionados como o LDA também podem ser uma boa aposta.
2222 May Madison
2

Se entendi sua pergunta, você pode olhar para a matriz de co-ocorrência formada usando os termos que seguem o título; por exemplo, FOO sênior, BAR primária, etc. Em seguida, você pode calcular a semelhança entre qualquer par de termos, como "sênior" e "primário", usando uma métrica adequada; por exemplo, a semelhança de cosseno.

Emre
fonte
Mas o problema é que 'senior' e 'primary' não ocorrem em um título. Como posso comparar essas duas palavras usando a lista de cargos?
MJ
Sim, isso pode ajudá-lo a aprender que "senior" e "developer" andam juntos, mas não que "senior" e "lead" tenham conteúdo semântico semelhante.
Sean Owen
@Her, eles não devem ocorrer no mesmo título; os termos a seguir devem ocorrer em ambos, por exemplo, desenvolvedor sênior ou desenvolvedor primário .
Emre
@SeanOwen, Se os títulos forem semanticamente semelhantes, você esperaria que os vetores de co-ocorrência fossem similares também, pois seriam usados ​​de forma intercambiável.
Emre
11
Sim, deve ser sobre nível e função. Duas "cabeças" são semelhantes, mas isso é óbvio porque ambas têm a palavra "cabeça". Meu argumento era que "chef" e "bailarina" não são necessariamente semelhantes apenas porque você vê "chef de cozinha" e "bailarina de chefe", e foi assim que eu entendi a idéia da co-ocorrência. Como você aprendeu que "desenvolvedor líder" e "desenvolvedor sênior" são semelhantes, mas "desenvolvedor júnior" não é? Eu acho que alguns outros dados precisam entrar em cena para nos dizer que os dois primeiros devem ser semelhantes, então podemos descobrir por que os termos o explicam.
23814 Sean Owen
1

Não tenho certeza se é exatamente isso que você está procurando, mas o r-base possui uma função chamada "adist", que cria uma matriz de distâncias de distâncias aproximadas das cordas (de acordo com a distância de Levenshtein). Digite '? Adist' para mais.

words = c("senior", "primary", "lead", "head", "vp", "director", "stuff", "principal", "chief")
adist(words)

      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
 [1,]    0    6    5    5    6    5    5    7    5
 [2,]    6    0    6    6    7    7    7    6    6
 [3,]    5    6    0    1    4    7    5    8    5
 [4,]    5    6    1    0    4    7    5    8    4
 [5,]    6    7    4    4    0    8    5    8    5
 [6,]    5    7    7    7    8    0    8    8    7
 [7,]    5    7    5    5    5    8    0    9    4
 [8,]    7    6    8    8    8    8    9    0    8
 [9,]    5    6    5    4    5    7    4    8    0

Além disso, se R não for uma opção, o algoritmo de distância de Levenshtein é implementado em vários idiomas aqui: http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance

nfmcclure
fonte
Estou ciente da distância de edição como a distância de Levenshtein, mas estou procurando algo como semelhança semântica.
Mher 21/07
Isso é significativamente mais difícil. A única maneira que sei fazer algo assim é poder acessar um dicionário. Depois, você pode procurar nas definições de mineração de texto das palavras. Tente acessar o 'wordnet', talvez isso possa ajudar. wordnet.princeton.edu/wordnet
nfmcclure
11
-0 por sugerir a distância de Levenshtein.
Slater Victoroff
1

(muito tempo para um comentário)

Basicamente, a resposta de @ Emre está correta: matriz de correlação simples e distância do cosseno devem funcionar bem *. Porém, há uma sutileza - os cargos são muito curtos para conter um contexto importante. Deixe-me explicar isso.

Imagine perfis do LinkedIn (que é uma boa fonte de dados). Normalmente, eles contêm de 4 a 10 frases que descrevem as habilidades e qualificações da pessoa. É bem provável que você encontre frases como "cientista de dados principal" e "conhecimento profissional de Matlab e R" em um mesmo perfil, mas é muito improvável que também veja "desenvolvedor júnior de Java" nele. Portanto, podemos dizer que "líder" e "profissional" (assim como "cientista de dados" e "Matlab" e "R") geralmente ocorrem nos mesmos contextos, mas raramente são encontrados junto com "junior" e "Java".

A matriz de co-ocorrência mostra exatamente isso. Quanto mais 2 palavras ocorrerem no mesmo contexto, mais semelhantes serão seus vetores na matriz. E a distância do cosseno é apenas uma boa maneira de medir essa semelhança.

Mas e os cargos? Normalmente, eles são muito mais curtos e não criam contexto suficiente para capturar semelhanças. Felizmente, você não precisa que os dados de origem sejam títulos em si - você precisa encontrar semelhanças entre as habilidades em geral, não especificamente nos títulos. Portanto, você pode simplesmente criar uma matriz de co-ocorrência a partir de perfis (longos) e usá-la para medir a similaridade de títulos.

* - de fato, já funcionou para mim em um projeto semelhante.

amiga
fonte