1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-22 16:04:21 +00:00
This commit is contained in:
Steffo 2020-11-22 16:45:33 +01:00
parent 5e9fff4d19
commit f1d91a2d2f
29 changed files with 287 additions and 122 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
docs/index.html generated
View file

@ -1 +1 @@
<!DOCTYPE html><html lang="it"><head><meta charset="utf-8"><title>appuntiweb</title><meta content="width=device-width,initial-scale=1" name="viewport"><meta property="og:image" content="/assets/opengraph.png"><link href="/src/assets/favicon.ico" rel="icon" type="image/x-icon"><link href="/src/assets/favicon.ico" rel="shortcut icon" type="image/x-icon"><style>body{background-color:#0d193b}</style><link rel="manifest" href="/manifest.json"><link rel="shortcut icon" href="/favicon.ico"><link href="/bundle.aa383.css" rel="preload" as="style"><noscript><link rel="stylesheet" href="/bundle.aa383.css"></noscript><script>function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}$loadcss("/bundle.aa383.css")</script></head><body><script type="__PREACT_CLI_DATA__">%7B%22preRenderData%22:%7B%22url%22:%22/%22%7D%7D</script><script nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" src="/bundle.ab2a1.esm.js" type="module"></script><script nomodule="" src="/polyfills.44e61.js"></script><script nomodule="" defer="defer" src="/bundle.86fdd.js"></script></body></html> <!DOCTYPE html><html lang="it"><head><meta charset="utf-8"><title>appuntiweb</title><meta content="width=device-width,initial-scale=1" name="viewport"><meta property="og:image" content="/assets/opengraph.png"><link href="/src/assets/favicon.ico" rel="icon" type="image/x-icon"><link href="/src/assets/favicon.ico" rel="shortcut icon" type="image/x-icon"><style>body{background-color:#0d193b}</style><link rel="manifest" href="/manifest.json"><link rel="shortcut icon" href="/favicon.ico"><link href="/bundle.aa383.css" rel="preload" as="style"><noscript><link rel="stylesheet" href="/bundle.aa383.css"></noscript><script>function $loadcss(u,m,l){(l=document.createElement('link')).rel='stylesheet';l.href=u;document.head.appendChild(l)}$loadcss("/bundle.aa383.css")</script></head><body><script type="__PREACT_CLI_DATA__">%7B%22preRenderData%22:%7B%22url%22:%22/%22%7D%7D</script><script nomodule="">!function(){var e=document,t=e.createElement("script");if(!("noModule"in t)&&"onbeforeload"in t){var n=!1;e.addEventListener("beforeload",function(e){if(e.target===t)n=!0;else if(!e.target.hasAttribute("nomodule")||!n)return;e.preventDefault()},!0),t.type="module",t.src=".",e.head.appendChild(t),t.remove()}}();</script><script crossorigin="anonymous" src="/bundle.8914a.esm.js" type="module"></script><script nomodule="" src="/polyfills.fcf38.js"></script><script nomodule="" defer="defer" src="/bundle.b48aa.js"></script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
{"/":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1}},"/AlgoritmiEStruttureDati":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-AlgoritmiEStruttureDati.chunk.382e2.esm.js":{"type":"script","weight":0.9}},"/ApprendimentoSistemiArtificiali":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-ApprendimentoSistemiArtificiali.chunk.5f370.esm.js":{"type":"script","weight":0.9},"route-ApprendimentoSistemiArtificiali.chunk.56f6a.css":{"type":"style","weight":0.9}},"/BasiDiDati":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-BasiDiDati.chunk.0c740.esm.js":{"type":"script","weight":0.9},"route-BasiDiDati.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/CalcoloNumerico":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-CalcoloNumerico.chunk.02917.esm.js":{"type":"script","weight":0.9},"route-CalcoloNumerico.chunk.c7ecd.css":{"type":"style","weight":0.9}},"/Fisica":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-Fisica.chunk.0025f.esm.js":{"type":"script","weight":0.9},"route-Fisica.chunk.ed9a8.css":{"type":"style","weight":0.9}},"/GestioneDellInformazione":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-GestioneDellInformazione.chunk.41add.esm.js":{"type":"script","weight":0.9},"route-GestioneDellInformazione.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/Home":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-Home.chunk.ab68a.esm.js":{"type":"script","weight":0.9},"route-Home.chunk.b342d.css":{"type":"style","weight":0.9}},"/LinguaggiDinamici":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-LinguaggiDinamici.chunk.0aab1.esm.js":{"type":"script","weight":0.9}},"/MingwInstall":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-MingwInstall.chunk.fba30.esm.js":{"type":"script","weight":0.9}},"/NetLogo":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-NetLogo.chunk.19a04.esm.js":{"type":"script","weight":0.9},"route-NetLogo.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/OttimizzazioneLineare":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-OttimizzazioneLineare.chunk.e7c42.esm.js":{"type":"script","weight":0.9},"route-OttimizzazioneLineare.chunk.a6d86.css":{"type":"style","weight":0.9}},"/ProtocolliDiRete":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-ProtocolliDiRete.chunk.42519.esm.js":{"type":"script","weight":0.9}},"/RipassoDiAlgebraLineare":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-RipassoDiAlgebraLineare.chunk.847a5.esm.js":{"type":"script","weight":0.9},"route-RipassoDiAlgebraLineare.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/Statistica":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-Statistica.chunk.59671.esm.js":{"type":"script","weight":0.9},"route-Statistica.chunk.9d494.css":{"type":"style","weight":0.9}},"/VlDiGeometria":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.ab2a1.esm.js":{"type":"script","weight":1},"route-VlDiGeometria.chunk.ba9ee.esm.js":{"type":"script","weight":0.9}}} {"/":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1}},"/AlgoritmiEStruttureDati":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-AlgoritmiEStruttureDati.chunk.382e2.esm.js":{"type":"script","weight":0.9}},"/ApprendimentoSistemiArtificiali":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-ApprendimentoSistemiArtificiali.chunk.5f370.esm.js":{"type":"script","weight":0.9},"route-ApprendimentoSistemiArtificiali.chunk.56f6a.css":{"type":"style","weight":0.9}},"/BasiDiDati":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-BasiDiDati.chunk.0c740.esm.js":{"type":"script","weight":0.9},"route-BasiDiDati.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/CalcoloNumerico":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-CalcoloNumerico.chunk.02917.esm.js":{"type":"script","weight":0.9},"route-CalcoloNumerico.chunk.c7ecd.css":{"type":"style","weight":0.9}},"/Fisica":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-Fisica.chunk.0025f.esm.js":{"type":"script","weight":0.9},"route-Fisica.chunk.ed9a8.css":{"type":"style","weight":0.9}},"/GestioneDellInformazione":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-GestioneDellInformazione.chunk.4f09e.esm.js":{"type":"script","weight":0.9},"route-GestioneDellInformazione.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/Home":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-Home.chunk.ab68a.esm.js":{"type":"script","weight":0.9},"route-Home.chunk.b342d.css":{"type":"style","weight":0.9}},"/LinguaggiDinamici":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-LinguaggiDinamici.chunk.0aab1.esm.js":{"type":"script","weight":0.9}},"/MingwInstall":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-MingwInstall.chunk.fba30.esm.js":{"type":"script","weight":0.9}},"/NetLogo":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-NetLogo.chunk.19a04.esm.js":{"type":"script","weight":0.9},"route-NetLogo.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/OttimizzazioneLineare":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-OttimizzazioneLineare.chunk.e7c42.esm.js":{"type":"script","weight":0.9},"route-OttimizzazioneLineare.chunk.a6d86.css":{"type":"style","weight":0.9}},"/ProtocolliDiRete":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-ProtocolliDiRete.chunk.42519.esm.js":{"type":"script","weight":0.9}},"/RipassoDiAlgebraLineare":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-RipassoDiAlgebraLineare.chunk.847a5.esm.js":{"type":"script","weight":0.9},"route-RipassoDiAlgebraLineare.chunk.1d0a7.css":{"type":"style","weight":0.9}},"/Statistica":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-Statistica.chunk.59671.esm.js":{"type":"script","weight":0.9},"route-Statistica.chunk.9d494.css":{"type":"style","weight":0.9}},"/VlDiGeometria":{"bundle.aa383.css":{"type":"style","weight":1},"bundle.8914a.esm.js":{"type":"script","weight":1},"route-VlDiGeometria.chunk.ba9ee.esm.js":{"type":"script","weight":0.9}}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
docs/sw-esm.js generated

File diff suppressed because one or more lines are too long

2
docs/sw.js generated

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
{ {
"name": "appuntiweb", "name": "appuntiweb",
"version": "0.10.4", "version": "0.10.5",
"license": "AGPL-3.0-or-later", "license": "AGPL-3.0-or-later",
"private": false, "private": false,
"repository": "https://github.com/Steffo99/appuntiweb", "repository": "https://github.com/Steffo99/appuntiweb",

File diff suppressed because one or more lines are too long

View file

@ -21,6 +21,14 @@ export default function (props) {
Un'applicazione che effettua IR si chiama <b>motore di ricerca</b>. Un'applicazione che effettua IR si chiama <b>motore di ricerca</b>.
</p> </p>
</Panel> </Panel>
<Panel title={"Documenti"}>
<p>
<b>Raggruppamenti di informazioni</b> che possono avere <b>varie forme</b>.
</p>
<Example>
Potrebbe essere un documento un file, oppure un gruppo di informazioni contenute in quel file (email, slides)...
</Example>
</Panel>
</Section> </Section>
</Fragment> </Fragment>
) )

View file

@ -1,6 +1,7 @@
import {Fragment} from "preact"; import {Fragment} from "preact";
import {Section, Panel, ILatex, BLatex, PLatex} from "bluelib"; import {Section, Panel, ILatex, BLatex, PLatex} from "bluelib";
import ToBeContinued from "../../components/ToBeContinued"; import ToBeContinued from "../../components/ToBeContinued";
import Example from "../../components/Example";
const r = String.raw; const r = String.raw;
@ -34,6 +35,12 @@ export default function () {
<p> <p>
Esse solitamente sono gli <b>articoli</b> e le <b>preposizioni</b>. Esse solitamente sono gli <b>articoli</b> e le <b>preposizioni</b>.
</p> </p>
<p>
Con l'avanzare degli anni, le stopwords hanno iniziato a <b>diminuire</b> sempre di più.
</p>
<Example>
I motori di ricerca moderni non usano nessuna stopword.
</Example>
</Panel> </Panel>
<Panel title={"3. Stemming dei token"}> <Panel title={"3. Stemming dei token"}>
<p> <p>
@ -43,7 +50,15 @@ export default function () {
Converte i <b>plurali in singolari</b>, <b>passati ai presenti</b>, e così via. Converte i <b>plurali in singolari</b>, <b>passati ai presenti</b>, e così via.
</p> </p>
</Panel> </Panel>
<Panel title={"4. Selezione degli index term"}> <Panel title={"4. Normalizzazione dei token"}>
<p>
Passo che <b>rimuove i caratteri speciali</b> contenuti nei token.
</p>
<p>
Duplica le parole separate da trattino nella versione con spazio e senza spazio, rimuove gli accenti non significativi, etc.
</p>
</Panel>
<Panel title={"5. Selezione degli index term"}>
<p> <p>
Passo che <b>seleziona i termini più importanti</b> della lista. Passo che <b>seleziona i termini più importanti</b> della lista.
</p> </p>
@ -57,7 +72,7 @@ export default function () {
<u>Tagger</u>: preciso ma poco dettagliato, effettua solo l'analisi logica. <u>Tagger</u>: preciso ma poco dettagliato, effettua solo l'analisi logica.
</aside> </aside>
</Panel> </Panel>
<Panel title={"5. Categorizzazione"}> <Panel title={"6. Categorizzazione"}>
<p> <p>
Passo che <b>classifica</b> il documento in una o più <b>categorie</b> del <i>thesaurus</i>. Passo che <b>classifica</b> il documento in una o più <b>categorie</b> del <i>thesaurus</i>.
</p> </p>

View file

@ -18,32 +18,32 @@ export default function () {
<u>Testo semi-statico</u>: un testo che viene aggiornato raramente. <u>Testo semi-statico</u>: un testo che viene aggiornato raramente.
</aside> </aside>
<p> <p>
Si crea un <i>vocabolario</i> dall'<b>insieme dei token</b>, e ad ogni <b>token</b> del vocabolario si associa una <b>lista di tutte le sue occorrenze</b> (<i>posting list</i>). Si crea un <i>vocabolario</i> dall'<b>insieme dei token</b>, e ad ogni <b>token</b> del vocabolario si associa una <b>lista ordinata di tutte le sue occorrenze</b> (<i>posting list</i>).
</p> </p>
<p> <p>
L'efficacia ed efficienza dell'indice dipendono dalle <i>strutture di indicizzazione</i> utilizzate per serializzarlo. L'efficacia ed efficienza dell'indice dipendono dalle <i>strutture di indicizzazione</i> utilizzate per serializzarlo.
</p> </p>
</Panel> </Panel>
</Section> </Section>
<Section title={"Strutture di indicizzazione"}> <Section>
<Panel title={"Sorted array"}> <Panel title={"Vocabolario"}>
<p> <p>
Struttura per rappresentare il vocabolario basata su un <b>array di puntatori</b> alle posting list. <b>Insieme</b> di <b>tutti i token</b> ricercabili.
</p> </p>
<p>
Può essere implementato con diverse strutture dati:
</p>
<ul>
<li>
<b>Array ordinato</b>, utilizzando la <b>bisezione</b> per gli accessi;
<Code>{r` <Code>{r`
ciao R1, R15, R123 ciao R1, R15, R123
steffo R1, R14 steffo R1, R14
ciano R1231 ciano R1231
`}</Code> `}</Code>
</Panel> </li>
<Panel title={"Trie"}> <li>
<p> <b>Prefix tree</b> (<i>trie</i>), utilizzando le <b>proprietà degli alberi</b> per gli accessi;
Struttura per rappresentare il vocabolario basata su un <b>albero dei prefissi dei token</b>,:
</p>
<ul>
<li>ogni arco corrisponde a <b>una lettera del prefisso</b>;</li>
<li>ogni foglia corrisponde a <b>un token</b> e contiene un puntatore alla sua <b>posting list</b>.</li>
</ul>
<Code>{r` <Code>{r`
- [root] - [root]
- c - c
@ -59,32 +59,56 @@ export default function () {
- R1 - R1
- R14 - R14
`}</Code> `}</Code>
</Panel> </li>
<Panel title={"B+ tree"}> <li>
<p> <b>Suffix tree</b>, come il prefix tree ma partendo dall'ultima lettera
Struttura per rappresentare il vocabolario che <b>occupa più spazio di un albero</b> ma permette di effettuare <b>certe operazioni più velocemente</b>. </li>
</p> <li>
<b>B+ tree</b>, utilizzando le <b>proprietà degli alberi B+</b> per gli accessi
<Example> <Example>
<Link href={"https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html"}>Visualizzazione di un B+ tree</Link> <Link href={"https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html"}>Visualizzazione di un B+ tree</Link>
</Example> </Example>
<Example> <Example>
L'abbiamo fatta in <BaseLink href={"/basididati"}>Basi di dati</BaseLink>! È la stessa struttura utilizzata dai <BaseLink href={"/basididati"}>database relazionali</BaseLink>.
</Example> </Example>
</li>
<li>
<b>Dizionario</b>, utilizzando gli <b>hash</b> per gli accessi.
</li>
</ul>
<p>
Per permettere <i>pattern-based query</i>, è possibile utilizzare <b>più vocabolari</b> per un singolo documento.
</p>
</Panel>
<Panel title={"Posting list"}>
<p>
<b>Insieme</b> di <b>tutte le occorrenze</b> di un determinato token.
</p>
<p>
Viene implementata attraverso una <b>lista ordinata</b> (<i>sorted list</i>).
</p>
<p>
Essendo ordinata, è efficiente <ILatex>{r`O(n + m)`}</ILatex> nelle operazioni di <b>unione</b> e <b>intersezione</b> tra più posting list: si mantiene su ognuna un <b>cursore</b> che avanza quando l'occorrenza a cui punta è stata superata.
</p>
<p>
Non è però efficiente nelle operazioni di <b>negazione</b>.
</p>
<p>
È possibile aggiungere <i>skip pointers</i> alle posting list, in modo da rendere più efficiente l'intersezione.
</p>
</Panel> </Panel>
</Section> </Section>
<Section title={"Utilizzo dell'indice"}> <Section>
<Panel title={"Passi"}> <Panel title={"Utilizzo dell'indice"}>
<ol>
<li><u>Vocabulary search</u>: si cercano <b>individualmente</b> i termini della query nel vocabolario</li>
<li><u>Occurences retrieval</u>: si <b>raccolgono le posting list</b> dei vari termini</li>
<li><u>Occurences manipulation</u>: si manipolano i dati delle posting list in modo da risolvere le query, restituendo quindi un <b>sottoinsieme delle occorrenze</b></li>
</ol>
<p> <p>
In base alla struttura utilizzata, potrebbe non essere sempre possibile effettuare il terzo passo. Per effettuare una ricerca utilizzando l'indice, sono necessari i seguenti passi:
</p> </p>
<Example> <ol>
Non è possibile cercare prefissi se è stato utilizzato l'hashing! <li>Si <b>cercano</b> individualmente i termini della query nel vocabolario</li>
</Example> <li>Si <b>accede</b> alle posting list dei vari termini</li>
<li>Si <b>effettuano</b> operazioni logiche sui dati delle posting list</li>
<li>Si <b>restituisce</b> il sottoinsieme di token risultante</li>
</ol>
</Panel> </Panel>
</Section> </Section>
</Fragment> </Fragment>

View file

@ -52,7 +52,7 @@ export default function () {
Ha una <b>precisione perfetta</b>, ma richiede query ben preparate e specifiche. Ha una <b>precisione perfetta</b>, ma richiede query ben preparate e specifiche.
</p> </p>
<p> <p>
È anche <b>facile da implementare</b>. È anche facile da implementare utilizzando una <b>posting list</b>.
</p> </p>
</Panel> </Panel>
<Panel title={"Modello vettoriale"}> <Panel title={"Modello vettoriale"}>
@ -98,9 +98,9 @@ export default function () {
</p> </p>
<PLatex>{r` <PLatex>{r`
\begin{cases} \begin{cases}
a \cap b = \min(a, b)\\ a \land b = \min(a, b)\\
a \cup b = \max(a, b)\\ a \lor b = \max(a, b)\\
\not a = 1 - a \neg\ a = 1 - a
\end{cases} \end{cases}
`}</PLatex> `}</PLatex>
</Panel> </Panel>

View file

@ -1,5 +1,5 @@
import {Fragment} from "preact"; import {Fragment} from "preact";
import {Section, Panel, ILatex, BLatex, PLatex} from "bluelib"; import {Section, Panel, ILatex, BLatex, PLatex, BoxColors} from "bluelib";
import Example from "../../components/Example"; import Example from "../../components/Example";
import ToBeContinued from "../../components/ToBeContinued"; import ToBeContinued from "../../components/ToBeContinued";
@ -27,8 +27,8 @@ export default function () {
`}</PLatex> `}</PLatex>
</Panel> </Panel>
</Section> </Section>
<Section title={"Valutazione dei modelli"}> <Section title={"Precisione e richiamo"}>
<Panel title={"Come funziona?"}> <Panel title={"Valutazione dei modelli IR"}>
<p> <p>
Si effettuano <i>test</i> e si valutano precisione e richiamo ottenuti. Si effettuano <i>test</i> e si valutano precisione e richiamo ottenuti.
</p> </p>
@ -38,6 +38,12 @@ export default function () {
<p> <p>
Il modello IR ideale ha valori di richiamo e precisione di 1, ma nella realtà questi valori tendono ad essere <b>inversamente proporzionali</b>. Il modello IR ideale ha valori di richiamo e precisione di 1, ma nella realtà questi valori tendono ad essere <b>inversamente proporzionali</b>.
</p> </p>
<p>
Un fattore significativo nel richiamo e nella precisione è la <b>forma del documento</b>.
</p>
<Example>
Libri interi, capitoli, pagine o frasi; possono essere tutti documenti, cambia solo la loro <i>granularità</i>.
</Example>
</Panel> </Panel>
<Panel title={"Misura a livelli di richiamo fissi"}> <Panel title={"Misura a livelli di richiamo fissi"}>
<p> <p>
@ -58,8 +64,71 @@ export default function () {
Sono entrambe importanti per effettuare una valutazione, perchè la curva media potrebbe <b>mascherare problemi di specifiche query</b> nei modelli. Sono entrambe importanti per effettuare una valutazione, perchè la curva media potrebbe <b>mascherare problemi di specifiche query</b> nei modelli.
</p> </p>
</Panel> </Panel>
<Panel title={"Mean Average Precision (MAP)"}>
<p>
La media tra i valori di più curve di richiamo.
</p>
<p>
È utile per le valutazioni in cui l'utente sta cercando <b>più documenti rilevanti</b> alla volta.
</p>
</Panel>
<Panel title={"R-recall e R-precision"}>
<p>
Valori di recall e precision riguardo i primi <ILatex>{r`R`}</ILatex> documenti restituiti.
</p>
<Example>
La prima pagina di Google (10 documenti) considererà i valori di 10-recall e 10-precision.
</Example>
</Panel>
</Section>
<Section title={"Misure aggregate"}>
<Panel title={"Misura F"}>
<p>
È anche detta <i>media armonica</i>.
</p>
<p>
Un <b>singolo valore</b> che tiene conto sia della precisione <ILatex>{r`p`}</ILatex> sia del richiamo <ILatex>{r`r`}</ILatex>:
</p>
<PLatex>{r`
F = \frac{2}{\frac{1}{p} + \frac{1}{r}}
`}</PLatex>
</Panel>
<Panel title={"Misura E"}>
<p>
Una versione più configurabile della Misura F che permette di <b>dare priorità</b> <ILatex>{r`b`}</ILatex> a precisione (<ILatex>{r`b > 1`}</ILatex>) o a richiamo (<ILatex>{r`b < 1`}</ILatex>) in base alle proprie esigenze:
</p>
<PLatex>{r`
E = 1 - \frac{1 + b^2}{\frac{b^2}{r} + \frac{1}{p}}
`}</PLatex>
</Panel>
</Section>
<Section title={"Misure cumulative"}>
<Panel title={"Discounted Cumulative Gain (DCG)"}>
<p>
Misura per valutare i motori di ricerca online che tiene conto dell'<b>ordine in cui vengono restituiti i documenti</b>.
</p>
<p>
Si basa su <b>valutazioni di rilevanza</b> e su <b>pesi posizionali</b> dei risultati.
</p>
<Example>
Valuta quanto è stata utile questa ricerca:
<span style={"font-size: xx-large; padding-left: 8px;"}>
</span>
</Example>
<Example>
La valutazione del primo risultato viene moltiplicata per <ILatex>{r`\frac{1}{\log_2(1)}`}</ILatex>, la seconda per <ILatex>{r`\frac{1}{\log_2(2)}`}</ILatex>, la terza per <ILatex>{r`\frac{1}{\log_2(3)}`}</ILatex> e così via.
</Example>
</Panel>
<Panel title={"Normalized DCG (NDCG)"} color={BoxColors.YELLOW}>
<p>
Miglioramento alla DCG che supporta <b>quantità di risultati differenti</b>.
</p>
<i>
Non dice la formula, e l'esempio non esemplifica un bel niente...
</i>
</Panel>
</Section> </Section>
<ToBeContinued/>
</Fragment> </Fragment>
) )
} }

View file

@ -0,0 +1,43 @@
import {Fragment} from "preact";
import {Section, Panel, ILatex, BLatex, PLatex, Image} from "bluelib";
import Example from "../../components/Example";
import Link from "../../components/Link";
const r = String.raw;
export default function () {
return (
<Fragment>
<Section title={"Summaries"}>
<Panel title={"Cosa sono?"}>
<p>
Le summary sono <b>brevi spezzoni di testo</b> che permettono all'utente di capire quali documenti siano rilevanti per lui.
</p>
<Example>
<Image src={"https://i.imgur.com/8aMrIDY.png"}/>
</Example>
</Panel>
<Panel title={"Static summaries"}>
<p>
Summary fisse che dipendono <b>solo dal documento</b>.
</p>
<p>
Possono essere generate dalle <b>prime parole del documento</b>, dalle <b>frasi più importanti</b> o da <b>metadati</b> del documento stesso (<Link href={"https://ogp.me/"}>OpenGraph</Link>).
</p>
<Example>
Opinione personale: le summary generate da OpenGraph solitamente fanno schifo :(
</Example>
</Panel>
<Panel title={"Dynamic summaries"}>
<p>
Summary che dipendono <b>sia dal documento</b>, <b>sia dalla query effettuata</b>.
</p>
<p>
Generalmente, estraggono le frasi vicino alle occorrenze dei termini della query.
</p>
</Panel>
</Section>
</Fragment>
)
}

View file

@ -9,6 +9,7 @@ import AnalisiLessicale from "./07_AnalisiLessicale";
import Indexing from "./08_Indexing"; import Indexing from "./08_Indexing";
import Modeling from "./09_Modeling"; import Modeling from "./09_Modeling";
import Evaluation from "./10_Evaluation"; import Evaluation from "./10_Evaluation";
import Presentation from "./11_Presentation";
export default function () { export default function () {
@ -26,6 +27,7 @@ export default function () {
<Indexing/> <Indexing/>
<Modeling/> <Modeling/>
<Evaluation/> <Evaluation/>
<Presentation/>
</div> </div>
) )
} }