mirror of
https://github.com/Steffo99/unisteffo.git
synced 2024-11-26 18:04:20 +00:00
40 lines
23 KiB
JavaScript
40 lines
23 KiB
JavaScript
|
(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{"0vRf":function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI");let t,o,r,u,s,c=e=>e;const d=String.raw;l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Un approccio probabilistico"},e(a.r,{title:"Probabilità dei token"},e("p",null,"Un supplemento al thesaurus specifico a un certo testo: aggiunge ad ogni token ",e(a.i,null,d(t||(t=c`c`)))," la ",e("b",null,"probabilità")," ",e(a.i,null,d(o||(o=c`P(c)`)))," che un ",e("b",null,"termine selezionato a caso del testo appartenga al sottoalbero")," formato dal token e i suoi discendenti."),e("p",null,"La radice del thesaurus ha sempre probabilità ",e(a.i,null,d(r||(r=c`1`))),".")),e(a.r,{title:"Information content"},e("p",null,"Una misura ",e("b",null,"probabilistica")," di quanto un certo token ",e(a.i,null,d(u||(u=c`c`)))," sia ",e("b",null,"specifico")," in un certo contesto:"),e(a.q,null,d(s||(s=c`
|
||
|
IC(c) = - \log \left( P(c) \right)
|
||
|
`))),e("p",null,"È anche detta ",e("i",null,"sorpresa")," o ",e("i",null,"informazione di Shannon"),"."))))}}).call(this,i("hosL").h)},"1Gqa":function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI"),t=i("ke5e"),o=i("YNhk");l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Thesaurus"},e(a.r,{title:"Cos'è?"},e("p",null,"Un ",e("b",null,"albero di token")," organizzati in una gerarchia di significato."),e(t.a,null,'Il token "mela" avrà come genitore "frutto" e come figli ',e(o.a,{href:"https://it.wikipedia.org/wiki/Renetta"},'"Renetta"'),", ",e(o.a,{href:"https://it.wikipedia.org/wiki/Fuji_(mela)"},'"Fuji"')," e ",e(o.a,{href:"https://it.wikipedia.org/wiki/Granny_Smith"},'"Granny Smith"'),"."),e(t.a,null,e(o.a,{href:"https://wordnet.princeton.edu/"},"WordNet")," è un thesaurus generale per la lingua inglese, mentre ",e(o.a,{href:"https://thes.bncf.firenze.sbn.it/thes-dati.htm"},"Nuovo soggettario")," è un thesaurus generale per la lingua italiana."))))}}).call(this,i("hosL").h)},"29je":function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI"),t=i("ke5e"),o=i("YNhk");let r,u,s=e=>e;const c=String.raw;l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Indicizzazione"},e(a.r,{title:"Inverted index"},e("p",null,"Una ",e("b",null,"struttura dati")," che permette di velocizzare le ricerche su testi ",e("b",null,"grandi")," e ",e("b",null,"semi-statici"),"."),e("aside",null,e("u",null,"Testo semi-statico"),": un testo che viene aggiornato raramente."),e("p",null,"Si crea un ",e("i",null,"vocabolario")," dall'",e("b",null,"insieme dei token"),", e ad ogni ",e("b",null,"token")," del vocabolario si associa una ",e("b",null,"lista di tutte le sue occorrenze")," (",e("i",null,"posting list"),")."),e("p",null,"L'efficacia ed efficienza dell'indice dipendono dalle ",e("i",null,"strutture di indicizzazione")," utilizzate per serializzarlo."))),e(a.s,{title:"Strutture di indicizzazione"},e(a.r,{title:"Sorted array"},e("p",null,"Struttura per rappresentare il vocabolario basata su un ",e("b",null,"array di puntatori")," alle posting list."),e(a.f,null,c(r||(r=s`
|
||
|
ciao → R1, R15, R123
|
||
|
steffo → R1, R14
|
||
|
ciano → R1231
|
||
|
`)))),e(a.r,{title:"Trie"},e("p",null,"Struttura per rappresentare il vocabolario basata su un ",e("b",null,"albero dei prefissi dei token"),",:"),e("ul",null,e("li",null,"ogni arco corrisponde a ",e("b",null,"una lettera del prefisso"),";"),e("li",null,"ogni foglia corrisponde a ",e("b",null,"un token")," e contiene un puntatore alla sua ",e("b",null,"posting list"),".")),e(a.f,null,c(u||(u=s`
|
||
|
- [root]
|
||
|
- c
|
||
|
- i
|
||
|
- a
|
||
|
- o
|
||
|
- R1
|
||
|
- R15
|
||
|
- R123
|
||
|
- no
|
||
|
- R1231
|
||
|
- steffo
|
||
|
- R1
|
||
|
- R14
|
||
|
`)))),e(a.r,{title:"B+ tree"},e("p",null,"Struttura per rappresentare il vocabolario che ",e("b",null,"occupa più spazio di un albero")," ma permette di effettuare ",e("b",null,"certe operazioni più velocemente"),"."),e(t.a,null,e(o.a,{href:"https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html"},"Visualizzazione di un B+ tree")),e(t.a,null,"L'abbiamo fatta in ",e(a.b,{href:"/basididati"},"Basi di dati"),"!"))),e(a.s,{title:"Utilizzo dell'indice"},e(a.r,{title:"Passi"},e("ol",null,e("li",null,e("u",null,"Vocabulary search"),": si cercano ",e("b",null,"individualmente")," i termini della query nel vocabolario"),e("li",null,e("u",null,"Occurences retrieval"),": si ",e("b",null,"raccolgono le posting list")," dei vari termini"),e("li",null,e("u",null,"Occurences manipulation"),": si manipolano i dati delle posting list in modo da risolvere le query, restituendo quindi un ",e("b",null,"sottoinsieme delle occorrenze"))),e("p",null,"In base alla struttura utilizzata, potrebbe non essere sempre possibile effettuare il terzo passo."),e(t.a,null,"Non è possibile cercare prefissi se è stato utilizzato l'hashing!"))))}}).call(this,i("hosL").h)},"2w3n":function(e){e.exports={red:"red__2y1B_",orange:"orange__dD2kx",yellow:"yellow__OEpwl",lime:"lime__CVe41",cyan:"cyan__26ZAg",blue:"blue__LO7Xm",magenta:"magenta__1Akee",example:"example__2PzAa"}},"3f/I":function(e,l,i){"use strict";i.r(l),function(e){var n=i("uilM"),a=i("hGQu"),t=i("KMEV"),o=i("roys"),r=i("9ooG"),u=i("1Gqa"),s=i("0vRf"),c=i("RaT1"),d=i("29je"),p=i("oaLv"),m=i("zl8t");l.default=function(){return e("div",null,e("h1",null,"Gestione dell'informazione"),e(n.a,null),e(a.a,null),e(o.a,null),e(r.a,null),e(u.a,null),e(s.a,null),e(t.a,null),e(c.a,null),e(d.a,null),e(p.a,null),e(m.a,null))}}.call(this,i("hosL").h)},"9ooG":function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI");i("KwpI");l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Document processing"},e(a.r,{title:"Cos'è?"},e("p",null,"Una ",e("b",null,"procedura")," che ottimizza un documento per la ricerca."))),e(a.s,null,e(a.r,{title:"1. Analisi lessicale"},e("p",null,"Passo che trasforma il documento in un ",e("b",null,"insieme di parole")," (",e("i",null,"token"),")."),e("p",null,"Deve decidere come considerare i ",e("b",null,"simboli tipografici"),", il ",e("b",null,"case")," delle lettere e le ",e("b",null,"cifre"),"."),e("p",null,"Inoltre, è possibile che disambigui tra i vari significati delle parole (",e("i",null,"word sense disambiguation"),").")),e(a.r,{title:"2. Eliminazione delle stopwords"},e("p",null,"Passo che ",e("b",null,"elimina")," dalla lista i ",e("b",null,"token inutili")," ai fini delle ricerche."),e("p",null,"Esse solitamente sono gli ",e("b",null,"articoli")," e le ",e("b",null,"preposizioni"),".")),e(a.r,{title:"3. Stemming dei token"},e("p",null,"Passo che ",e("b",null,"riduce alla radice")," tutti i token della lista."),e("p",null,"Converte i ",e("b",null,"plurali in singolari"),", ",e("b",null,"passati ai presenti"),", e così via.")),e(a.r,{title:"4. Selezione degli index term"},e("p",null,"Passo che ",e("b",null,"seleziona i termini più importanti")," della lista."),e("p",null,"Generalmente sfrutta dei ",e("i",null,"parser")," o dei ",e("i",null,"tagger"),"."),e("aside",null,e("u",null,"Parser"),": impreciso ma molto dettagliato, effettua l'analisi grammaticale, logica e del periodo."),e("aside",null,e("u",null,"Tagger"),": preciso ma poco dettagliato, effettua solo l'analisi logica.")),e(a.r,{title:"5. Categorizzazione"},e("p",null,"Passo che ",e("b",null,"classifica")," il documento in una o più ",e("b",null,"categorie")," del ",e("i",null,"thesaurus"),"."),e("aside",null,e("u",null,"Thesaurus"),": gerarchia di categorie, può essere creata ",e("b",null,"manualmente")," o generata ",e("b",null,"automaticamente"),"."))))}}).call(this,i("hosL").h)},KMEV:function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI");i("KwpI");let t,o,r,u,s,c,d,p=e=>e;const m=String.raw;l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Relazioni
|
||
|
sim\_pd(c_1, c_2) = \frac{1}{dist(c_1, c_2) + 1}
|
||
|
`)))),e(a.r,{title:"Similarità Wu-Palmer"},e("p",null,"Calcola la similarità basandosi sulla ",e("b",null,"profondità dei due nodi")," e sulla ",e("b",null,"profondità del minimo antenato comune")," ",e(a.i,null,m(u||(u=p`mac`))),":"),e(a.q,null,m(s||(s=p`
|
||
|
sim\_wp(c_1, c_2) = \frac{2 \cdot depth(mac(c_1, c_2))}{depth(c_1) + depth(c_2)}
|
||
|
`))))),e(a.s,{title:"Somiglianza information-content-based"},e(a.r,{title:"Cos'è?"},e("p",null,"Un modo per misurare la similarità tra due parole attraverso i loro valori di ",e("b",null,"information content"),"."))),e(a.s,null,e(a.r,{title:"Somiglianza Resnik"},e("p",null,"Calcola la similarità basandosi sull'",e("b",null,"information content del minimo antenato comune")," ",e(a.i,null,m(c||(c=p`mac`)))," tra i due termini."),e(a.q,null,m(d||(d=p`
|
||
|
sim\_rs(c_1, c_2) = - \log P( mac(c_1, c_2) )
|
||
|
`))))))}}).call(this,i("hosL").h)},KwpI:function(e,l,i){"use strict";(function(e){var n=i("mbOI");l.a=function(l){return e(n.r,{title:"To be continued",color:n.e.YELLOW},e("p",null,"Questa sezione è incompleta. Torna più avanti!"),l.children)}}).call(this,i("hosL").h)},RaT1:function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI");l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Analisi lessicale"},e(a.r,{title:"Word sense disambiguation"},e("p",null,"Procedura che ",e("b",null,"disambigua tra più significati")," dello stesso token."),e("p",null,"Si può realizzare confrontando la somiglianza di ogni significato con tutti gli altri nomi presenti nella frase."))))}}).call(this,i("hosL").h)},hGQu:function(e,l,i){"use strict";(function(e){var n=i("mbOI"),a=i("hosL");i("ke5e"),i("YNhk");l.a=function(){return e(a.Fragment,null,e(n.s,{title:"Information Retrieval (IR)"},e(n.r,{title:"Cos'è?"},e("p",null,e("b",null,"Processo")," di ",e("b",null,"raccolta")," e ",e("b",null,"recupero approssimato")," di informazioni spesso ",e("b",null,"non strutturate"),"."),e("p",null,"Riceve in input una ",e("b",null,"query"),", elabora ",e("b",null,"documenti")," e restituisce una ",e("b",null,"risposta")," più rilevante possibile."),e("p",null,"Un'applicazione che effettua IR si chiama ",e("b",null,"motore di ricerca"),"."))))}}).call(this,i("hosL").h)},ke5e:function(e,l,i){"use strict";(function(e){var n=i("2w3n"),a=i.n(n);l.a=function(l){return e("div",{class:a.a.example},l.children)}}).call(this,i("hosL").h)},oaLv:function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI"),t=i("ke5e");let o,r,u,s,c,d,p,m,b,h,f,g=e=>e;const v=String.raw;l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Information retrieval models"},e(a.r,{title:"Cosa sono?"},e("p",null,e("b",null,"Modelli matematici")," che ",e("b",null,"ordinano per rilevanza")," (",e("i",null,"ranking"),") i risultati di una query."),e("p",null,"Formalmente, sono composti da:"),e("ul",null,e("li",null,"I documenti ",e(a.i,null,v(o||(o=g`D`)))),e("li",null,"La query ",e(a.i,null,v(r||(r=g`Q`)))),e("li",null,"Una funzione di ",e("i",null,"ranking")," ",e(a.i,null,v(u||(u=g`rank(q_i, d_j) \to \mathbb{R}`)))," che quantifica la similarità")))),e(a.s,null,e(a.r,{title:"Modello classico"},e(t.a,null,"I motori di ricerca web usano generalmente questo modello."),e("p",null,e("b",null,"Modello IR")," che rappresenta ogni documento come un insieme ordinato di ",e("b",null,"parole chiave")," (",e("i",null,"index terms"),")."),e("p",null,"Associa un ",e("b",null,"peso")," a ogni token, e ordina l'insieme in base a quel peso."),e("p",null,"Generalmente, i pesi sono ",e("b",null,"indipendenti")," uno dall'altro, e questo permette di ",e("b",null,"calcolarli parallelamente"),"."),e("p",null,e("u",null,"Bag-of-words"),": L'ordine delle parole nel documento viene solitamente ignorato dal ranking.")),e(a.r,{title:"Modello booleano"},e(t.a,null,e("code",null,"grep")," è a tutti gli effetti un modello booleano."),e("p",null,e("b",null,"Modello IR classico")," che dà un peso booleano a ogni documento: ",e(a.i,null,v(s||(s=g`1`)))," se soddisfa tutti i requisiti della query, ",e(a.i,null,v(c||(c=g`0`)))," se non li soddisfa."),e("p",null,"Ha una ",e("b",null,"precisione perfetta"),", ma richiede query ben preparate e specifiche."),e("p",null,"È anche ",e("b",null,"facile da implementare"),".")),e(a.r,{title:"Modello vettoriale"},e(t.a,null,"Apache Lucene si basa su questo modello."),e("p",null,e("b",null,"Modello IR")," in cui ogni ",e("b",null,"caratteristica")," di un documento è rappresentata con un ",e("b",null,"valore floating point")," e l'intero documento è quindi rappresentato da una ",e("b",null,"n-pla")," di tutte le sue caratteristiche."),e("p",null,e("u",null,"Similarità cosinusoidale"),': il ranking si basa sull\'angolo tra il "vettore query" e il "vettore documento":'),e(a.q,null,v(d||(d=g`
|
||
|
rank(d_j, q) = \frac{d_j \cdot q}{\| d_j \| \times \| q \|}
|
||
|
`))),e("p",null,"Spesso si associa un peso a ogni dimensione in modo da variare l'importanza di una data caratteristica; comunemente, per i testi, si usano come pesi le ",e("b",null,"frequenza dei token")," normalizzate (",e("i",null,"df"),") o logaritmiche (",e("i",null,"idf"),")."),e("p",null,"Come il modello classico, ignora l'ordine delle parole.")),e(a.r,{title:"Modello probabilistico"},e("p",null,e("b",null,"Modello IR")," che effettua il ranking in base alla ",e("b",null,"probabilità")," di comparsa dei termini della query nei documenti."),e("p",null,"Si basa sul calcolare un peso ",e(a.i,null,v(p||(p=g`c_i`)))," per ogni termine della query. Quest'ultimo diventa più grande se il termine ",e("b",null,"compare in documenti rilevanti"),", e più piccolo se compare in documenti irrilevanti. Se il termine compare in ugual modo in entrambi, allora esso varrà ",e(a.i,null,v(m||(m=g`0`))),"."),e("p",null,e("i",null,"Ci sarebbe una dimostrazione complessa che ho omesso per brevità."))),e(a.r,{title:"Modello fuzzy"},e("p",null,"Estensione del ",e("b",null,"modello booleano")," che ammette la possibilità che certe condizioni siano ",e("b",null,"parzialmente soddisfatte"),"."),e("p",null,"Invece che usare solo ",e(a.i,null,v(b||(b=g`0`)))," e ",e(a.i,null,v(h||(h=g`1`))),", permette ai documenti di avere valori intermedi tra quei due."),e("p",null,"Le operazioni booleane vengono quindi modificate:"),e(a.q,null,v(f||(f=g`
|
||
|
\begin{cases}
|
||
|
a \cap b = \min(a, b)\\
|
||
|
a \cup b = \max(a, b)\\
|
||
|
\not a = 1 - a
|
||
|
\end{cases}
|
||
|
`)))),e(a.r,{title:"Modello BM25"},e("p",null,e("b",null,"Modello IR")," simile ai modelli classici che però tiene conto anche della ",e("b",null,"frequenza dei termini")," nei documenti e della ",e("b",null,"lunghezza dei documenti"),"."),e("p",null,"Permette anche di tenere in considerazione la frequenza dei termini ",e("b",null,"nella query"),", nel caso essa sia molto lunga."),e("p",null,e("i",null,"Ci sono formule che ho omesso per brevità.")))))}}).call(this,i("hosL").h)},roys:function(e,l,i){"use strict";(function(e){var n=i("hosL"),a=i("mbOI"),t=i("ke5e"),o=i("YNhk");l.a=function(){return e(n.Fragment,null,e(a.s,{title:"Query"},e(a.r,{title:"User Information Need (UIN)"},e("p",null,"La ",e("b",null,"richiesta")," di informazioni effettuata da un utente ",e("b",null,"in linguaggio naturale"),".")),e(a.r,{title:"Query"},e("p",null,"La ",e("b",null,"traduzione")," dell'UIN in un linguaggio ",e("b",null,"specifico al motore di ricerca"),"."),e("p",null,"La complessità di questo linguaggio dipende dall'utilizzatore del motore di ricerca: il suo ",e("b",null,"livello di esperienza"),", il suo ",e("b",null,"background di conoscenze")," e il ",e("b",null,"livello di approfondimento desiderato"),"."))),e(a.s,{title:"Query languages"},e(a.r,{title:"Keyword-based query"},e(t.a,null,e(o.a,{href:"https://it.wikipedia.org/w/index.php?search=&title=Speciale:Ricerca&go=Go"},"Wikipedia")," e la ",e(o.a,{href:"https://telegram.org/blog/shared-files#multisearch"},"ricerca di Telegram")," usano un linguaggio di query ",e("i",null,"keyword-based"),"."),e("p",null,"Definisce ",e("b",null,"parole chiave")," da cercare all'interno dei documenti."),e("p",null,"In esse, è possibile cercare ",e("b",null,"molteplici")," parole chiave, ",e("b",null,"concatenarle")," per formare una ",e("b",null,"frase")," oppure cercare parole a una data ",e("b",null,"prossimità")," l'una dall'altra."),e("p",null,"Spesso processa il linguaggio naturale per trasformarne le parole specifiche in parole chiave più generiche."),e(t.a,null,"Cercando su Telegram un plurale inglese, verranno restituiti anche i messaggi che riportano la stessa parola ma al singolare.")),e(a.r,{title:"Pattern-based query"},e(t.a,null,"Le ",e(o.a,{href:"https://regex101.com/"},"regex")," e i ",e(o.a,{href:"https://en.wikipedia.org/wiki/Glob_(programming)"},"glob")," sono due dei pattern-based query languages più comuni."),e("p",null,"Definisce ",e("b",null,"parti di testo")," da cercare all'interno dei documenti."),e("p",null,"Permettono dunque la ricerca di ",e("b",null,"prefissi"),", ",e("b",null,"suffissi"),", ",e("b",null,"sottostringhe")," e ",e("b",null,"intervalli"),"."))),e(a.s,null,e(a.r,{title:"Boolean query"},e(t.a,null,e(o.a,{href:"https://www.google.it/"},"Google"),", ",e(o.a,{href:"https://duckduckgo.com/"},"DuckDuckGo"),", ",e(o.a,{href:"https://www.ecosia.org/"},"Ecosia")," usano tutti un linguaggio di query keyword-based booleano."),e("p",null,e("b",null,"Estendono")," gli altri tipi di query permettendo l'inserimento di ",e("b",null,"operatori booleani")," (",e("code",null,"AND"),", ",e("code",null,"OR")," e ",e("code",null,"NOT"),") tra le parole chiave."),e(t.a,null,"Per esempi sulla sintassi per effettuare ricerche booleane su Google, visita ",e(o.a,{href:"https://www.google.it/advanced_search"},"Google Advanced Search"),".")),e(a.r,{title:"Structural query"},e(t.a,null,e(o.a,{href:"https://books.google.com/advanced_book_search"},"Google Books")," permette di sfruttare la struttura fissa delle informazioni sui libri (titolo, autore, editore...) per ottenere risultati più precisi.,"),e("p",null,"Permettono di effettuare i precedenti tipi di query su ",e("b",null,"specifiche parti della struttura")," dei documenti.")),e(a.r,{title:"Concept-based query"},e(t.a,null,e(o.a,{href:"https://www.ncbi.nlm.nih.gov/mesh"},"MeSH")," cataloga i paper di medicina caricati su PubMed organizzandoli in una gerarchia di categorie."),e("p",null,"Limitano le keyword a un ",e("b",null,"vocabolario predefinito")," utilizzato anche dai documenti."))))}}).call(
|
||
|
\frac{R \cap A}{R}
|
||
|
`)))),e(a.r,{title:"Precisione"},e("p",null,"La ",e("b",null,"frazione dei documenti restituiti che sono rilevanti"),":"),e(a.q,null,c(u||(u=s`
|
||
|
\frac{R \cap A}{A}
|
||
|
`))))),e(a.s,{title:"Valutazione dei modelli"},e(a.r,{title:"Come funziona?"},e("p",null,"Si effettuano ",e("i",null,"test")," e si valutano precisione e richiamo ottenuti."),e("aside",null,e("u",null,"Test"),": verifica di un programma in cui l'output corretto è conosciuto a priori."),e("p",null,"Il modello IR ideale ha valori di richiamo e precisione di 1, ma nella realtà questi valori tendono ad essere ",e("b",null,"inversamente proporzionali"),".")),e(a.r,{title:"Misura a livelli di richiamo fissi"},e("p",null,"Si fissano un certo numero di livelli di richiamo desiderati e si misura la precisione che ha il modello in quei punti, creando una ",e("i",null,"curva di richiamo standard"),"."),e("p",null,"È possibile ottenere una ",e("i",null,"curva di richiamo interpolata")," prendendo per ogni punto il valore di massima precisione tra esso e i punti precedenti."),e(t.a,null,"Interpolata mi sembra un termine orribile... Non sarebbe molto meglio ",e("b",null,"monotonica"),"?")),e(a.r,{title:"Media o valore singolo?"},e("p",null,"È possibile misurare la ",e("i",null,"curva di richiamo media")," effettuando la media su più query dei vari valori, e la ",e("i",null,"curva di richiamo a valore singolo")," effettuando una query sola."),e("p",null,"Sono entrambe importanti per effettuare una valutazione, perchè la curva media potrebbe ",e("b",null,"mascherare problemi di specifiche query")," nei modelli."))),e(o.a,null))}}).call(this,i("hosL").h)}}]);
|
||
|
//# sourceMappingURL=route-GestioneDellInformazione.chunk.41add.esm.js.map
|