Rilevanza di elementi non unici in una collezione
Salve a tutti,
scrivo in 'Generale' perchè non so dove collocare questo problema.
Volevo chiedere se qualcuno ha idea di come sia possibile identificare gli elementi (non unici) 'importanti' in una collezione,
Per capirci, mettiamo di avere una collezione di parole che si ripetono. Inizio a contarle e noto ad esempo che 'gatto' ha 50 occorrenze, 'cane' 20 occorrenze, 'lupo' 40, etc etc. Quindi la parola più rilevante è gatto, seguita da lupo, poi cane, etc.
Il mio obiettivo è estrarre dalla collezione la parola più 'importante' (quella con più occorrenze) assieme a quelle che le sono 'abbastanza vicino' (cioè se le occorrenze sono 120, 110, 30, 20, 5, ... a me potrebbero interessare solo 120 e 110. Se sono 50, 40, 25, 3, 2, ... a me potrebberro interessare solo 50,40 e 25 - per dire).
Purtroppo non ho idea di come modellare il concetto di 'abbastanza vicino'.
Sapreste aiutarmi?
Grazie,
Matteo
scrivo in 'Generale' perchè non so dove collocare questo problema.
Volevo chiedere se qualcuno ha idea di come sia possibile identificare gli elementi (non unici) 'importanti' in una collezione,
Per capirci, mettiamo di avere una collezione di parole che si ripetono. Inizio a contarle e noto ad esempo che 'gatto' ha 50 occorrenze, 'cane' 20 occorrenze, 'lupo' 40, etc etc. Quindi la parola più rilevante è gatto, seguita da lupo, poi cane, etc.
Il mio obiettivo è estrarre dalla collezione la parola più 'importante' (quella con più occorrenze) assieme a quelle che le sono 'abbastanza vicino' (cioè se le occorrenze sono 120, 110, 30, 20, 5, ... a me potrebbero interessare solo 120 e 110. Se sono 50, 40, 25, 3, 2, ... a me potrebberro interessare solo 50,40 e 25 - per dire).
Purtroppo non ho idea di come modellare il concetto di 'abbastanza vicino'.
Sapreste aiutarmi?
Grazie,
Matteo
Risposte
Detta così, la domanda è molto mal posta, perché la risposta è ovvia ed è "contale".
Devi dire di più sul problema, ad esempio che strumenti hai a disposizione: devi usare un pc? Puoi scrivere un programma?
Devi dire di più sul problema, ad esempio che strumenti hai a disposizione: devi usare un pc? Puoi scrivere un programma?
Sì, sto scrivendo un programma.
Le parole so contarle quindi non è un problema, per esempio, ricavare dalla collezione le 5 parole con più occorrenze.
il punto è che su 5 parole puoi avere occorrenze di tipo
100 98 80 80 76
ma anche
100 98 23 20 11
Il secondo caso per me non è desiderabile, perchè 'ad occhio' si vedere che le parole 3,4,5 sono troppo lontane da 1,2 per avere un grado di importanza simile nella collezione.
Il problema è avere un concetto per modellare questo 'ad occhio'
Le parole so contarle quindi non è un problema, per esempio, ricavare dalla collezione le 5 parole con più occorrenze.
il punto è che su 5 parole puoi avere occorrenze di tipo
100 98 80 80 76
ma anche
100 98 23 20 11
Il secondo caso per me non è desiderabile, perchè 'ad occhio' si vedere che le parole 3,4,5 sono troppo lontane da 1,2 per avere un grado di importanza simile nella collezione.
Il problema è avere un concetto per modellare questo 'ad occhio'
Puoi usare uno scarto relativo: ad esempio, se la parola che compare più volte è \(P_{max}\) ed ha \(N_{max}\) occorrenze, puoi vedere se una parola \(P_x\) con \(N_x\) occorrenze è "abbastanza vicina" [nel senso da te inteso] guardando la grandezza
\[
\delta_{x} = \frac{N_{max} - N_x}{N_{max}}.
\]
Si vede subito che \(0 \le \delta_{x} \le 1\), ed in particolare puoi fissare una tolleranza \(tol\) [che può essere ad esempio \(0.05 = 5\%\)] in modo da discriminare le parole \(P_x\) che ti interessano in base al fatto che la loro \(\delta_x\) sia maggiore o minore di \(tol\).
[xdom="Raptorista"]By the way, non è questa la sezione giusta del forum, per cui sposto in "Informatica".
Fa' attenzione la prossima volta![/xdom]
\[
\delta_{x} = \frac{N_{max} - N_x}{N_{max}}.
\]
Si vede subito che \(0 \le \delta_{x} \le 1\), ed in particolare puoi fissare una tolleranza \(tol\) [che può essere ad esempio \(0.05 = 5\%\)] in modo da discriminare le parole \(P_x\) che ti interessano in base al fatto che la loro \(\delta_x\) sia maggiore o minore di \(tol\).
[xdom="Raptorista"]By the way, non è questa la sezione giusta del forum, per cui sposto in "Informatica".
Fa' attenzione la prossima volta![/xdom]
ti ringrazio per la risposta.
non ho postato in informatica perchè il problema non lo ritengo di programmazione, sono interessato alla matematica che c'è dietro. Riportarla in un programma, quello non è un problema.
C'è un modo per calcolare la tolleranza rispetto all'istanza del problema piuttosto che dargli un valore a caso?
non ho postato in informatica perchè il problema non lo ritengo di programmazione, sono interessato alla matematica che c'è dietro. Riportarla in un programma, quello non è un problema.
C'è un modo per calcolare la tolleranza rispetto all'istanza del problema piuttosto che dargli un valore a caso?
Non sono sicuro di aver capito la domanda: vuoi una cosa del tipo \(tol = tol(N_{max}\)?
In tal caso, basta prendere la tolleranza di prima e moltiplicare a destra e sinistra per \(N_{max}\), ma ottieni una cosa equivalente alla precendente [hai sempre lo stesso parametro da impostare].
Se la domanda non è questa, allora spiegati meglio.
In tal caso, basta prendere la tolleranza di prima e moltiplicare a destra e sinistra per \(N_{max}\), ma ottieni una cosa equivalente alla precendente [hai sempre lo stesso parametro da impostare].
Se la domanda non è questa, allora spiegati meglio.
intedo dire: perchè proprio 0.5%?
potrebbe essere un valore buono come non esserlo. Sarebbe invece interessante che questa soglia venisse generata a partire dai dati del problema P, quindi avere una funzione tol(P) che calcoli la soglia (ad esempio) in base al numero di parole totale nella collezione o al numero di parole distinte. (Questa è solo un'idea, tol(P) potrebbe anche essere inflenzata come dici tu da Nmax)
potrebbe essere un valore buono come non esserlo. Sarebbe invece interessante che questa soglia venisse generata a partire dai dati del problema P, quindi avere una funzione tol(P) che calcoli la soglia (ad esempio) in base al numero di parole totale nella collezione o al numero di parole distinte. (Questa è solo un'idea, tol(P) potrebbe anche essere inflenzata come dici tu da Nmax)
Sì, quello puoi farlo benissimo.
La scelta dipende però dalle tue necessità specifiche, non posso suggerirtela io se non dici di più su quello che vuoi ottenere.
La scelta dipende però dalle tue necessità specifiche, non posso suggerirtela io se non dici di più su quello che vuoi ottenere.