From 7c099f469f556d63ff43ba7b5b028cb14fcff943 Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Sat, 30 Jan 2021 01:45:58 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20More!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/TitleSplit.module.css | 2 +- src/routes/Gestinfo/abbr/IDF.js | 5 +- src/routes/Gestinfo/abbr/TF.js | 5 +- src/routes/Gestinfo/index.js | 167 +++++++++++++++------------ 4 files changed, 100 insertions(+), 79 deletions(-) diff --git a/src/components/TitleSplit.module.css b/src/components/TitleSplit.module.css index 6862549..d69691e 100644 --- a/src/components/TitleSplit.module.css +++ b/src/components/TitleSplit.module.css @@ -1,3 +1,3 @@ .titlesplit { - margin-top: 20px; + margin-top: 80px; } diff --git a/src/routes/Gestinfo/abbr/IDF.js b/src/routes/Gestinfo/abbr/IDF.js index 4f7f6c6..8fc2c3f 100644 --- a/src/routes/Gestinfo/abbr/IDF.js +++ b/src/routes/Gestinfo/abbr/IDF.js @@ -1,11 +1,10 @@ import React from "react"; -import {Help} from "bluelib/lib/components"; -import PropTypes from "prop-types"; +import {LatexMath, Help} from "bluelib/lib/components"; export default function IDF() { return ( - idf + {`idf`} ) } diff --git a/src/routes/Gestinfo/abbr/TF.js b/src/routes/Gestinfo/abbr/TF.js index 2904d35..748ef29 100644 --- a/src/routes/Gestinfo/abbr/TF.js +++ b/src/routes/Gestinfo/abbr/TF.js @@ -1,11 +1,10 @@ import React from "react"; -import {Help} from "bluelib/lib/components"; -import PropTypes from "prop-types"; +import {LatexMath, Help} from "bluelib/lib/components"; export default function TF() { return ( - tf + {`tf`} ) } diff --git a/src/routes/Gestinfo/index.js b/src/routes/Gestinfo/index.js index 267f17d..2170d75 100644 --- a/src/routes/Gestinfo/index.js +++ b/src/routes/Gestinfo/index.js @@ -1,5 +1,5 @@ import React from "react"; -import {Split, Aside, Anchor, LatexMath, Help, Blockquote, Title, Code, Color, Underline as U, BaseLink as A, Paragraph as P, Bold as B, Italic as I, ListItem as LI} from "bluelib/lib/components"; +import {Split, Aside, Anchor, LatexMath, Help, Blockquote, Title, Separator, Code, Color, Underline as U, BaseLink as A, Paragraph as P, Bold as B, Italic as I, ListItem as LI} from "bluelib/lib/components"; import Page from "../../components/Page"; import TitleSplit from "../../components/TitleSplit"; import TitleBox from "../../components/TitleBox"; @@ -17,6 +17,7 @@ import Predicato from "./abbr/Predicato"; import Todo from "../../components/Todo"; import IDF from "./abbr/IDF"; import TF from "./abbr/TF"; +import TFIDF from "./abbr/TFIDF"; export default function Gestinfo() { @@ -70,6 +71,9 @@ export default function Gestinfo() { +

+ Un insieme di documenti è detto collezione. +

@@ -342,7 +346,21 @@ export default function Gestinfo() {

+ + Forse dovrei scrivere la formula "completa". +
+ @@ -553,98 +571,103 @@ export default function Gestinfo() {

+ +

+ Rappresentano la query come un insieme di index term, e assegnano le rilevanze confrontando l'insieme con gli index term dei documenti. +

+ +

+ Ad ogni index term del documento viene indipendentemente assegnato un peso in base alla sua rilevanza nella query. +

+
- +

- Rappresentano la query come un insieme di index term, e assegnano le rilevanze confrontando l'insieme con gli index term dei documenti. + Modello classico che rappresenta la query come un booleano, e genera la rilevanza valutandolo su ogni documento: +

+
    +
  • 1 se il è vero
  • +
  • 0 se il è falso
  • +
+
+ +

+ Variante del modello booleano che permette ai documenti di soddisfare parzialmente il : +

+
    +
  • 1.00 se il è vero
  • +
  • 0.XX se il è parzialmente vero
  • +
  • 0.00 se il è falso
  • +
+

+ Le operazioni fuzzy diventano quindi: +

+
    +
  • AND: {`max( x_{A},\\ x_{B} )`}
  • +
  • OR: {`min( x_{A},\\ x_{B} )`}
  • +
  • NOT: {`1 - x_{A}`}
  • +
+
+
+ + +

+ Modello classico che rappresenta il vocabolario come uno spazio vettoriale, in cui ogni dimensione rappresenta un token. +

+

+ Ogni documento viene rappresentato come un vettore, i cui valori sono pesi assegnati in base a quanto il token è signficativo all'interno del documento.

- Ad ogni index term del documento viene assegnato un peso in base alla sua rilevanza nella query. + Le query vengono anch'esse trasformate in vettori, e le rilevanze vengono ottenute dalla similitudine vettoriale tra i vettore query e i vettori documenti.

-

- Essendo i pesi indipendenti uno dall'altro, è possibile raggiungere un elevato parallelismo nel loro calcolo; viene però ignorato l'ordine delle parole nella query e nei documenti. -

+ +
+ Peso }> +

+ Un metodo di assegnamento peso che si basa sul prodotto dei fattori e : +

+ {`w = tf_{norm} \\cdot idf_{log}`} - + : Term frequency}>

- Rappresenta la query come un booleano, e valutandolo su ogni documento trova la rilevanza: + Misura quanto un token è frequente nel singolo documento:

-
    -
  • 1 se il è vero
  • -
  • 0 se il è falso
  • -
+ {`tf = \\frac{occorrenze}{totale\\ token}`}

- È semplice da implementare e specifico, ma poco user-friendly e non permette di ordinare i documenti. + Nella formula principale, viene normalizzato dividendolo per il più alto del documento, limitandolo così a valori tra 0 e 1:

- -

- Permette ai documenti di soddisfare parzialmente il : -

-
    -
  • 1.00 se il è vero
  • -
  • 0.XX se il è parzialmente vero
  • -
  • 0.00 se il è falso
  • -
-

- Le operazioni fuzzy diventano quindi: -

-
    -
  • AND: {`max( x_{A},\\ x_{B} )`}
  • -
  • OR: {`min( x_{A},\\ x_{B} )`}
  • -
  • NOT: {`1 - x_{A}`}
  • -
-

- A differenza del modello booleano standard, quello fuzzy funziona bene con documenti vaghi, ma rimane poco user-friendly. -

-
+ {`tf_{norm} = \\frac{tf}{\\max\\ tf_d}`}
- + : Inverse document freq.}>

- Rappresenta tutto come vettori multidimensionali, in cui ogni dimensione rappresenta una caratteristica. + Misura quanto un token è raro nella collezione di documenti:

+ {`idf = \\frac{documenti\\ con\\ occ.}{totale\\ documenti}`}

- Per ogni token, che sia di un documento o di una query, viene selezionato un peso non-negativo per ogni dimensione, in base a quanto il token presenta quella caratteristica. + Nella formula principale, viene logaritmizzato, al fine di ridurre significativamente il suo impatto:

- Pesi }> -

- Si basano sulla frequenza di un token in un documento. -

-

- Si possono calcolare in tre modi diversi: -

-
    -
  • - Frequenza: - {`tf = \\frac{occorrenze}{totale}`} -
  • -
  • - Frequenza normalizzata: - {`tf = \\frac{frequenza\\ del\\ termine}{frequenza\\ massima}`} -
  • -
  • - Frequenza logaritmica: Perchè non viene visualizzata? - {`tf = - \\begin{cases} - 0 \\qquad se\\ frequenza = 0\\ - 1 + \\log_{10} \\left( frequenza \\right) \\qquad altrimenti - \\end{cases} - `} -
  • -
-
-

- Il vettore query e i vettori documenti vengono poi confrontati attraverso misure di similitudine vettoriale, ottenendo come risultato la rilevanza dei documenti. -

-
- - + {`idf_{log} = \\log(idf)`}
+ + +

+ Modello classico che ordina i documenti in base alla loro probabilità di rilevanza. +

+

+ Da finire! +

+
+
) }