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?
machine-learning
dataset
Mher
fonte
fonte
Respostas:
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.
fonte
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.
fonte
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.
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
fonte
(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.
fonte