1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-25 09:24:21 +00:00

💥 Add / change some things

This commit is contained in:
Steffo 2021-07-11 17:10:04 +02:00
parent b61d243ba7
commit 4872e7d187
Signed by: steffo
GPG key ID: 6965406171929D01
5 changed files with 235 additions and 276 deletions

View file

@ -3,16 +3,24 @@ import PropTypes from "prop-types"
import style from "./Todo.module.css" import style from "./Todo.module.css"
export default function Todo({ children }) { export default function Todo({ children, block }) {
useEffect(() => { useEffect(() => {
console.info("TODO:", { children }) console.info("TODO:", { children })
}, []) }, [])
if(block) {
return (
<div className={style.todoblock}>{children}</div>
)
}
else {
return ( return (
<span className={style.todo}>🚧 {children}</span> <span className={style.todo}>🚧 {children}</span>
) )
}
} }
Todo.propTypes = { Todo.propTypes = {
children: PropTypes.node, children: PropTypes.node,
block: PropTypes.bool,
} }

View file

@ -4,3 +4,9 @@
padding: 1px; padding: 1px;
border-radius: 2px; border-radius: 2px;
} }
.todoblock {
background-color: #292F33;
border: 2px dashed #FFCC4D;
color: #FFCC4D;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

View file

@ -34,6 +34,8 @@ import Image from "../../components/Image"
import ImgDocuments from "./img/documents.png" import ImgDocuments from "./img/documents.png"
import ImgResult from "./img/result.png" import ImgResult from "./img/result.png"
import ImgQuery from "./img/query.png" import ImgQuery from "./img/query.png"
import ImgReplacement from "./img/replacement.png"
import ImgSuggestion from "./img/suggestion.png"
const r = String.raw const r = String.raw
@ -69,6 +71,7 @@ export default function Gestinfo() {
<LI><Anchor href={"https://www.wikipedia.org/"}>📰 Wikipedia</Anchor></LI> <LI><Anchor href={"https://www.wikipedia.org/"}>📰 Wikipedia</Anchor></LI>
<LI><Anchor href={"https://gitlab.com/2429571/gestione-informazione"}>🗒 Appunti open-source di Sharon Guerzoni</Anchor></LI> <LI><Anchor href={"https://gitlab.com/2429571/gestione-informazione"}>🗒 Appunti open-source di Sharon Guerzoni</Anchor></LI>
<LI><Anchor href={"https://www.pearson.com/uk/educators/higher-education-educators/program/Baeza-Yates-Modern-Information-Retrieval-The-Concepts-and-Technology-behind-Search-2nd-Edition/PGM804983.html"}>📘 Libro di testo consigliato</Anchor></LI> <LI><Anchor href={"https://www.pearson.com/uk/educators/higher-education-educators/program/Baeza-Yates-Modern-Information-Retrieval-The-Concepts-and-Technology-behind-Search-2nd-Edition/PGM804983.html"}>📘 Libro di testo consigliato</Anchor></LI>
<LI><Anchor href={"https://nlp.stanford.edu/IR-book/"}>🌐 Introduction to Information Retrieval</Anchor></LI>
</ul> </ul>
</Box> </Box>
</Split> </Split>
@ -314,26 +317,18 @@ export default function Gestinfo() {
Gli algoritmi che realizzano questo passo sono detti rispettivamente <B><I>stemmer</I></B> o <B><I>lemmatizer</I></B>. Gli algoritmi che realizzano questo passo sono detti rispettivamente <B><I>stemmer</I></B> o <B><I>lemmatizer</I></B>.
</P> </P>
<Aside> <Aside>
Generalmente sono implementati tramite <Help Generalmente sono implementati tramite <Help text={"Dizionari che associano ogni parola alla sua forma base."}>lookup tables</Help>, ma i motori di ricerca più avanzati <Anchor href={"https://en.wikipedia.org/wiki/Stemming#Algorithms"}>possono avere implementazioni anche più complesse</Anchor>.
text={"Dizionari che associano ogni parola alla sua forma base."}
>lookup tables</Help>, ma i
motori di ricerca più avanzati <Anchor
href={"https://en.wikipedia.org/wiki/Stemming#Algorithms"}
>possono avere implementazioni anche
più complesse</Anchor>.
</Aside> </Aside>
</Box> </Box>
<Box title={"5. Selezione degli index term"}> <Box title={"5. Selezione degli index term"}>
<P> <P>
Il motore di ricerca stabilisce la <B>relativa importanza</B> di ciascun token dell'insieme, in Il motore di ricerca stabilisce la <B>relativa importanza</B> di ciascun token dell'insieme, in modo da determinare più facilmente in seguito la rilevanza del documento in cui si trovano.
modo da determinare più facilmente in seguito la rilevanza del documento in cui si trovano.
</P> </P>
<P> <P>
I termini più importanti di un documento sono detti <B><I>index term</I></B>. I termini più importanti di un documento sono detti <B><I>index term</I></B>.
</P> </P>
<Aside> <Aside>
<Token>appunti</Token> <Token>universitari</Token> <Token indexTerm={true}>appunti</Token> <Token>appunti</Token> <Token>universitari</Token> <Token indexTerm={true}>appunti</Token> <Token>universitari</Token>
<Token>universitari</Token>
</Aside> </Aside>
<P> <P>
Essi solitamente sono individuati da <B><I>parser</I></B> e <B><I>scanner</I></B>, che Essi solitamente sono individuati da <B><I>parser</I></B> e <B><I>scanner</I></B>, che
@ -342,11 +337,13 @@ export default function Gestinfo() {
</Box> </Box>
<Box title={"6. Categorizzazione"}> <Box title={"6. Categorizzazione"}>
<P> <P>
Opzionalmente, l'intero documento può essere inserito in una o più <B>categorie</B> di Opzionalmente, l'intero documento può essere inserito in una o più <B>categorie</B> di un <B><I>thesaurus</I></B>, una gerarchia predeterminata di categorie di documenti.
un <B><I>thesaurus</I></B>, una gerarchia predeterminata di categorie di documenti.
</P> </P>
<Aside> <Aside>
Un esempio di thesaurus per delle sculture: Un esempio di thesaurus per delle sculture:
<ul>
<LI>
[Radice]
<ul> <ul>
<LI> <LI>
Materiale Materiale
@ -373,6 +370,8 @@ export default function Gestinfo() {
</ul> </ul>
</LI> </LI>
</ul> </ul>
</LI>
</ul>
</Aside> </Aside>
<Aside> <Aside>
Un (simil-)thesaurus generale per l'inglese è <Anchor Un (simil-)thesaurus generale per l'inglese è <Anchor
@ -393,8 +392,7 @@ export default function Gestinfo() {
<Token>uccello</Token> e <Token>pennuto</Token> sono molto simili, in quanto sono sinonimi <Token>uccello</Token> e <Token>pennuto</Token> sono molto simili, in quanto sono sinonimi
</P> </P>
<P> <P>
<Token>merlo</Token> e <Token>piccione</Token> sono abbastanza simili, in quanto sono <Token>merlo</Token> e <Token>piccione</Token> sono abbastanza simili, in quanto sono entrambi uccelli, ma non sono sinonimi
entrambi uccelli, ma non sono sinonimi
</P> </P>
<P> <P>
<Token>merlo</Token> e <Token>ala</Token> non sono per niente simili <Token>merlo</Token> e <Token>ala</Token> non sono per niente simili
@ -406,20 +404,17 @@ export default function Gestinfo() {
</Box> </Box>
<Box title={"A cosa serve?"}> <Box title={"A cosa serve?"}>
<P> <P>
La <B><I>word sense disambiguation</I></B> sfrutta la <B>similitudine</B> tra l'ononimo e i <B>token La <B><I>word sense disambiguation</I></B> sfrutta la <B>similitudine</B> tra l'ononimo e i <B>token circostanti</B> per stabilire il significato corretto.
circostanti</B> per stabilire il significato corretto.
</P> </P>
<P> <P>
Talvolta alla similitudine sono aggiunte anche altre informazioni, come la <B>distanza</B> tra i Talvolta alla similitudine sono aggiunte anche altre informazioni, come la <B>distanza</B> tra i token e dati provenienti da <B>sorgenti esterne</B>.
token e dati provenienti da <B>sorgenti esterne</B>.
</P> </P>
</Box> </Box>
</Split> </Split>
<Split> <Split>
<Box title={"Similitudine path-based"}> <Box title={"Similitudine path-based"}>
<P> <P>
Un modo di misurare la similitudine tra due token basato sulla loro <B>posizione</B> all'interno Un modo di misurare la similitudine tra due token basato sulla loro <B>posizione</B> all'interno del <B>thesaurus</B>.
del <B>thesaurus</B>.
</P> </P>
<Split> <Split>
<Box title={"Path-distance"}> <Box title={"Path-distance"}>
@ -443,14 +438,14 @@ export default function Gestinfo() {
</Box> </Box>
</Split> </Split>
</Box> </Box>
</Split>
<Split>
<Box title={<span>Similitudine <IC/>-based</span>}> <Box title={<span>Similitudine <IC/>-based</span>}>
<P> <P>
L'<IC/> è una misura <B>probabilistica</B> di quanto un token sia inaspettato all'interno di un L'<IC/> è una misura <B>probabilistica</B> di quanto un token sia inaspettato all'interno di un documento.
documento.
</P> </P>
<P> <P>
Definendo <LatexMath>{`P(t)`}</LatexMath> come la probabilità che un <B>token scelto a Definendo <LatexMath>{`P(t)`}</LatexMath> come la probabilità che un <B>token scelto a caso</B> sia <LatexMath>{`t`}</LatexMath>, l'<IC/> sarà:
caso</B> sia <LatexMath>{`t`}</LatexMath>, l'<IC/> sarà:
</P> </P>
<B><LatexMath block={true}>{`ic(t) = - \\log \\left( P(t) \\right)`}</LatexMath></B> <B><LatexMath block={true}>{`ic(t) = - \\log \\left( P(t) \\right)`}</LatexMath></B>
<P> <P>
@ -511,13 +506,10 @@ export default function Gestinfo() {
</Aside> </Aside>
<Box title={"Matrice di distanza"}> <Box title={"Matrice di distanza"}>
<P> <P>
Matrice costruita per calcolare la distanza di Levenshtein con un algoritmo Matrice costruita per calcolare la distanza di Levenshtein con un algoritmo greedy:
greedy:
</P> </P>
<Aside> <Aside>
<Anchor <Anchor href={"https://gist.github.com/Steffo99/ceeb7ed61a7b6a12a783232c0230ce70"}>Guarda
href={"https://gist.github.com/Steffo99/ceeb7ed61a7b6a12a783232c0230ce70"}
>Guarda
un esempio documentato in Python qui!</Anchor> un esempio documentato in Python qui!</Anchor>
</Aside> </Aside>
</Box> </Box>
@ -530,82 +522,66 @@ export default function Gestinfo() {
<LI><B>Trasposizione</B> di un singolo carattere</LI> <LI><B>Trasposizione</B> di un singolo carattere</LI>
</ul> </ul>
<Aside> <Aside>
La distanza di Damerau-Levenshtein La distanza di Damerau-Levenshtein tra <Token>pierta</Token> e <Token>pietra</Token> è 1.
tra <Token>pierta</Token> e <Token>pietra</Token> è 1.
</Aside> </Aside>
</Box> </Box>
<Box title={"Weighted distance"}> <Box title={"Weighted distance"}>
<P> <P>
Differenzia i costi delle varie operazioni, diffenenziando ad esempio in base al Differenzia i costi delle varie operazioni, diffenenziando ad esempio in base al carattere sostituito.
carattere sostituito.
</P> </P>
<Aside> <Aside>
<code>m</code> ed <code>n</code> sono vicini sulla tastiera e quindi la loro <code>m</code> ed <code>n</code> sono vicini sulla tastiera e quindi la loro sostituzione "costa" meno, rispetto a <code>q</code> e <code>p</code>.
sostituzione "costa" meno, rispetto a <code>q</code> e <code>p</code>.
</Aside> </Aside>
</Box> </Box>
</Split> </Split>
<P> <P>
Calcolare l'edit distance <LatexMath>{`E`}</LatexMath> tra due token è un processo Calcolare l'edit distance <LatexMath>{`E`}</LatexMath> tra due token è un processo computazionalmente <B>molto costoso <LatexMath>{`O(n^2)`}</LatexMath></B>.
computazionalmente <B>molto costoso <LatexMath>{`O(n^2)`}</LatexMath></B>.
</P> </P>
<Box title={"Filtraggio"}> <Box title={"Pre-filtraggio"}>
<P> <P>
È possibile evitare di calcolare l'edit distance per la maggior parte dei termini del È possibile evitare di calcolare l'edit distance per la maggior parte dei termini del
vocabolario <I>filtrandoli</I> su <B>criteri più veloci</B>. vocabolario <I>pre-filtrandoli</I> su <B>criteri computazionalmente più veloci</B>.
</P> </P>
<Split> <Split>
<Box title={"Lunghezza"}> <Box title={"Differenza di lunghezza"}>
<Aside> <Aside>
L'edit distance come minimo è la differenza tra il numero di caratteri dei due L'edit distance come minimo è la differenza tra il numero di caratteri dei due
token. token.
</Aside> </Aside>
<B><LatexMath block={true}>{r`\left| size(X) - size(Y) \right| \leq k`}</LatexMath></B> <B><LatexMath block={true}>{r`E \geq \left| size(X) - size(Y) \right|`}</LatexMath></B>
<LatexMath block={true}>{r`\Updownarrow`}</LatexMath>
<LatexMath block={true}>{r`E \leq k`}</LatexMath>
</Box> </Box>
<Box title={"Conteggio"}> <Box title={<span>Differenza di <LatexMath>{r`q`}</LatexMath>-grammi</span>}>
<Aside> <Aside>
Meno <LatexMath>{r`q`}</LatexMath>-grammi hanno in comune due token, più sarà L'edit distance è limitata superiormente dal numero di <LatexMath>{r`q`}</LatexMath>-grammi per cui i due token differiscono.
alta la loro edit distance.
</Aside> </Aside>
<B><LatexMath <Todo block={true}>
block={true} <B><LatexMath block={true}>{r`E \geq \frac{\max ( size(X), size(Y) ) - size(X \cap Y) + q - 1}{q}`}</LatexMath></B>
>{r`size(X \cap Y) = \max(size(X),\ size(Y)) + q - 1 - (k \cdot q)`}</LatexMath></B> </Todo>
<LatexMath block={true}>{r`\Updownarrow`}</LatexMath>
<LatexMath block={true}>{r`E \leq k`}</LatexMath>
</Box> </Box>
</Split> <Box title={<span>Posizione dei <LatexMath>{r`q`}</LatexMath>-grammi</span>}>
<Box title={"Posizione"}>
<Aside> <Aside>
Token i cui <LatexMath>{`q`}</LatexMath>-grammi si trovano in posizioni diverse Token i cui <LatexMath>{`q`}</LatexMath>-grammi si trovano in posizioni diverse avranno edit distance più alte.
avranno edit distance più alte.
</Aside> </Aside>
<P> <P>
Richiede che venga tenuto traccia delle posizione dei <LatexMath>{`q`}</LatexMath>-grammi, Richiede che venga tenuto traccia delle posizione dei <LatexMath>{`q`}</LatexMath>-grammi, e prevede che i <LatexMath>{`q`}</LatexMath>-grammi a <B>più di <LatexMath>{`k`}</LatexMath> posizioni di distanza</B> non vengano considerati uguali.
e prevede che i <LatexMath>{`q`}</LatexMath>-grammi a <B>più
di <LatexMath>{`k`}</LatexMath> posizioni di distanza</B> non vengano considerati
uguali.
</P> </P>
</Box> </Box>
</Split>
</Box> </Box>
</Box> </Box>
</Box> </Box>
<Box title={<span>Tramite overlap dei <LatexMath>{`q`}</LatexMath>-grammi</span>}> <Box title={<span>Tramite overlap dei <LatexMath>{`q`}</LatexMath>-grammi</span>}>
<P> <P>
Dato un token, si <B>ordinano</B> i token del vocabolario in base al numero Dato un token, si <B>ordinano</B> i token del vocabolario in base al numero di <LatexMath>{`q`}</LatexMath>-grammi in comune.
di <LatexMath>{`q`}</LatexMath>-grammi in comune.
</P> </P>
<Box title={"Coefficiente di Jaccard"}> <Box title={"Coefficiente di Jaccard"}>
<P> <P>
<B>Misura di overlap</B> tra due insiemi <B>Misura di overlap</B> tra due insiemi di <LatexMath>{`q`}</LatexMath>-grammi <LatexMath>{`X`}</LatexMath> e <LatexMath>{`Y`}</LatexMath>:
di <LatexMath>{`q`}</LatexMath>-grammi <LatexMath>{`X`}</LatexMath> e <LatexMath>{`Y`}</LatexMath>:
</P> </P>
<B><LatexMath block={true}>{r`Jaccard = \frac{size(X \cap Y)}{size(X \cup Y)}`}</LatexMath></B> <B><LatexMath block={true}>{r`Jaccard = \frac{size(X \cap Y)}{size(X \cup Y)}`}</LatexMath></B>
<Aside> <Aside>
<P> <P>
Usando trigrammi, il <I>coefficiente di Usando trigrammi, il <I>coefficiente di Jaccard</I> tra <Token>novembre</Token> e <Token>dicembre</Token> è:
Jaccard</I> tra <Token>novembre</Token> e <Token>dicembre</Token> è:
</P> </P>
<ul> <ul>
<LI> <LI>
@ -647,52 +623,66 @@ export default function Gestinfo() {
corrispondente <B>pronuncia</B> ed effettuano match sulla base di quest'ultima. corrispondente <B>pronuncia</B> ed effettuano match sulla base di quest'ultima.
</P> </P>
<Aside> <Aside>
Un metodo usato per correggere errori tipografici durante confronto di nomi propri è il <Anchor Un metodo usato per correggere errori tipografici durante confronto di nomi propri è il <Anchor href={"https://en.wikipedia.org/wiki/Soundex"}>Soundex</Anchor>, un algoritmo che converte le parole in codici rappresentanti i loro suoni.
href={"https://en.wikipedia.org/wiki/Soundex"}
>Soundex</Anchor>, un algoritmo che converte le
parole in codici rappresentanti i loro suoni.
</Aside> </Aside>
</Box> </Box>
<Box title={"Proposte di correzione"}>
<P> <P>
Scoperti i token "vicini", si può optare per varie soluzioni: Scoperti i token "vicini", si può optare per varie soluzioni:
</P> </P>
<ul> <Split>
<LI> <Box title={"Sostituzione"}>
<B>Mostrare</B> le possibili correzioni all'utente <P>
<I>Sostituire</I> automaticamente il token originale con il più vicino ad esso.
</P>
<P>
Richiede che le possibili correzioni siano <B>ordinate</B>.
</P>
<Aside> <Aside>
È poco user-friendly, perchè richiede più interazione. <P>
È quello che fa di default Google:
</P>
<Image src={ImgReplacement} description={"Google ha corretto il token errato per me."}/>
</Aside> </Aside>
</LI> </Box>
<LI> <Box title={"Visualizzazione"}>
<B>Aggiungere</B> i token vicini alla query <P>
<i>Visualizzare</i> l'errore all'utente, e permettergli di correggerlo rapidamente.
</P>
<P>
Richiede più <B>interazione</B> da parte dell'utente.
</P>
<Aside> <Aside>
Rallenta la ricerca, perchè aumentano i token nella query. <P>
È quello che fa Google quando non è sicuro della correzione proposta:
</P>
<Image src={ImgSuggestion} description={"Google suggerisce di correggere il token errato."}/>
</Aside> </Aside>
</LI> </Box>
<LI> <Box title={"Aggiunta"}>
<B>Sostituire</B> il token originale con il più vicino ad esso <P>
<Aside> <i>Aggiungere</i> automaticamente alla query i token corretti.
Richiede un meccanismo di ranking dei token. </P>
</Aside> <P>
</LI> Richiede più <B>tempo di ricerca</B>, perchè nella query saranno presenti più token.
</ul> </P>
</Box>
</Split>
</Box>
</Box> </Box>
<Box title={"Correzione contestualizzata"}> <Box title={"Correzione contestualizzata"}>
<P> <P>
È possibile confrontare ogni token con il contesto dei termini circostanti per rilevare ulteriori È possibile confrontare ogni token con il contesto dei termini circostanti per rilevare ulteriori errori.
errori.
</P> </P>
<Split> <Split>
<Box title={"Conteggio dei risultati"}> <Box title={"Conteggio dei risultati"}>
<P> <P>
Un metodo che prevede di <B>enumerare</B> varie alternative aventi contesti concordi e di Un metodo che prevede di <B>enumerare</B> varie alternative aventi contesti concordi e di restituire quella con il <B>maggior numero di risultati</B>.
restituire quella con il <B>maggior numero di risultati</B>.
</P> </P>
</Box> </Box>
<Box title={"Conteggio delle ricerche"}> <Box title={"Conteggio delle ricerche"}>
<P> <P>
Un metodo che prevede di <B>enumerare</B> varie alternative aventi contesti concordi e di Un metodo che prevede di <B>enumerare</B> varie alternative aventi contesti concordi e di restituire quella che <B>è stata ricercata più volte</B>.
restituire quella che <B>è stata ricercata più volte</B>.
</P> </P>
</Box> </Box>
</Split> </Split>
@ -700,25 +690,21 @@ export default function Gestinfo() {
<Split title={"Indici"}> <Split title={"Indici"}>
<Box title={"Cosa sono?"}> <Box title={"Cosa sono?"}>
<P> <P>
Gli indici sono <B>strutture dati</B> in cui vengono inseriti i documenti e i loro token dopo Gli indici sono <B>strutture dati</B> in cui vengono inseriti i documenti e i loro token dopo essere stati preparati.
essere stati preparati.
</P> </P>
<P> <P>
L'<B><I>indicizzazione</I></B> è la procedura che crea e mantiene aggiornati uno o L'<B><I>indicizzazione</I></B> è la procedura che crea e mantiene aggiornati uno o più <B><I>indici</I></B>.
più <B><I>indici</I></B>.
</P> </P>
</Box> </Box>
<Box title={"A cosa servono?"}> <Box title={"A cosa servono?"}>
<P> <P>
Sono fondamentali per <B>velocizzare notevolmente</B> le ricerche e per permettere certi tipi di Sono fondamentali per <B>velocizzare notevolmente</B> le ricerche e per permettere certi tipi di operazioni sulle query.
operazioni sulle query.
</P> </P>
</Box> </Box>
</Split> </Split>
<Box title={"Matrice di incidenza"}> <Box title={"Matrice di incidenza"}>
<P> <P>
Un indice basato sulla costruzione di una matrice in cui le righe sono i <B>documenti</B>, le Un indice basato sulla costruzione di una matrice in cui le righe sono i <B>documenti</B>, le colonne i <B>token</B> e le celle valori booleani che descrivono se il token compare nel documento.
colonne i <B>token</B> e le celle valori booleani che descrivono se il token compare nel documento.
</P> </P>
<P> <P>
È terribilmente <B>inefficiente</B> in termini di spazio, perchè la matrice è <B>sparsa</B>. È terribilmente <B>inefficiente</B> in termini di spazio, perchè la matrice è <B>sparsa</B>.
@ -729,8 +715,7 @@ export default function Gestinfo() {
</Box> </Box>
<Box title={"Inverted index"}> <Box title={"Inverted index"}>
<P> <P>
L'<B>indice</B> più comune, costituito da tante <B><I>posting list</I></B> raggiungibili attraverso L'<B>indice</B> più comune, costituito da tante <B><I>posting list</I></B> raggiungibili attraverso un <B><I>vocabolario</I></B>.
un <B><I>vocabolario</I></B>.
</P> </P>
<Split> <Split>
<Box title={"Posting list"}> <Box title={"Posting list"}>
@ -741,15 +726,15 @@ export default function Gestinfo() {
Può essere realizzata in due modi: Può essere realizzata in due modi:
</P> </P>
<ul> <ul>
<LI><U>Document-based</U>: lista ordinata di documenti con la <B>frequenza del token</B> in <LI>
essi</LI> <U>Document-based</U>: lista ordinata di documenti con la <B>frequenza del token</B> in essi
<LI><U>Word-based</U>: lista ordinata di documenti che punta a una lista ordinata </LI>
delle <B>posizioni</B> del token in essi</LI> <LI>
<U>Word-based</U>: lista ordinata di documenti che punta a una lista ordinata delle <B>posizioni</B> del token in essi
</LI>
</ul> </ul>
<P> <P>
Essendo le liste <B>ordinate</B>, vi è possibile effettuare operazioni Essendo le liste <B>ordinate</B>, vi è possibile effettuare operazioni di <B>unione</B> e <B>intersezione</B> in <B>tempo lineare</B> utilizzando dei <B>cursori</B>.
di <B>unione</B> e <B>intersezione</B> in <B>tempo lineare</B> utilizzando
dei <B>cursori</B>.
</P> </P>
<P> <P>
Non è però altrettanto efficiente in operazioni di <B>negazione</B>. Non è però altrettanto efficiente in operazioni di <B>negazione</B>.
@ -763,21 +748,22 @@ export default function Gestinfo() {
Ci sono tanti modi diversi di implementarlo: Ci sono tanti modi diversi di implementarlo:
</P> </P>
<ul> <ul>
<LI><U>Doppia lista ordinata</U>: <B>lista di token</B> che punta a una <B>lista di
occorrenze</B></LI>
<LI> <LI>
<U>Trie</U>: <B>albero</B> in cui ogni arco rappresenta una <B>stringa</B> e ogni nodo <U>Doppia lista ordinata</U>: <B>lista di token</B> che punta a una <B>lista di occorrenze</B>
una <B>concatenazione</B> delle stringhe tra sè e la radice </LI>
<LI>
<U>Trie</U>: <B>albero</B> in cui ogni arco rappresenta una <B>stringa</B> e ogni nodo una <B>concatenazione</B> delle stringhe tra sè e la radice
<ul> <ul>
<LI><U>Prefix tree</U>: <B>trie</B> che usa i <B>prefissi</B> dei token</LI> <LI><U>Prefix tree</U>: <B>trie</B> che usa i <B>prefissi</B> dei token</LI>
<LI><U>Suffix tree</U>: <B>trie</B> che usa i <B>suffissi</B> dei token</LI> <LI><U>Suffix tree</U>: <B>trie</B> che usa i <B>suffissi</B> dei token</LI>
</ul> </ul>
</LI> </LI>
<LI><U>B+ tree</U>: <B>albero</B> particolarmente ottimizzato, in cui le foglie sono le <LI>
occorrenze</LI> <U>B+ tree</U>: <B>albero</B> particolarmente ottimizzato, in cui le foglie sono le occorrenze
<LI><U>Dizionario</U>: <B>hashmap</B> che usa come chiave il <B>token</B> stesso, e una </LI>
lista di occorrenze come <B>valore</B></LI> <LI>
<U>Dizionario</U>: <B>hashmap</B> che usa come chiave il <B>token</B> stesso, e una lista di occorrenze come <B>valore</B>
</LI>
</ul> </ul>
<P> <P>
Generalmente, occupano <B>spazio logaritmico</B> rispetto al numero di token. Generalmente, occupano <B>spazio logaritmico</B> rispetto al numero di token.
@ -788,33 +774,25 @@ export default function Gestinfo() {
<Split title={"Query languages"}> <Split title={"Query languages"}>
<Box title={"Cosa sono?"}> <Box title={"Cosa sono?"}>
<P> <P>
Ogni motore di ricerca implementa un diverso <B><I>query language</I></B>, Ogni motore di ricerca implementa un diverso <B><I>query language</I></B>, un'<B>interfaccia</B> per l'utente che gli permette di effettuare ricerche in base alla sua necessità di informazioni <I><UIN/></I>.
un'<B>interfaccia</B> per l'utente che gli permette di effettuare ricerche in base alla sua
necessità di informazioni <I><UIN/></I>.
</P> </P>
<Aside> <Aside>
Su Google puoi scrivere la tua domanda in linguaggio naturale e ricevere una risposta, ma ci Su Google puoi scrivere la tua domanda in linguaggio naturale e ricevere una risposta, ma ci puoi anche aggiungere qualche operatore come <code>site:stackoverflow.com</code> per restringere la ricerca!
puoi anche aggiungere qualche operatore come <code>site:stackoverflow.com</code> per restringere
la ricerca!
</Aside> </Aside>
<P> <P>
Ogni query language può poi implementare diverse <B>funzionalità</B> in base al tipo di Ogni query language può poi implementare diverse <B>funzionalità</B> in base al tipo di documento indicizzato.
documento indicizzato.
</P> </P>
</Box> </Box>
<Box title={"A cosa servono?"}> <Box title={"A cosa servono?"}>
<P> <P>
Essendo una <B>via di mezzo</B> tra linguaggio naturale e linguaggio di programmazione, Essendo una <B>via di mezzo</B> tra linguaggio naturale e linguaggio di programmazione, permettono a un <B>utente qualunque</B> di fruire del motore di ricerca, senza bisogno di conoscenze approfondite sul suo funzionamento.
permettono a un <B>utente qualunque</B> di fruire del motore di ricerca, senza bisogno di
conoscenze approfondite sul suo funzionamento.
</P> </P>
</Box> </Box>
</Split> </Split>
<Split> <Split>
<Box title={"Keywords semplici"}> <Box title={"Keywords semplici"}>
<P> <P>
All'interno della query vengono inserite <B>una o più keywords</B> da ricercare all'interno dei All'interno della query vengono inserite <B>una o più keywords</B> da ricercare all'interno dei documenti.
documenti.
</P> </P>
<Aside> <Aside>
<P> <P>
@ -833,25 +811,21 @@ export default function Gestinfo() {
<P> <P>
Solitamente è possibile specificarlo circondando di virgolette le keyword in questione. Solitamente è possibile specificarlo circondando di virgolette le keyword in questione.
</P> </P>
<Code language={"text"}> <Code language={"python"}>
"Nel mezzo del cammin di nostra vita" "Nel mezzo del cammin di nostra vita"
</Code> </Code>
</Aside> </Aside>
</Box> </Box>
<Box title={"Keyword distanziate"}> <Box title={"Keyword distanziate"}>
<P> <P>
Prevedono la possibilità di richiedere che due o più keyword siano a una Prevedono la possibilità di richiedere che due o più keyword siano a una certa <B><I>distanza</I></B> una dall'altra.
certa <B><I>distanza</I></B> una dall'altra.
</P> </P>
<Aside> <Aside>
<P> <P>
È molto raro al giorno d'oggi che un motore di ricerca permetta di ricercare la distanza tra È molto raro al giorno d'oggi che un motore di ricerca permetta di ricercare la distanza tra le keyword.
le keyword.
</P> </P>
<P> <P>
Uno dei pochi motori di ricerca che lo permette ancora è <Anchor Uno dei pochi motori di ricerca che lo permette ancora è <Anchor href={"https://en.wikipedia.org/wiki/Westlaw"}>Westlaw</Anchor>.
href={"https://en.wikipedia.org/wiki/Westlaw"}
>Westlaw</Anchor>.
</P> </P>
<Code language={"text"}> <Code language={"text"}>
Dante /3 Beatrice Dante /3 Beatrice
@ -862,8 +836,7 @@ export default function Gestinfo() {
<Split> <Split>
<Box title={"Patterns"}> <Box title={"Patterns"}>
<P> <P>
Prevedono la possibilità di Prevedono la possibilità di cercare <B>prefissi</B>, <B>suffissi</B>, <B>sottostringhe</B> e <B>intervalli</B> di keyword.
cercare <B>prefissi</B>, <B>suffissi</B>, <B>sottostringhe</B> e <B>intervalli</B> di keyword.
</P> </P>
<Aside> <Aside>
<P> <P>
@ -879,15 +852,11 @@ export default function Gestinfo() {
</Box> </Box>
<Box title={"Concetti"}> <Box title={"Concetti"}>
<P> <P>
Prevedono la possibilità di usare tag provenienti da un <B>thesaurus limitato</B> di cui Prevedono la possibilità di usare tag provenienti da un <B>thesaurus limitato</B> di cui è <B>garantita</B> la precisione.
è <B>garantita</B> la precisione.
</P> </P>
<Aside> <Aside>
<P> <P>
Il più famoso motore di ricerca a concetti è <Anchor Il più famoso motore di ricerca a concetti è <Anchor href={"https://pubmed.ncbi.nlm.nih.gov/"}>PubMed</Anchor>, e i concetti ricercabili possono essere trovati su <Anchor href={"https://www.ncbi.nlm.nih.gov/mesh/"}>MeSH</Anchor>.
href={"https://pubmed.ncbi.nlm.nih.gov/"}
>PubMed</Anchor>, e i concetti ricercabili possono
essere trovati su <Anchor href={"https://www.ncbi.nlm.nih.gov/mesh/"}>MeSH</Anchor>.
</P> </P>
<Code language={"text"}> <Code language={"text"}>
"Plague"[Mesh] "Plague"[Mesh]
@ -902,9 +871,7 @@ export default function Gestinfo() {
</P> </P>
<Aside> <Aside>
<P> <P>
Un esempio di query strutturali è <Anchor Un esempio di query strutturali è <Anchor href={"https://books.google.it/advanced_book_search?hl=it"}>Google Books</Anchor>.
href={"https://books.google.it/advanced_book_search?hl=it"}
>Google Books</Anchor>.
</P> </P>
<Code language={"text"}> <Code language={"text"}>
inauthor:Dante inauthor:Alighieri inauthor:Dante inauthor:Alighieri
@ -913,15 +880,11 @@ export default function Gestinfo() {
</Box> </Box>
<Box title={"Operatori booleani"}> <Box title={"Operatori booleani"}>
<P> <P>
Prevedono la possibilità di effettuare più query e applicare le operazioni Prevedono la possibilità di effettuare più query e applicare le operazioni di <B>intersezione</B>, <B>unione</B> e <B>negazione</B> sui risultati.
di <B>intersezione</B>, <B>unione</B> e <B>negazione</B> sui risultati.
</P> </P>
<Aside> <Aside>
<P> <P>
Moltissimi motori di ricerca permettono boolean query, inclusa la <Anchor Moltissimi motori di ricerca permettono boolean query, inclusa la <Anchor href={"https://www.postgresql.org/docs/current/textsearch.html"}>Full Text Search di PostgreSQL</Anchor>.
href={"https://www.postgresql.org/docs/current/textsearch.html"}
>Full Text Search di
PostgreSQL</Anchor>.
</P> </P>
<Code language={"python"}> <Code language={"python"}>
"Dante" and "Vergil" and ("Devil May Cry" or "DMC") and not "Divina Commedia" "Dante" and "Vergil" and ("Devil May Cry" or "DMC") and not "Divina Commedia"
@ -963,12 +926,10 @@ export default function Gestinfo() {
<Box title={"Tramite permuterm tree"}> <Box title={"Tramite permuterm tree"}>
<Box title={"Permuterm tree"}> <Box title={"Permuterm tree"}>
<P> <P>
Un particolare vocabolario in cui vengono inserite tutte le possibili permutazioni di Un particolare <B>prefix tree</B> in cui vengono inserite tutte le possibili permutazioni di ogni token, con in aggiunta un marcatore per la fine della parola ():
wildcard per ogni token:
</P> </P>
<Aside> <Aside>
<Token>ciao</Token> <Token>ciao</Token> <Token>iaoc</Token> <Token>aoci</Token> <Token>ciao</Token> <Token>ciao</Token> <Token>iaoc</Token> <Token>aoci</Token> <Token>iaoc</Token>
<Token>iaoc</Token>
</Aside> </Aside>
</Box> </Box>
<P> <P>
@ -980,19 +941,19 @@ export default function Gestinfo() {
<LI> <LI>
Ricerca semplice: Ricerca semplice:
<Aside> <Aside>
<Token>ciao</Token> <Token>ciao</Token> <Token>ciao</Token> <Token>ciao</Token>
</Aside> </Aside>
</LI> </LI>
<LI> <LI>
Ricerca di prefisso: Ricerca di prefisso:
<Aside> <Aside>
<Token>ci*</Token> <Token>ci*</Token> <Token>ci*</Token> <Token>ci*</Token>
</Aside> </Aside>
</LI> </LI>
<LI> <LI>
Ricerca di suffisso: Ricerca di suffisso:
<Aside> <Aside>
<Token>*ao</Token> <Token>ao*</Token> <Token>*ao</Token> <Token>ao*</Token>
</Aside> </Aside>
</LI> </LI>
<LI> <LI>
@ -1004,25 +965,22 @@ export default function Gestinfo() {
<LI> <LI>
Ricerca di intervallo: Ricerca di intervallo:
<Aside> <Aside>
<Token>c*o</Token> <Token>oc*</Token> <Token>c*o</Token> <Token>oc*</Token>
</Aside> </Aside>
</LI> </LI>
</ul> </ul>
</Aside> </Aside>
<P> <P>
È costoso in termini di spazio: ogni termine va salvato molte volte nel vocabolario (<I>permuterm È costoso in termini di spazio: ogni termine va salvato molte volte nel vocabolario (<I>permuterm problem</I>).
problem</I>).
</P> </P>
<Aside> <Aside>
In inglese, questo porta a una quadruplicazione <LatexMath>{r`\times 4`}</LatexMath> dello In inglese, in cui i token sono lunghi in media <LatexMath>4</LatexMath>, questo porta a una quadruplicazione <LatexMath>{r`\times 4`}</LatexMath> dello spazio usato.
spazio usato.
</Aside> </Aside>
</Box> </Box>
<Box title={<span>Tramite <LatexMath>{`q`}</LatexMath>-gram indexes</span>}> <Box title={<span>Tramite <LatexMath>{`q`}</LatexMath>-gram indexes</span>}>
<Box title={<span><LatexMath>{`q`}</LatexMath>-gram index</span>}> <Box title={<span><LatexMath>{`q`}</LatexMath>-gram index</span>}>
<P> <P>
<B>Vocabolario aggiuntivo</B> che associa <LatexMath>{`q`}</LatexMath>-grammi ai token <B>Vocabolario aggiuntivo</B> che associa <LatexMath>{`q`}</LatexMath>-grammi ai token corrispondenti del vocabolario principale.
corrispondenti del vocabolario principale.
</P> </P>
<Aside> <Aside>
<Token>ci</Token> <Token>ciao</Token> <Token>cibo</Token> <Token>cinefilo</Token> <Token>ci</Token> <Token>ciao</Token> <Token>cibo</Token> <Token>cinefilo</Token>
@ -1036,27 +994,23 @@ export default function Gestinfo() {
Utilizzando dei bigrammi: Utilizzando dei bigrammi:
</P> </P>
<Aside> <Aside>
<Token>lun*</Token> <Token>l</Token> <code>AND</code> <Token>lu</Token> <code>AND</code> <Token>lun*</Token> <Token>l</Token> <code>AND</code> <Token>lu</Token> <code>AND</code> <Token>un</Token>
<Token>un</Token>
</Aside> </Aside>
</Aside> </Aside>
<P> <P>
I risultati della ricerca andranno <B>post-filtrati</B>, in quanto ci potrebbero essere dei <B>falsi I risultati della ricerca andranno <B>post-filtrati</B>, in quanto ci potrebbero essere dei <B>falsi positivi</B>:
positivi</B>:
</P> </P>
<Aside> <Aside>
<P> <P>
Utilizzando dei bigrammi: Utilizzando dei bigrammi:
</P> </P>
<Aside> <Aside>
<Token>mon*</Token> <Token>m</Token> <code>AND</code> <Token>mo</Token> <code>AND</code> <Token>mon*</Token> <Token>m</Token> <code>AND</code> <Token>mo</Token> <code>AND</code> <Token>on</Token> <Token stopword={true}>moon</Token> <Token>monday</Token>
<Token>on</Token> <Token stopword={true}>moon</Token> <Token>monday</Token>
</Aside> </Aside>
</Aside> </Aside>
<Aside> <Aside>
<P> <P>
È un'ottima via di mezzo tra prefix-suffix tree e permuterm tree sia per il tempo impiegato È un'ottima via di mezzo tra prefix-suffix tree e permuterm tree sia per il tempo impiegato sia per lo spazio richiesto.
sia per lo spazio richiesto.
</P> </P>
</Aside> </Aside>
</Box> </Box>
@ -1064,35 +1018,30 @@ export default function Gestinfo() {
<Split title={<span>Modelli di <IR/></span>}> <Split title={<span>Modelli di <IR/></span>}>
<Box title={"Cosa sono?"}> <Box title={"Cosa sono?"}>
<P> <P>
Sono <B>modelli matematici</B> in grado di <B>selezionare</B> e <B>ordinare</B> i documenti in Sono <B>modelli matematici</B> in grado di <B>selezionare</B> e <B>ordinare</B> i documenti in base alla loro <B>rilevanza</B> rispetto alla query.
base alla loro <B>rilevanza</B> rispetto alla query.
</P> </P>
</Box> </Box>
<Box title={"A cosa servono?"}> <Box title={"A cosa servono?"}>
<P> <P>
Stabiliscono i <B>risultati richiamati</B> dal motore di ricerca e l'<B>ordine con cui vengono Stabiliscono i <B>risultati richiamati</B> dal motore di ricerca e l'<B>ordine con cui vengono visualizzati</B>.
visualizzati</B>.
</P> </P>
</Box> </Box>
</Split> </Split>
<Box title={"Modelli classici"}> <Box title={"Modelli classici"}>
<P> <P>
Rappresentano la query come un <B>insieme di index term</B>, e assegnano le rilevanze confrontando Rappresentano la query come un <B>insieme di index term</B>, e assegnano le rilevanze confrontando l'insieme con gli index term dei documenti.
l'insieme con gli index term dei documenti.
</P> </P>
<Aside> <Aside>
Sono usati solitamente dai motori di ricerca web. Sono usati solitamente dai motori di ricerca web.
</Aside> </Aside>
<P> <P>
Ad ogni index term del documento viene <B>indipendentemente</B> assegnato un <B><I>peso</I></B> in Ad ogni index term del documento viene <B>indipendentemente</B> assegnato un <B><I>peso</I></B> in base alla sua rilevanza nella query.
base alla sua rilevanza nella query.
</P> </P>
</Box> </Box>
<Split> <Split>
<Box title={"Modello booleano"}> <Box title={"Modello booleano"}>
<P> <P>
<B>Modello classico</B> che rappresenta la query come un <B><Predicato/> <I>booleano</I></B>, e <B>Modello classico</B> che rappresenta la query come un <B><Predicato/> <I>booleano</I></B>, e genera la rilevanza valutandolo su ogni documento:
genera la rilevanza valutandolo su ogni documento:
</P> </P>
<ul> <ul>
<LI><B><code>1</code></B> se il <Predicato/> è <B>vero</B></LI> <LI><B><code>1</code></B> se il <Predicato/> è <B>vero</B></LI>
@ -1122,31 +1071,24 @@ export default function Gestinfo() {
<Split> <Split>
<Box title={"Modello vettoriale"}> <Box title={"Modello vettoriale"}>
<P> <P>
Modello classico che rappresenta il vocabolario come uno <B>spazio vettoriale</B>, in cui ogni Modello classico che rappresenta il vocabolario come uno <B>spazio vettoriale</B>, in cui ogni dimensione rappresenta un token.
dimensione rappresenta un token.
</P> </P>
<P> <P>
Ogni documento viene rappresentato come un <B>vettore <LatexMath>{`d`}</LatexMath></B>, i cui Ogni documento viene rappresentato come un <B>vettore <LatexMath>{`d`}</LatexMath></B>, i cui valori sono <B>pesi <LatexMath>{`d_i`}</LatexMath></B> assegnati in base a quanto il token è signficativo all'interno del documento.
valori sono <B>pesi <LatexMath>{`d_i`}</LatexMath></B> assegnati in base a quanto il token è
signficativo all'interno del documento.
</P> </P>
<Aside> <Aside>
Il metodo più comunemente usato per assegnare i pesi è il <TFIDF/>, descritto successivamente. Il metodo più comunemente usato per assegnare i pesi è il <TFIDF/>, descritto successivamente.
</Aside> </Aside>
<Aside> <Aside>
La matrice della collezione <LatexMath>{`\\mathbf{D}`}</LatexMath> è estremamente sparsa: viene La matrice della collezione <LatexMath>{`\\mathbf{D}`}</LatexMath> è estremamente sparsa: viene implementata <B>per colonne</B> attraverso un <B>inverted index</B>.
implementata <B>per colonne</B> attraverso un <B>inverted index</B>.
</Aside> </Aside>
<P> <P>
Le query vengono anch'esse trasformate in <B>vettori <LatexMath>{`q`}</LatexMath></B>, e le Le query vengono anch'esse trasformate in <B>vettori <LatexMath>{`q`}</LatexMath></B>, e le rilevanze vengono ottenute dalla <B>similitudine vettoriale</B> tra i vettore query e i vettori documenti.
rilevanze vengono ottenute dalla <B>similitudine vettoriale</B> tra i vettore query e i vettori
documenti.
</P> </P>
<Split> <Split>
<Box title={<span>Peso <TFIDF/></span>}> <Box title={<span>Peso <TFIDF/></span>}>
<P> <P>
Un metodo di assegnamento peso che si basa sul <B>prodotto</B> dei Un metodo di assegnamento peso che si basa sul <B>prodotto</B> dei fattori <B><TF/></B> e <B><IDF/></B>:
fattori <B><TF/></B> e <B><IDF/></B>:
</P> </P>
<B><LatexMath block={true}>{`d_i = tf_{norm}(i) \\cdot idf_{log}(i)`}</LatexMath></B> <B><LatexMath block={true}>{`d_i = tf_{norm}(i) \\cdot idf_{log}(i)`}</LatexMath></B>
<Box title={<span><TF/>: Term frequency</span>}> <Box title={<span><TF/>: Term frequency</span>}>
@ -1157,8 +1099,7 @@ export default function Gestinfo() {
block={true} block={true}
>{`tf(i) = \\frac{occorrenze}{totale\\ token}`}</LatexMath></B> >{`tf(i) = \\frac{occorrenze}{totale\\ token}`}</LatexMath></B>
<P> <P>
Nella formula principale, viene <B>normalizzato</B> dividendolo per il <TF/> più Nella formula principale, viene <B>normalizzato</B> dividendolo per il <TF/> più alto del documento, limitandolo così a valori tra 0 e 1:
alto del documento, limitandolo così a valori tra 0 e 1:
</P> </P>
<B><LatexMath <B><LatexMath
block={true} block={true}
@ -1172,21 +1113,18 @@ export default function Gestinfo() {
block={true} block={true}
>{`idf(i) = \\frac{totale\\ documenti}{documenti\\ con\\ occ.}`}</LatexMath></B> >{`idf(i) = \\frac{totale\\ documenti}{documenti\\ con\\ occ.}`}</LatexMath></B>
<P> <P>
Nella formula principale, viene <B>logaritmizzato</B>, al fine di ridurre Nella formula principale, viene <B>logaritmizzato</B>, al fine di ridurre significativamente il suo impatto:
significativamente il suo impatto:
</P> </P>
<B><LatexMath block={true}>{`idf_{log}(i) = \\log(idf(i))`}</LatexMath></B> <B><LatexMath block={true}>{`idf_{log}(i) = \\log(idf(i))`}</LatexMath></B>
</Box> </Box>
</Box> </Box>
<Box title={"Similitudine vettoriale"}> <Box title={"Similitudine vettoriale"}>
<P> <P>
Un modo di misurare la similitudine tra <B>insiemi di token</B> rappresentati come <B>dimensioni Un modo di misurare la similitudine tra <B>insiemi di token</B> rappresentati come <B>dimensioni vettoriali</B>.
vettoriali</B>.
</P> </P>
<Box title={"Coseno di similitudine"}> <Box title={"Coseno di similitudine"}>
<P> <P>
Si basa sulla <B>norma a 2</B>, e corrisponde a cercare l'angolo centrato Si basa sulla <B>norma a 2</B>, e corrisponde a cercare l'angolo centrato all'origine tra i due vettori:
all'origine tra i due vettori:
</P> </P>
<B><LatexMath block={true}>{` <B><LatexMath block={true}>{`
sim_{\\cos} (d, q) = sim_{\\cos} (d, q) =
@ -1210,35 +1148,21 @@ export default function Gestinfo() {
Altre misure comuni di similitudine vettoriale sono: Altre misure comuni di similitudine vettoriale sono:
</P> </P>
<ul> <ul>
<LI>La <Anchor href={"https://it.wikipedia.org/wiki/Distanza_euclidea"}>distanza <LI>La <Anchor href={"https://it.wikipedia.org/wiki/Distanza_euclidea"}>distanza euclidea</Anchor></LI>
euclidea</Anchor></LI> <LI>Il <Anchor href={"https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient"}>SørensenDice coefficient</Anchor></LI>
<LI>Il <Anchor <LI>Il <Anchor href={"https://en.wikipedia.org/wiki/Jaccard_index"}>Jaccard Index</Anchor></LI>
href={"https://en.wikipedia.org/wiki/S%C3%B8rensen%E2%80%93Dice_coefficient"} <LI>La <Anchor href={"https://it.wikipedia.org/wiki/Distanza_di_Minkowski"}>distanza di Minkowski</Anchor></LI>
>SørensenDice
coefficient</Anchor></LI>
<LI>Il <Anchor href={"https://en.wikipedia.org/wiki/Jaccard_index"}>Jaccard
Index</Anchor></LI>
<LI>La <Anchor href={"https://it.wikipedia.org/wiki/Distanza_di_Minkowski"}>distanza
di Minkowski</Anchor></LI>
</ul> </ul>
</Aside> </Aside>
</Box> </Box>
</Split> </Split>
</Box>
</Split>
<Box title={"Modello probabilistico"}> <Box title={"Modello probabilistico"}>
<P> <P>
Modello classico che ordina i documenti <LatexMath>{`d`}</LatexMath> in base Implementazione del modello vettoriale che ordina i documenti <LatexMath>{`d`}</LatexMath> in base alla <B>probabilità <LatexMath>{`R`}</LatexMath></B> che siano <B>rilevanti</B> per la query <LatexMath>{`q`}</LatexMath>:
alla <B>probabilità</B> che siano <B>rilevanti <LatexMath>{`R`}</LatexMath></B> per la
query <LatexMath>{`q`}</LatexMath>:
</P> </P>
<B><LatexMath <B><LatexMath block={true}>{`sim_{prob} = \\frac{P(R\\ |\\ d, q)}{P(\\overline{R}\\ |\\ d, q)}`}</LatexMath></B>
block={true}
>{`sim_{prob} = \\frac{P(R\\ |\\ d, q)}{P(\\overline{R}\\ |\\ d, q)}`}</LatexMath></B>
<P> <P>
<Todo>Si dimostra che</Todo> è possibile capire quanto la presenza di un dato Si dimostra che è possibile determinare quanto la presenza di un dato token <LatexMath>{`k_i`}</LatexMath> in un documento <LatexMath>{r`d`}</LatexMath> ne <B>contribuisca alla rilevanza</B> per la query <LatexMath>{r`\vec{q}`}</LatexMath>:
token <LatexMath>{`k_i`}</LatexMath> in un documento <LatexMath>{r`d`}</LatexMath> ne <B>contribuisca
alla rilevanza</B> per la query <LatexMath>{r`\vec{q}`}</LatexMath>:
</P> </P>
<B><LatexMath block={true}>{` <B><LatexMath block={true}>{`
c_i = c_i =
@ -1246,11 +1170,34 @@ export default function Gestinfo() {
+ +
\\log \\frac{1 - P(k_i\\ |\\ \\overline{R}, \\vec{q})}{P(k_i\\ |\\ \\overline{R}, \\vec{q})} \\log \\frac{1 - P(k_i\\ |\\ \\overline{R}, \\vec{q})}{P(k_i\\ |\\ \\overline{R}, \\vec{q})}
`}</LatexMath></B> `}</LatexMath></B>
<Todo>Continuo a non aver capito gran che.</Todo> <Split>
<Color builtin={"lime"}>
<Aside>
<B><LatexMath block={true}>{`
\\log \\frac{P(k_i\\ |\\ R, \\vec{q})}{1 - P(k_i\\ |\\ R, \\vec{q})}
`}</LatexMath></B>
<P> <P>
Il contributo <LatexMath>{r`c_i`}</LatexMath> viene poi usato come peso Il valore del primo "blocco" dipende dalla presenza del token <LatexMath>{`k_i`}</LatexMath> nei documenti <B>rilevanti</B>: più il token vi appare, più il valore sarà <B>alto</B>.
</P> </P>
</Aside>
</Color>
<Color builtin={"red"}>
<Aside>
<B><LatexMath block={true}>{`
\\log \\frac{1 - P(k_i\\ |\\ \\overline{R}, \\vec{q})}{P(k_i\\ |\\ \\overline{R}, \\vec{q})}
`}</LatexMath></B>
<P>
Il valore del primo "blocco" dipende dalla presenza del token <LatexMath>{`k_i`}</LatexMath> nei documenti <B>non rilevanti</B>: più il token vi appare, più il valore sarà <B>basso</B>.
</P>
</Aside>
</Color>
</Split>
<Aside>
In generale, <LatexMath>{`c_i`}</LatexMath> avrà un valore <Color builtin={"lime"}>positivo</Color> se è più probabile che il termine appaia in documenti rilevanti e non in quelli irrilevanti; in caso contrario, esso avrà valore <Color builtin={"red"}>negativo</Color>.
</Aside>
</Box> </Box>
</Box>
</Split>
<Box title={"Modello Okapi BM25"}> <Box title={"Modello Okapi BM25"}>
<P> <P>
Modello classico che ordina i documenti in base a un <B>punteggio <RSV/></B> ad essi assegnato. Modello classico che ordina i documenti in base a un <B>punteggio <RSV/></B> ad essi assegnato.
@ -1262,15 +1209,13 @@ export default function Gestinfo() {
<Split> <Split>
<Box title={<span>Fattore <LatexMath>{`x`}</LatexMath></span>}> <Box title={<span>Fattore <LatexMath>{`x`}</LatexMath></span>}>
<P> <P>
Deriva dal <B>peso <IDF/></B> dei termini della query presenti nel documento: Deriva dalla <B>somma del peso <IDF/></B> dei termini della query presenti nel documento:
</P> </P>
<B><LatexMath block={true}>{`x = \\sum_{t \\in q} ( idf_{\\log} )`}</LatexMath></B> <B><LatexMath block={true}>{`x = \\sum_{t \\in q} ( idf_{\\log} )`}</LatexMath></B>
</Box> </Box>
<Box title={<span>Fattore <LatexMath>{`y`}</LatexMath></span>}> <Box title={<span>Fattore <LatexMath>{`y`}</LatexMath></span>}>
<P> <P>
Deriva dal <B>peso <TF/></B>, dalla <B>lunghezza media dei Deriva dal <B>peso <TF/></B>, dalla <B>lunghezza media dei documenti <LatexMath>{`L_{avg}`}</LatexMath></B>, la <B>lunghezza del documento specifico <LatexMath>{`L_d`}</LatexMath></B> e da due parametri di
documenti <LatexMath>{`L_{avg}`}</LatexMath></B>, la <B>lunghezza del documento
specifico <LatexMath>{`L_d`}</LatexMath></B> e da due parametri di
configurazione <LatexMath>{`k_1`}</LatexMath> e <LatexMath>{`b`}</LatexMath>: configurazione <LatexMath>{`k_1`}</LatexMath> e <LatexMath>{`b`}</LatexMath>:
</P> </P>
<B><LatexMath <B><LatexMath