1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-26 01:44:20 +00:00
This commit is contained in:
Steffo 2021-01-29 19:53:21 +01:00
parent 5d931ecd6a
commit 97af90d753
Signed by: steffo
GPG key ID: 6965406171929D01
7 changed files with 169 additions and 53 deletions

14
src/components/Todo.js Normal file
View file

@ -0,0 +1,14 @@
import React from "react";
import PropTypes from "prop-types";
import style from "./Todo.module.css";
export default function Todo({children}) {
return (
<span className={style.todo}>🚧 {children}</span>
)
}
Todo.propTypes = {
children: PropTypes.node,
}

View file

@ -0,0 +1,6 @@
.todo {
background-color: #292F33;
color: #FFCC4D;
padding: 1px;
border-radius: 2px;
}

View file

@ -0,0 +1,12 @@
import React from "react";
import {Help} from "bluelib/lib/components";
import PropTypes from "prop-types";
export default function IDF() {
return (
<Help text={"Inverse document frequency, metodo di calcolare i pesi che si basa sul logaritmo inverso della document frequency."}>idf</Help>
)
}
IDF.propTypes = {}

View file

@ -0,0 +1,12 @@
import React from "react";
import {Help} from "bluelib/lib/components";
import PropTypes from "prop-types";
export default function TF() {
return (
<Help text={"Term frequency, La frequenza di un termine in un documento."}>tf</Help>
)
}
TF.propTypes = {}

View file

@ -0,0 +1,12 @@
import React from "react";
import {Help} from "bluelib/lib/components";
import PropTypes from "prop-types";
export default function TFIDF() {
return (
<Help text={"Metodo per calcolare i pesi che moltiplica il peso tf per il peso idf."}>tf-idf</Help>
)
}
TFIDF.propTypes = {}

View file

@ -14,6 +14,9 @@ import Glob from "./abbr/Glob";
import PlusLI from "../../components/PlusLI"; import PlusLI from "../../components/PlusLI";
import MinusLI from "../../components/MinusLI"; import MinusLI from "../../components/MinusLI";
import Predicato from "./abbr/Predicato"; import Predicato from "./abbr/Predicato";
import Todo from "../../components/Todo";
import IDF from "./abbr/IDF";
import TF from "./abbr/TF";
export default function Gestinfo() { export default function Gestinfo() {
@ -259,7 +262,7 @@ export default function Gestinfo() {
</Aside> </Aside>
</TitleBox> </TitleBox>
</Split> </Split>
<TitleSplit title={"Similarità"}> <TitleSplit title={"Similitudine"}>
<TitleBox title={"Cos'è?"}> <TitleBox title={"Cos'è?"}>
<P> <P>
Una <B>misura</B> di quanto due token hanno <B>significati in comune</B>. Una <B>misura</B> di quanto due token hanno <B>significati in comune</B>.
@ -282,17 +285,17 @@ export default function Gestinfo() {
</TitleBox> </TitleBox>
<TitleBox title={"A cosa serve?"}> <TitleBox title={"A cosa serve?"}>
<P> <P>
La <B><I>word sense disambiguation</I></B> sfrutta la <B>similarità</B> tra l'ononimo e i <B>token circostanti</B> per stabilire il significato corretto. 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.
</P> </P>
<P> <P>
Talvolta alla similarità sono aggiunte anche altre informazioni, come la <B>distanza</B> tra i token e dati provenienti da <B>sorgenti esterne</B>. Talvolta alla similitudine sono aggiunte anche altre informazioni, come la <B>distanza</B> tra i token e dati provenienti da <B>sorgenti esterne</B>.
</P> </P>
</TitleBox> </TitleBox>
</TitleSplit> </TitleSplit>
<Split> <Split>
<TitleBox title={"Similarità path-based"}> <TitleBox title={"Similitudine path-based"}>
<P> <P>
Un modo di misurare la similarità tra due token basato sulla loro <B>posizione</B> all'interno del <B>thesaurus</B>. Un modo di misurare la similitudine tra due token basato sulla loro <B>posizione</B> all'interno del <B>thesaurus</B>.
</P> </P>
<Split> <Split>
<TitleBox title={"Path-distance"}> <TitleBox title={"Path-distance"}>
@ -309,7 +312,7 @@ export default function Gestinfo() {
</TitleBox> </TitleBox>
</Split> </Split>
</TitleBox> </TitleBox>
<TitleBox title={<span>Similarità <IC/>-based</span>}> <TitleBox 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 documento. L'<IC/> è una misura <B>probabilistica</B> di quanto un token sia inaspettato all'interno di un documento.
</P> </P>
@ -318,13 +321,27 @@ export default function Gestinfo() {
</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>
La <I>similarità <IC/>-based</I> è quindi un modo di misurare la similarità basato sull'<B><IC/></B>. La <I>similitudine <IC/>-based</I> è quindi un modo di misurare la similitudine basato sull'<B><IC/></B>.
</P> </P>
<TitleBox title={"Resnik"}> <TitleBox title={"Resnik"}>
<P> <P>
Si basa sull'<B><IC/></B> del <B>minimo antenato comune</B>: Si basa sull'<B><IC/></B> del <B>minimo antenato comune</B>:
</P> </P>
<B><LatexMath block={true}>{`sim_{r} = ic \\left( mac_{\\ t_1,t_2} \\right)`}</LatexMath></B> <B><LatexMath block={true}>{`sim_{r} (t_1,t_2) = ic \\left( mac_{\\ t_1,t_2} \\right)`}</LatexMath></B>
</TitleBox>
</TitleBox>
<TitleBox title={"Similitudine vettoriale"}>
<P>
Un modo di misurare la similitudine in cui i token sono rappresentati come <B>dimensioni vettoriali</B>.
</P>
<TitleBox title={"Coseno di similitudine"}>
<P>
Si basa sulla <B>norma a 2</B>, e corrisponde a cercare l'angolo centrato all'origine tra i due vettori:
</P>
<B><LatexMath block={true}>{`sim_{\\cos} (t_1, t_2) = \\frac{\\vec{t_1} \\cdot \\vec{t_2}}{\\| \\vec{t_1} \\| \\cdot \\| \\vec{t_2} \\|}`}</LatexMath></B>
<Aside>
Solitamente viene usata nei modelli di <IR/> vettoriali, descritti in seguito.
</Aside>
</TitleBox> </TitleBox>
</TitleBox> </TitleBox>
</Split> </Split>
@ -516,7 +533,7 @@ export default function Gestinfo() {
</P> </P>
<Aside> <Aside>
<P> <P>
<Color value={"yellow"}>🚧 TODO: Dove vengono usate?</Color> <Todo>Dove vengono usate?</Todo>
</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"
@ -537,53 +554,95 @@ export default function Gestinfo() {
</TitleBox> </TitleBox>
</TitleSplit> </TitleSplit>
<Split> <Split>
<TitleBox title={"Modello booleano"}> <TitleBox title={"Modelli classici"}>
<P> <P>
Definisce la rilevanza di un documento come un <B>valore <I>booleano</I></B>: Rappresentano la query come un <B>insieme di index term</B>, e assegnano le rilevanze confrontando l'insieme con gli index term dei documenti.
</P> </P>
<ul> <Aside>
<LI><B><code>1</code></B> se il <Predicato/> è <B>interamente soddisfatto</B></LI> Sono usati solitamente dai motori di ricerca web.
<LI><B><code>0</code></B> se il <Predicato/> <B>non è soddisfatto</B></LI> </Aside>
</ul>
<P> <P>
Per valutare la query, esegue le operazioni booleane di <B><code>AND</code></B>, <B><code>OR</code></B> e <B><code>NOT</code></B>. Ad ogni <B>index term del documento</B> viene assegnato un <B><I>peso</I></B> in base alla sua rilevanza nella query.
</P> </P>
<TitleBox title={"Pro e contro"}> <p>
<ul> Essendo i pesi <B>indipendenti</B> uno dall'altro, è possibile raggiungere un <B><Color value={"lime"}>elevato parallelismo</Color></B> nel loro calcolo; viene però <B><Color value={"red"}>ignorato l'ordine delle parole</Color></B> nella query e nei documenti.
<PlusLI>Molto semplice da implementare</PlusLI> </p>
<PlusLI>Richiama esattamente ciò che è stato richiesto dall'utente</PlusLI> <Split>
<MinusLI>Scrivere query booleane efficaci è difficile</MinusLI> <TitleBox title={"Modello booleano"}>
<MinusLI>Non tollera errori nella scrittura di query</MinusLI> <P>
<MinusLI>Non ordina i documenti</MinusLI> Rappresenta la query come un <B><Predicato/> <I>booleano</I></B>, e valutandolo su ogni documento trova la rilevanza:
</ul> </P>
</TitleBox> <ul>
</TitleBox> <LI><B><code>1</code></B> se il <Predicato/> è <B>vero</B></LI>
<TitleBox title={"Modello fuzzy"}> <LI><B><code>0</code></B> se il <Predicato/> è <B>falso</B></LI>
<P> </ul>
<B>Estende</B> il modello booleano introducendo la possibilità per un documento di <B>soddisfare parzialmente</B> un predicato: <P>
</P> È <B><Color value={"lime"}>semplice da implementare</Color></B> e <B><Color value={"lime"}>specifico</Color></B>, ma <B><Color value={"red"}>poco user-friendly</Color></B> e <B><Color value={"red"}>non permette di ordinare i documenti</Color></B>.
<ul> </P>
<LI><B><code>1.0</code></B> se il <Predicato/> è <B>interamente soddisfatto</B></LI> <TitleBox title={"Modello fuzzy"}>
<LI><B><code>0.X</code></B> se il <Predicato/> è <B>parzialmente soddisfatto</B></LI> <P>
<LI><B><code>0.0</code></B> se il <Predicato/> <B>non è soddisfatto</B></LI> Permette ai documenti di <B>soddisfare parzialmente</B> il <Predicato/>:
</ul> </P>
<P> <ul>
<B>Ridefinisce</B> le <B>operazioni booleane</B>, permettendo loro di gestire valori intermedi: <LI><B><code>1.00</code></B> se il <Predicato/> è <B>vero</B></LI>
</P> <LI><B><code>0.XX</code></B> se il <Predicato/> è <B>parzialmente vero</B></LI>
<ul> <LI><B><code>0.00</code></B> se il <Predicato/> è <B>falso</B></LI>
<LI><U><code>AND</code></U>: <B><LatexMath>{`max( x_{A},\\ x_{B} )`}</LatexMath></B></LI> </ul>
<LI><U><code>OR</code></U>: <B><LatexMath>{`min( x_{A},\\ x_{B} )`}</LatexMath></B></LI> <P>
<LI><U><code>NOT</code></U>: <B><LatexMath>{`1 - x_{A}`}</LatexMath></B></LI> Le <B>operazioni fuzzy</B> diventano quindi:
</ul> </P>
<TitleBox title={"Pro e contro"}> <ul>
<ul> <LI><U><code>AND</code></U>: <B><LatexMath>{`max( x_{A},\\ x_{B} )`}</LatexMath></B></LI>
<PlusLI>Semplice da implementare</PlusLI> <LI><U><code>OR</code></U>: <B><LatexMath>{`min( x_{A},\\ x_{B} )`}</LatexMath></B></LI>
<PlusLI>Richiama esattamente ciò che è stato richiesto dall'utente</PlusLI> <LI><U><code>NOT</code></U>: <B><LatexMath>{`1 - x_{A}`}</LatexMath></B></LI>
<PlusLI>Gestisce bene i termini vaghi</PlusLI> </ul>
<MinusLI>Scrivere query fuzzy efficaci è difficile</MinusLI> <P>
<MinusLI>Non tollera errori nella scrittura di query</MinusLI> A differenza del modello booleano standard, quello fuzzy <B><Color value={"lime"}>funziona bene con documenti vaghi</Color></B>, ma rimane <B><Color value={"red"}>poco user-friendly</Color></B>.
</ul> </P>
</TitleBox> </TitleBox>
</TitleBox>
<TitleBox title={"Modello vettoriale"}>
<P>
Rappresenta tutto come <B>vettori multidimensionali</B>, in cui ogni <B>dimensione</B> rappresenta una <B>caratteristica</B>.
</P>
<P>
Per ogni token, che sia di un documento o di una query, viene selezionato un <B>peso non-negativo per ogni dimensione</B>, in base a quanto il token <B>presenta quella caratteristica</B>.
</P>
<TitleBox title={<span>Pesi <TF/></span>}>
<P>
Si basano sulla frequenza di un token in un documento.
</P>
<P>
Si possono calcolare in tre modi diversi:
</P>
<ul>
<LI>
<U>Frequenza</U>:
<B><LatexMath block={true}>{`tf = \\frac{occorrenze}{totale}`}</LatexMath></B>
</LI>
<LI>
<U>Frequenza normalizzata</U>:
<B><LatexMath block={true}>{`tf = \\frac{frequenza\\ del\\ termine}{frequenza\\ massima}`}</LatexMath></B>
</LI>
<LI>
<U>Frequenza logaritmica</U>: <Todo>Perchè non viene visualizzata?</Todo>
<B><LatexMath block={true}>{`tf =
\\begin{cases}
0 \\qquad se\\ frequenza = 0\\
1 + \\log_{10} \\left( frequenza \\right) \\qquad altrimenti
\\end{cases}
`}</LatexMath></B>
</LI>
</ul>
</TitleBox>
<P>
Il vettore query e i vettori documenti vengono poi confrontati attraverso <B><I>misure di similitudine vettoriale</I></B>, ottenendo come risultato la rilevanza dei documenti.
</P>
</TitleBox>
<TitleBox title={"Modello probabilistico"}>
</TitleBox>
</Split>
</TitleBox> </TitleBox>
</Split> </Split>
</Page> </Page>

View file

@ -3,6 +3,7 @@ import {Split, Size, Color, Anchor, BaseLink as A, Paragraph as P, Bold as B, It
import Page from "../components/Page"; import Page from "../components/Page";
import TitleSplit from "../components/TitleSplit"; import TitleSplit from "../components/TitleSplit";
import TitleBox from "../components/TitleBox"; import TitleBox from "../components/TitleBox";
import Todo from "../components/Todo";
export default function Home() { export default function Home() {
@ -17,7 +18,7 @@ export default function Home() {
Se trovi un errore negli appunti, o un bug del sito, per favore <Anchor href={"https://github.com/Steffo99/appuntiweb/issues/new"}>segnalamelo su GitHub</Anchor>! Se trovi un errore negli appunti, o un bug del sito, per favore <Anchor href={"https://github.com/Steffo99/appuntiweb/issues/new"}>segnalamelo su GitHub</Anchor>!
</P> </P>
<P> <P>
<Color value={"yellow"}>🚧 TODO: Molte pagine non sono disponibili in quanto il sito è in fase di rinnovo.</Color> <Todo>Molte pagine non sono disponibili in quanto il sito è in fase di rinnovo.</Todo>
</P> </P>
</TitleBox> </TitleBox>
</Split> </Split>