From a47b30fe4ac807bd064697f3762404978ced784d Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Thu, 4 Feb 2021 19:14:46 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Makes=20some=20more=20progress=20on?= =?UTF-8?q?=20B9=20-=20Tolerant=20Retrieval?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/routes/Gestinfo/abbr/Locuzione.js | 11 + src/routes/Gestinfo/index.js | 340 +++++++++++++++++++++++++- 2 files changed, 348 insertions(+), 3 deletions(-) create mode 100644 src/routes/Gestinfo/abbr/Locuzione.js diff --git a/src/routes/Gestinfo/abbr/Locuzione.js b/src/routes/Gestinfo/abbr/Locuzione.js new file mode 100644 index 0000000..6468bee --- /dev/null +++ b/src/routes/Gestinfo/abbr/Locuzione.js @@ -0,0 +1,11 @@ +import React from "react"; +import {Help} from "bluelib/lib/components"; + + +export default function Locuzione() { + return ( + locuzione + ) +}; + +Locuzione.propTypes = {} diff --git a/src/routes/Gestinfo/index.js b/src/routes/Gestinfo/index.js index 6b595c0..9d43020 100644 --- a/src/routes/Gestinfo/index.js +++ b/src/routes/Gestinfo/index.js @@ -18,6 +18,7 @@ import TF from "./abbr/TF"; import TFIDF from "./abbr/TFIDF"; import RSV from "./abbr/RSV"; import useSubtitle from "../../hooks/useSubtitle"; +import Locuzione from "./abbr/Locuzione"; const r = String.raw @@ -112,6 +113,48 @@ export default function Gestinfo() { + + +

+ Astrazione che rappresenta un singolo significato di una parola o . +

+ +
+ {`q`}-grammi}> +

+ Sequenze di {`q`} caratteri e spazi vuoti (░). +

+ + +
+

@@ -128,7 +171,7 @@ export default function Gestinfo() { Tutte le parole del documento vengono trasformate in token.

Spesso si decide di distinguere tra gli attraverso algoritmi di word sense disambiguation, in grado di dedurre il contesto analizzando i significati delle parole circostanti. @@ -153,9 +196,9 @@ export default function Gestinfo() {

  • - Trasformazione in minuscolo + Rimozione maiuscole non-significative:
  • @@ -164,6 +207,12 @@ export default function Gestinfo() { state-of-the-artstate of the art
  • +
  • + Correzione dei typo + +
  • @@ -346,6 +395,173 @@ export default function Gestinfo() { + + +

    + Una parte della normalizzazione dei token che corregge gli errori ortografici commessi durante l'inserimento della query. +

    +
    + +

    + Aumenta la soddisfazione dell'utente e gli consente di effettuare ricerche per termini di cui non conosce lo spelling. +

    +
    +
    + + +

    + È possibile applicare trovare per ogni token dei suoi vicini utilizzabili per migliorare la query: +

    + +

    + Dato un token, si cercano tutti i token entro un certo valore di edit distance. +

    + +

    + Il numero minimo di operazioni per convertire un token in un altro. +

    + + +

    + Definisce operazioni le seguenti azioni: +

    +
      +
    • Inserimento di un singolo carattere
    • +
    • Rimozione di un singolo carattere
    • +
    • Sostituzione di un singolo carattere
    • +
    + + +
    + +

    + Estende la distanza di Levenshtein con una nuova operazione: +

    +
      +
    • Trasposizione di un singolo carattere
    • +
    + +
    + +

    + Differenzia i costi delle varie operazioni, diffenenziando ad esempio in base al carattere sostituito. +

    + +
    +
    +
    +
    + Tramite overlap dei {`q`}-grammi}> +

    + Dato un token, si ordinano i token del vocabolario in base al numero di {`q`}-grammi in comune. +

    + +

    + Misura di overlap tra due insiemi di {`q`}-grammi {`X`} e {`Y`}: +

    + {r`Jaccard = \frac{size(X \cap Y)}{size(X \cup Y)}`} + +
    +
    + +

    + Esistono modi veloci per approssimare l'edit distance {`E`} dei token del vocabolario. Sono dei "se e solo se", giusto? +

    + + + + {r`\left| size(X) - size(Y) \right| \leq k`} + {r`\Updownarrow`} + {r`E \leq k`} + + + + {r`size(X \cap Y) = \max(size(X),\ size(Y)) + q - 1 - (k \cdot q)`} + {r`\Updownarrow`} + {r`E \leq k`} + + + + +

    + Richiede che venga tenuto traccia delle posizione dei {`q`}-grammi, e prevede che i {`q`}-grammi a più di {`k`} posizioni di distanza non vengano considerati uguali. +

    +
    +
    +

    + Scoperti i token "vicini", si può optare per varie soluzioni: +

    +
      +
    • + Mostrare le possibili correzioni all'utente + +
    • +
    • + Aggiungere i token vicini alla query + +
    • +
    • + Sostituire il token originale con il più vicino ad esso + +
    • +
    +
    +

    @@ -542,6 +758,124 @@ export default function Gestinfo() { + Implementazione dei patterns}> + +

      +
    1. + Separa prefisso e suffisso in due parti collegate da un AND: + +
    2. +
    3. + Trova i risultati delle due parti attraverso un doppio vocabolario implementato con sia prefix sia suffix tree: + +
    4. +
    5. + Effettua l'intersezione delle due parti: + +
    6. +
    +

    + È costoso in termini di tempo: ci saranno tanti risultati che andranno processati, e l'intersezione è {`O(n + m)`}. +

    +
    + + +

    + Un particolare vocabolario in cui vengono inserite tutte le possibili permutazioni di wildcard per ogni token: +

    + +
    +

    + È possibile effettuare ricerche wildcard ruotando la wildcard a destra, trasformando tutti i pattern in prefissi: +

    + +

    + È costoso in termini di spazio: ogni termine va salvato molte volte nel vocabolario (permuterm problem). +

    + +
    + Tramite {`q`}-gram indexes}> + {`q`}-gram index}> +

    + Vocabolario aggiuntivo che associa {`q`}-gram ai token corrispondenti del vocabolario principale. +

    + +
    +

    + È possibile interpretare la ricerca come intersezione di {`q`}-gram: +

    + +

    + I risultati della ricerca andranno post-filtrati, in quanto ci potrebbero essere dei falsi positivi: +

    + + +
    +
    Modelli di }>