Lavoro 4.0 Challenge

image0

Sponsor: Agenzia del Lavoro - Provincia Autonoma di Trento ed Engineering

L’offerta di servizi per l’incontro domanda/offerta di lavoro da parte delle Pubbliche Amministrazioni italiane è in costante evoluzione per venire incontro alle sempre mutevoli esigenze del mercato del lavoro nonché alle novità introdotte sul fronte tecnologico. Da anni la Provincia Autonoma di Trento, tramite l’Agenza per il Lavoro provinciale, ha creato, in collaborazione con il proprio partner IT Engineering, Trentino Lavoro. Si tratta di un portale di servizi online per il lavoro che raccoglie al proprio interno quanto a disposizione nel territorio della Provincia Autonoma di Trento per fruire dei servizi afferenti l’area “Lavoro”. Al proprio interno, infatti, tutti i soggetti coinvolti a vario titolo nella filiera del mercato del lavoro (cittadini, aziende, operatori pubblici e privati) operano in autonomia senza necessità di presentarsi presso gli sportelli dei Centri per l’Impiego.

In particolare, uno dei principali servizi offerti riguarda la gestione della domanda e offerta di lavoro: le aziende, autonomamente o per tramite degli operatori dei Centri per l’Impiego, caricano su Trentino Lavoro delle opportunità di lavoro (vacancy), alle quali i cittadini, interessati a ricercare lavoro possono candidarsi utilizzando i loro curriculum vitae (CV) e le loro lettere di presentazione creati e salvati all’interno del Portale stesso. Terminato il periodo di apertura delle candidature, l’azienda procederà quindi a valutare le candidature ricevute. Parimenti, le aziende possono effettuare delle ricerche nella banca dati dei CV anche in assenza di specifiche offerte di lavoro.

Punto focale del servizio offerto è, quindi, la ricerca che il Portale consente di effettuare. Ciascuna offerta di lavoro e ciascun CV, strutturati secondo modelli predefiniti, contengono sia campi tabellari sia campi testuali. Questi ultimi, tuttavia, difficilmente possono essere usati in modo esaustivo in considerazione dell’uso di parole dal significato simile ma non identiche tra loro (per es. cercando “cuoco” non troverebbe offerte di lavoro per “cuoco capo partita“). Oggi quindi il portale si limita ad utilizzare i campi tabellari contenuti nei CV e nelle vacancy, riducendo di molto le possibilità di incrocio fra la domanda e l’offerta che oggi sempre di più tendono ad esprimere i loro bisogni in un linguaggio naturale. Per ciascuna categoria di utenti (Cittadini, Aziende, CPI/Agenzia) la sfida è quella di ridisegnare i canali digitali offerti su Trentino Lavoro dall’Agenzia, andando poi ad innestarvi nuove modalità di servizio, potenziate tramite l’uso dell’Intelligenza Artificiale.

Da qui, un primo passo è costituito dalla modifica delle modalità con cui il Portale effettua la ricerca, basandosi quindi non sulle sole parole contenute in offerte di lavoro e CV ma sul significato semantico che esse trasmettono, ampliando così il numero e la potenziale rilevanza dei risultati ottenuti.

Challenge

La semplice ricerca testuale per parole coincidenti sulla vacancy rispetto a quanto presente nel o nei CV quasi mai risulta essere efficace ed esaustivo nella ricerca di tutti i risultati potenzialmente desiderati e/o desiderabili. Infatti, tipicamente, il modo di procedere di un essere umano è quello di effettuare una ricerca per concetti e analogie in cui le possibilità di matching, tenendo conto delle distanze semantiche tra i concetti trovati tra CV e offerta di lavro (es. un cv in cui ci sia la qualifica di “assistente alla cucina” potrà essere applicabile, con una opportuna valutazione di distanza, per una vacancy in cui si richieda un “cuoco”), diventano molto più ampie.

Ci viene quindi chiesto di sviluppare un prototipo che arricchisca i testi con il loro significato semantico al fine di ampliare le possibilità di associazione ed i risultati delle ricerche, o anche renderle più precise con filtri addizionali. Tra le possibili attività da svolgere, identificazione delle sezioni del cv e delle vacancy relative ad esperienze lavorative e/o aspirazioni e/o formazione specifica, estrazione di parole chiave e loro estensione semantica (concetti limitrofi e/o sinonimi semantici), estrazione di impieghi passati dai CV, etc (vedere teoria similarità del testo)

Concretamente, si dovranno integrare i dataset relativi a CV e Vacancy ed estenderli con ulteriori “colonne” in cui verranno riportate, ad es. le parole oggetto di estensione semantica, in modo da poter successivamente coinvolgere anche questi “nuovi” termini nella ricerca, permettere di fornire delle analisi di distanza e di effettuare filtri più raffinati.

a. Analisi

I dataset sono complessi, in particolare quello dei CV (nel paragrafo finale sui Dataset sono descritti meglio). Dovrete quindi esaminare attentamente i campi utili da estrarre, in base alle esigenze che credete sia più importante soddisfare nei tempi limitati a disposizione. In ogni caso, ricordatevi che dovete sviluppare un prototipo che comunichi un idea, non un prodotto completo.

Per fare esperimenti, si raccomanda di estrarre pochi cv e annunci (aprire tutti i cv in LibreOffice potrebbe pure risultare in una navigazione troppo lenta per essere agevole) e metterli in file separati.

Per una discussione generale, vedere analisi dati

b. Ricerca base

Un primo approccio potrebbe essere la ricerca per termini chiave e quindi, implementare un processo di information retrieval con delle semplici funzioni python che permettono di specificare i vari argomenti di ricerca. Una possibile evoluzione potrebbe essere quella di realizzare una semplice interfaccia di utilizzo del motore di ricerca utilizzando, ad es., HTML.

Vedere esempi

c. Ricerca avanzata

Si potrebbero migliorare le funzionalità di ricerca sfruttando i campi oggetto di arricchimento semantico, permettendo di filtrare:

  • estrazione di CV e vacancy tra loro correlabili per concetti simili

  • definizione di un ranking di matching sulla base di distanze tra i concetti

  • area geografica, comune

Esempi di ricerca:

  1. Cittadino vuole sapere le posizioni aperte per un certo tipo di lavoro

  2. Azienda vuole sapere i candidati migliori per una posizione di cuoco

Per realizzare quanto sopra, si potrebbe effettuare analisi semantica del testo usando il servizio Dandelion di SpazioDati con l’API Entity Extraction, documentazione API e libreria Python) e l’uso di risorse come Wikipedia o dizionari per la gestione degli aspetti semantici (sinonimi, concetti limitrofi ed eventuali distanze). Per sapere come fare, puoi consultare gli esempi sul sito SoftPython. Esempi di arricchimento con Dandelion:

Nel dataset delle vacancies, nel campo Titolo annuncio è presente il testo “OPERAIO PER CARPENTERIA METALLICA/SALDATORE” Vedi testo arricchito

Nel dataset dei cv, nel campo Desiderate: descrizione professione è presente il testo “CAPOSQUADRA CARPENTIERE” Vedi testo arricchito

Come si può notare, in uno è scritto “CARPENTERIA” mentre nell’altro è scritto “CARPENTIERE”. Nonostante le differenza categoria/mestiere, Dandelion ad entrambi i testi assocerà il singolo concetto ‘Carpentiere’ esplicitandolo con un link a Wikipedia: http://it.wikipedia.org/wiki/Carpentiere

e. Interfaccia utente

Realizzare un prototipo di interfaccia grafica (anche rudimentale) che consenta di scegliere quale profilo essere (cittadino / impresa) ed effettuare ricerche immettendo filtri e testo libero

Dataset

Sono forniti due file, dataset_CV.csv e dataset_vacancy.csv

Per i dati completi chiedere a david.leoni@unitn.it

I campi hanno intestazioni parlanti, per cui non li descriveremo tutti nel dettaglio. In genere:

  • in giallo vi sono i campi strutturati, provenienti da form di input in cui gli operatori, i cittadini o le aziende possono scegliere i valori in modo vincolato

  • in verde vi sono le colonne che vengono compilate con testo libero

  • Le colonne su cui si può soffermare l’attenzione e su cui effettuare l’analisi del testo sono evidenziate in verde con carattere rosso:

    • colonna AI per dataset_CV.csv

    • colonna B per dataset_Vacancy.csv

dataset_vacancy.csv

Righe: 401

Dimensione: 110.5 KB

Campi: per le vacancy ci possono essere più ID uguali: rappresentano la stessa posizione espressa da una azienda per cui possono cambiare dei dettagli (es. cuoco per pranzo, cuoco per cena,… oppure conoscenza arabo o conoscenza inglese)

dataset_CV.csv

Righe: 102011

Dimensione: 151.5 MB

CV rappresentati: 133

  • Un cv può presentare più righe: a ID (colonna A) uguali corrispondono più dettagli della stessa persona ovvero sono parte dello stesso cv

  • È stata fatta una cernita dei soli CV che contenessero almeno una riga con campo a testo libero valorizzato (AI).