Calcola la classifica delle professioni a partire da un prep
Source:R/match_professions.R
match_professions_score.RdScoring step: dato un oggetto preparato da match_professions_prepare()
e un vettore di competenze dichiarate, calcola la distanza coseno fra
il profilo di ogni professione e la query, ordina le professioni per
distanza crescente e restituisce la decomposizione del contributo di
ciascuna competenza alla distanza totale per le top-N professioni.
Arguments
- prep
Oggetto di classe
"match_professions_prep"prodotto damatch_professions_prepare().- skills
Vettore character di identificativi ESCO L3 (
idescoskill_level_3). EventualiNAe duplicati vengono rimossi.- weights
Vettore numerico non negativo di pesi per le competenze in
skills. SeNULL(default) tutte le competenze ricevono peso uniforme (comportamento storico). Se fornito deve avere lunghezza pari alength(unique(skills[!is.na(skills)])). Se ha nomi, questi sovrascrivono l'allineamento posizionale e vengono usati per accoppiare il peso alla corrispondente competenza. Tutti i pesi devono essere finiti e non negativi; non possono essere tutti zero.- top_n
Numero intero di professioni da restituire in
rankinge per le quali emettere la decomposizioneper_skill. Default20L.- skill_labels
data.tableopzionale con almeno le colonneidescoskill_level_3eescoskill_level_3(etichetta leggibile). Quando fornito, la tabellaper_skillottiene la colonnaskill_label. DefaultNULL.
Value
Una list con i seguenti elementi:
rankingdata.tablecon una riga per professione (al piu'top_n), ordinata perdistancecrescente. Colonne:idesco_level_4,distance(in[0, 1]),score = 1 - distance,hit_ratio(massa L2 delle competenze dichiarate che la professione richiede almeno una volta, normalizzata sulla massa totale; coincide con la frazione di competenze dichiarate nel caso non pesato),mean_coverage(media pesata dicoverage_{p,s}sulle competenze dichiarate;NAsebasis != "coverage"),n_postings,n_skills_matched.per_skilldata.tablein formato lungo (vedimatch_professions()per la descrizione completa delle colonne).basisLa base usata, per introspezione.
queryIl vettore
skillsdeduplicato.paramsLista con
top_n,min_postings,n_professions_considered,n_skills_in_universe,n_skills_resolved,n_skills_unresolved.
Details
La distanza usata e' la distanza coseno (1 - cos(v_p, q)), equivalente
a meta' della distanza euclidea quadrata fra vettori L2-normalizzati.
Questa scelta e' l'unica metrica della famiglia che fornisce una
decomposizione additiva pulita per singola competenza:
$$1 - \cos(v_p, q) = \frac{1}{2} \sum_s ( \tilde v_{p,s} - \tilde q_s )^2.$$
See also
match_professions_prepare() per la fase di prep,
match_professions() per il wrapper end-to-end.
Examples
if (FALSE) { # \dontrun{
con <- itaposts::oja_connect()
on.exit(itaposts::oja_disconnect(con), add = TRUE)
ojv <- skillviz::read_oja_itaposts(con)
prep <- skillviz::match_professions_prepare(
ojv$postings,
ojv$skills,
basis = "coverage"
)
# query non pesata (uniforme)
res_uniform <- skillviz::match_professions_score(
prep,
c("S1.4.1", "S4.8.1", "S1.13.2")
)
# query pesata: la prima skill conta il doppio
res_weighted <- skillviz::match_professions_score(
prep,
c("S1.4.1", "S4.8.1", "S1.13.2"),
weights = c(2, 1, 1)
)
} # }