La ricerca classica prevede di individuare i documenti doc più rilevanti all'interno di un corpus D, relativamente ad una query q formata da parole o token w.
La misura di questa rilevanza nella sua forma più elementare può essere data dalla sommatoria della rilevanza di ogni singolo token della query rispetto ad uno specifico documento del corpus.
RelevanceScore(q,doc,D)=∑w∈QWeight(w,doc,D)
Vediamo alcune delle funzioni più utilizzate a tale riguardo:
Per un corpus di documenti D, per ogni parola w , per ogni documento doc, definiamo:
Term Frequency: TF(w,doc)=count(w,doc)|doc| indica la frequenza relativa di una parola w all'interno di un documento doc.
Document Frequency: df(w,D)=|{doc∈D:w∈doc}| indica la frequenza assoluta dei documenti che contengono w nel corpus D.
Inverse Document Frequency: IDF(w,D)=log(|D|df(w,D)) indica la frequenza inversa relativa dei documenti che contengono w nel corpus D, in termini di logaritmo. Quindi sarà massima se il termine compare in un solo documento e nulla se compare in tutti i documenti.
TF-IDF(w,doc,D)=TF(w,doc)⋅IDF(w,D)
è quindi una misura della rilevanza di un documento doc rispetto a un termine w , tenendo conto della frequenza del termine w all'interno del corpus D. Termini comuni nella gran parte dei documenti comporteranno un basso TF-IDF a prescindere dalla frequenza del termine nel singolo documento, mentre termini rari nel corpus e concentrati in pochi documenti, avranno un alto grado di significatività/specificità e quindi un elevato TF-IDF.
Più attuale evoluzione del TF-IDF, utilizzata nei più noti retrieval engine come ElasticSearch, prevede due componenti secondo logiche analoghe, sebbene più strutturate:
ScoreBM25(w,doc)=TF(w,doc)⋅(k+1)TF(w,doc)+k⋅(1−b+b|doc|avgdoclen)
analogo del semplice TF, presenta due parametri sui quali agire:
k (tipicamente k∼1.2) che mitiga l'effetto di un'alta frequenza del termine nel documento quando k tende a zero, facendo convergere la misura a 1.
b (tipicamente k∼0.75) che a parità di condizioni penalizza documenti più lunghi della media e premia documenti più corti della media.
IDFBM25(w,D)=log(1+|D|−df(w,D)+sdf(w,D)+s)
con s convenzionalmente pari a 0.5 è l'analogo del IDF, rispetto al quale presenta un effetto di maggiore smussamento specie per i casi estremi in cui df è nulla o si avvicina a |D|.
Anche in questo caso avremo BM25(w,doc,D)=ScoreBM25(w,doc)⋅IDFBM25(w,D)
Come valutare la bontà di un sistema di ricerca? Le metriche tradizionali sono orientate generalmente a valutare l'accuratezza nel restituire risultati effettivamente significativi, tuttavia mettiamo l'attenzione sul fatto che è sempre più necessario prendere in considerazione anche altre metriche, relative alla latenza, al throughput, ai FLOPs, all'utilizzo dei dischi e della memoria, al costo totale del sistema.
Il tipo di dati che normalmente abbiamo a disposizione per effettuare le valutazioni di accuratezza su di un ranking restituito dal sistema D=[doc1,…,docN], in riferimento a una query q e un insieme di N documenti D, può frequentemente essere quello di una semplice label (generata manualmente o anche in parte automaticamente) che ci dice se un documento è effettivamente rilevante per q oppure no. Raramente avremo un gold ranking di riferimento, dispendioso sia pure se incompleto.
Vediamo ora alcune metriche di accuratezza per valutare un ranking. Definiamo innanzitutto Rank(q,D) come la posizione del primo documento rilevante per la query q nel ranking D.
Successo: La metrica binaria Success@K(q,D)={1 se Rank(q,D)≤K0 altrimenti ci dice se il nostro ranking è almeno di rank K.
Rank reciproco: RR@K(q,D)={1Rank(q,D) se Rank(q,D)≤K0 altrimenti è una metrica più elaborata che può assumere valori compresi tra 1 (migliore) a 0 (peggiore). Nella pratica si utilizza la media su varie query per ottenere l'indicatore MRR@K.
Definendo invece Ret(D,K) come l'insieme dei documenti di D fino alla posizione K, e Rel(D,q) l'insieme dei documenti di D rilevanti per la query q, possiamo estendere le tradizionali metriche di accuratezza:
Precisione: Prec@K(q,D)=|Ret(D,K)∩Rel(D,q)|K
Richiamo: Rec@K(q,D)=|Ret(D,K)∩Rel(D,q)||Rel(D,q)|
E la più bilanciata precisione media AvgPrec(q,D)=∑|D|i=1{Prec@i(q,D)seRel(q,doci)0altrimenti|Rel(q,D)| , ovvero la media delle Precisioni calcolate in corrispondenza della posizione di ogni documento rilevante presente nel ranking.
Prendendo un Encoder quale BERT, si concatenano Query e Documenti, addestrandolo su documenti sia positivi che su insiemi di negativi, a partire quindi da una tupla ⟨qi,doc+i,{doc−i,k}⟩, per ottenere un classificatore che ne restituisca la rilevanza, secondo una funzione di costo di negative log-likelihood per ogni qi pari a −logeRep(qi,doc+i)eRep(qi,doc+i)+∑nj=1eRep(qi,doc−i,j) dove Rep(q,doc)=Dense(Enc([q;doc]N,0)) è l'output del classificatore a partire dalla rappresentazione finale sul primo token dell'encoder.
Il sistema è poco scalabile, in quanto a prescindere dal training, ogni verifica richiederà |D| forward pass sull'encoder per ogni ricerca.
Rispetto al modello precedente abbiamo 2 encoder, uno per le query ed uno per i documenti, anche in questo caso da addestrare su documenti sia positivi che su set di negativi, a partire quindi da una tupla ⟨qi,doc+i,{doc−i,k}⟩, in base ad una funzione di costo di negative log-likelihood per ogni qi pari a −logeSim(qi,doc+i)eSim(qi,doc+i)+∑nj=1eSim(qi,doc−i,j) dove Sim(q,doc)=(EncQ(q)N,0))⊤(EncD(doc)N,0)) è una semplice funzione di similitudine, quale è il prodotto scalare, tra le rappresentazioni finali ricavate dal primo token degli encoder.
Il sistema è scalabile in quanto è possibile generare in anticipo tutti gli EncD , anche se l'interazione tra q è doc è limitata a quelle delle 2 singole rappresentazioni.
ColBERT
Questa ulteriore evoluzione del modello vede l'utilizzo di 2 encoder come per il precedente DPR, ma utilizzando le rappresentazioni finali di tutti i token sia della query che del documento, calcolando quindi una matrice dei relativi prodotti scalari e individuando per ogni token della query (riga) il corrispondente massimo del prodotto scalare con un token del documento (colonna). La somma di questi massimi ci fornirà quindi la nostra misura MaxSim(q,doc)=L∑iMmaxj Enc(q)N,i⊤ Enc(doc)N,j da utilizzare in modo analogo ai 2 casi precedenti ai fini del training.
Il vantaggio ulteriore introdotto da questo modello è un'elevata interazione contestuale attraverso l'allineamento tra le componenti di query e documento.
Un modello come ColBERT può essere utilizzato anche in un contesto ibrido, ad esempio come Reranker su di un set di document già ricavati attraverso un modello di ricerca classica, oppure attraverso la similitudine tra vettori delle rappresentazioni dei token delle query con quelle dei token dei documenti - in questo ultimo caso anche attraverso l'uso di centroidi ricavati tramite algoritmi di clustering (k-means) sui token dei documenti.
SPLADE
Questo modello si distacca dai precedenti e mira a costruire una misura mettendo in relazione gli embedding dei token dell'intero dizionario, con le rappresentazioni dei token ricavate dall'ultimo layer di un unico encoder.
In particolare si costruisce una matrice tra le M rappresentazioni t1⋯tM in uscita dall'encoder, e i |V| embedding del dizionario w1⋯w|V| , e si ricavano gli elementi sij=transform(Enc(t)N,i⊤Emb(wj)+bj) dove la trasformazione non è un mero prodotto scalare ma avviene tramite la trasformazione transform(x)=LayerNorm(GeLU(xW+b)) .
Dagli sij ricaviamo per ogni elemento del dizionario le |V| componenti del vettore SPLADE(t,wj)=∑Milog(1+ReLU(sij)) che andrà a rappresentare il contesto esteso del documento.
La misura di similitudine tra due documenti sarà il prodotto scalare tra i relativi vettori SPLADE, quindi SimSPLADE(q,doc)=SPLADE(q)⊤SPLADE(doc) e su questa andremo ad addestrare la nostra rete con le modalità già vista e la funzione di costo di negative log-likelihood più una componente di regolarizzazione per bilanciare la sparsità delle componenti (lavoriamo con vettori di cardinalità |V|).
Nei paragrafi che seguono si vanno a introdurre sinteticamente i fondamenti della gestione per processi, modello che negli ultimi decenni ha proposto una rilettura della struttura e della dinamica dell'organizzazione imperniata sulla creazione del valore, attraverso la centralità del cliente e il soddisfacimento dei suoi bisogni. I modelli statici "tradizionali" con una gestione verticale e compartimentata delle attività in unità organizzative, siano divisioni o semplici uffici, rischiano difatti di perdere di vista il concetto di output per il cliente e spesso non sono in grado di adattarsi ai suoi bisogni sempre più variegati e mutevoli.
Ecco quindi emergere il concetto dinamico di processo, inteso come insieme di attività end-to-end che attraversano trasversalmente l’organizzazione per creare un output al quale il cliente attribuisce valore. In questa ottica il Business Process Management coinvolge l'intera organizzazione in un approccio sistematico e strutturato per analizzare, gestire, controllare e migliorare nel tempo l'insieme dei processi aziendali, integrando l'orientamento ai processi con logiche di continuous improvement.
A supporto dell’adozione del BPM, si introducono vari framework per la classificazione dei processi, come i l'APQC's PCF e SCOR, che possono essere utilizzati per identificare i processi e agevolarne la standardizzazione, beneficiando di know-how e best practice di settore. Si esaminerà anche come l’adozione del BPM possa avvenire per gradi e con diversi obiettivi a seconda dello stadio di maturità dell’organizzazione.
Saranno quindi analizzati i diversi principi da seguire per implementare efficacemente la gestione per processi:
Vedremo infine come le tecnologie digitali operino in simbiosi con il BPM, sia attraverso suite BPMS per la gestione dei processi a 360°, dalla modellazione all’esecuzione e al controllo, sia attraverso Enterprise Systems (ERP, CRM, SCM) che implementano le attività operative in ottica di processo.
1. Le dimensioni dell’organizzazione aziendale e l’orientamento al cliente: i processi aziendali
2. Evoluzione dei processi aziendali: dalla divisione del lavoro al BPM
3. Tipologia, identificazione e classificazione dei processi aziendali
4. Rappresentazione CRASO, gerarchia e livelli di analisi dei processi
5. Implementazione del BPM: fasi, maturità, fattori critici di successo e principi
6. Principi culturali: pervasività e logica cliente/fornitore
7. Principi organizzativi: process ownership e job redesign
8. Principi gestionali: la documentazione. Modellazione dei processi con BPMN
9. Principi gestionali: la misurazione
10. Principi gestionali: ottimizzazione dei flussi, controlli e bilanciamento push/pull