From 58a6aa456835313a69f1d8844d90a069dee8581d Mon Sep 17 00:00:00 2001 From: Stefano Pigozzi Date: Fri, 4 Feb 2022 06:04:59 +0100 Subject: [PATCH] finish --- components/compat-old.tsx | 1 + components/link.jsx | 4 +- pages/_base.tsx | 22 - pages/index.tsx | 12 - pages/year2/apprendimento/index.tsx | 2 +- pages/year3/diritto/index.tsx | 25 + pages/year3/gestione/index.tsx | 81 + pages/year3/gestione/teoria.tsx | 1739 ++++++++++++++++++ pages/year3/gestione/tokenStyle.module.css | 6 + pages/year3/linguaggi/index.tsx | 70 + pages/year3/paradigmi/index.tsx | 62 + pages/year3/progetto/index.tsx | 51 + pages/year3/protocolli/index.tsx | 25 + pages/year3/tecweb/index.tsx | 57 + public/images/year3/gestione/documents.png | Bin 0 -> 12279 bytes public/images/year3/gestione/query.png | Bin 0 -> 11279 bytes public/images/year3/gestione/replacement.png | Bin 0 -> 10717 bytes public/images/year3/gestione/result.png | Bin 0 -> 32187 bytes public/images/year3/gestione/suggestion.png | Bin 0 -> 7882 bytes 19 files changed, 2120 insertions(+), 37 deletions(-) delete mode 100644 pages/_base.tsx create mode 100644 pages/year3/diritto/index.tsx create mode 100644 pages/year3/gestione/index.tsx create mode 100644 pages/year3/gestione/teoria.tsx create mode 100644 pages/year3/gestione/tokenStyle.module.css create mode 100644 pages/year3/linguaggi/index.tsx create mode 100644 pages/year3/paradigmi/index.tsx create mode 100644 pages/year3/progetto/index.tsx create mode 100644 pages/year3/protocolli/index.tsx create mode 100644 pages/year3/tecweb/index.tsx create mode 100644 public/images/year3/gestione/documents.png create mode 100644 public/images/year3/gestione/query.png create mode 100644 public/images/year3/gestione/replacement.png create mode 100644 public/images/year3/gestione/result.png create mode 100644 public/images/year3/gestione/suggestion.png diff --git a/components/compat-old.tsx b/components/compat-old.tsx index 0ab9e49..57de84e 100644 --- a/components/compat-old.tsx +++ b/components/compat-old.tsx @@ -131,5 +131,6 @@ export const LI = Bluelib.ListUnordered.Item export const Anchor = Bluelib.Anchor export const Link = Bluelib.Anchor export const BaseLink = Bluelib.Anchor +export const Aside = Bluelib.Parenthesis export const r = String.raw diff --git a/components/link.jsx b/components/link.jsx index 3bacd42..b48a33c 100644 --- a/components/link.jsx +++ b/components/link.jsx @@ -2,10 +2,10 @@ import NextLink from "next/link" import { Anchor as BluelibLink } from "@steffo/bluelib-react" -export const Link = ({children, href, nextProps = {}, bluelibProps = {}}) => { +export const Link = ({children, href, disabled = false, nextProps = {}, bluelibProps = {}}) => { return ( - + {children} diff --git a/pages/_base.tsx b/pages/_base.tsx deleted file mode 100644 index 349eec7..0000000 --- a/pages/_base.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { Heading, Chapter, Box, Idiomatic as I, Anchor as A } from '@steffo/bluelib-react' -import type { NextPage } from 'next' - -const Page: NextPage = () => { - return <> - - Titolo - - - - - Introduzione - -

- Cose -

-
-
- -} - -export default Page diff --git a/pages/index.tsx b/pages/index.tsx index 7843878..481da97 100644 --- a/pages/index.tsx +++ b/pages/index.tsx @@ -153,18 +153,6 @@ const Home: NextPage = () => { - - - - Tirocinio - - - - - Tesi - - - diff --git a/pages/year2/apprendimento/index.tsx b/pages/year2/apprendimento/index.tsx index 3ef9751..5f58383 100644 --- a/pages/year2/apprendimento/index.tsx +++ b/pages/year2/apprendimento/index.tsx @@ -15,7 +15,7 @@ const Page: NextPage = () => { Premessa

- Apprendimento ed evoluzione in sistemi artificiali è stato un corso molto discorsivo (un po' come il suo stesso nome). + Apprendimento ed evoluzione in sistemi artificiali è stato un corso molto discorsivo (un po' come il suo stesso nome), ma anche molto interessante!

Penso sia quasi controproduttivo studiare dai miei appunti, in quanto essi sono una sintesi, mentre al fine di passare l'esame è utile saper parlare bene di tutti i concetti. diff --git a/pages/year3/diritto/index.tsx b/pages/year3/diritto/index.tsx new file mode 100644 index 0000000..3cb5046 --- /dev/null +++ b/pages/year3/diritto/index.tsx @@ -0,0 +1,25 @@ +import { Heading, Chapter, Box, Idiomatic as I, Panel, ListUnordered } from '@steffo/bluelib-react' +import type { NextPage } from 'next' + +const Page: NextPage = () => { + return <> + + Diritto ed economia digitale + + + + + Premessa + +

+ Diritto ed economia digitale è stato un po' come Apprendimento ed evoluzione in sistemi artificiali: un esame entry-level molto discorsivo ed interessante. +

+

+ Non ho avuto bisogno di prendere appunti, e nemmeno saprei che materiale consigliare a qualcuno che deve prepararlo, ma mi è giunta voce che purtroppo sia stato rimosso dall'elenco degli esami a scelta, quindi non ci dovrebbe nemmeno essere il problema. +

+ + + +} + +export default Page diff --git a/pages/year3/gestione/index.tsx b/pages/year3/gestione/index.tsx new file mode 100644 index 0000000..7ee98e8 --- /dev/null +++ b/pages/year3/gestione/index.tsx @@ -0,0 +1,81 @@ +import { Heading, Chapter, Box, Idiomatic as I, Panel, ListUnordered } from '@steffo/bluelib-react' +import type { NextPage } from 'next' +import { Link } from '../../../components/link' + +const Page: NextPage = () => { + return <> + + Gestione dell'informazione + + + + + Premessa + +

+ Gestione dell'informazione: un corso... disordinato! +

+

+ Ho imparato parecchie cose da quest'esame, soprattutto dal progetto che ho realizzato per passarlo, ma le slides erano disorganizzate, e la prova scritta mi è sembrata in buona parte basata sulla fortuna. +

+
+
+ + + + Materiale raccolto + +

+ Avendolo dovuto provare due volte, ho raccolto e realizzato un sacco di materiale per questo corso! +

+ + + + Appuntiweb + + + + Appunti di teoria + + + + + + Progetto realizzato + + + + Mandarin + + + Mandarin Search + + + + + + Appunti di altri studenti + + + + GitLab di Sharon Guerzoni + + + + + + Collegamenti utili + + + + Introduction to Information Retrieval + + + + +
+
+ +} + +export default Page diff --git a/pages/year3/gestione/teoria.tsx b/pages/year3/gestione/teoria.tsx new file mode 100644 index 0000000..8358974 --- /dev/null +++ b/pages/year3/gestione/teoria.tsx @@ -0,0 +1,1739 @@ +import { Heading, Strikethrough, UAnnotation as U } from '@steffo/bluelib-react' +import type { NextPage } from 'next' +import { Link } from '../../../components/link' +import { Box, Split, r, Help, Color, Code, I, Todo, B, LI, Anchor, P, Aside, LatexMath } from "../../../components/compat-old" +import tokenStyle from "./tokenStyle.module.css" +import Image from "next/image" + + +const Token = ({ children = undefined, indexTerm = undefined, stopword = undefined }: any) => { + if(indexTerm) { + return ( + {children} + ) + } + + if(stopword) { + return ( + {children} + ) + } + + return ( + {children} + ) +} +const API = () => API +const Glob = () => Glob +const IC = () => IC +const IDF = () => {`idf`} +const IR = () => IR +const Locuzione = () => locuzione +const Omonimi = () => Omonimi +const Predicato = () => predicato +const RSV = () => RSV +const Regex = () => Regex +const TF = () => {`tf`} +const TFIDF = () => tf-idf +const UIN = () => UIN + + +const Page: NextPage = () => { + return <> + + + Ottimizzazione lineare intera + + + + +

+ Si parla di come processare enormi quantità di testo al fine di effettuarvi + ricerche. +

+ +
+ +

+ 🎓 Il corso è stato tenuto dalla Prof.ssa Federica Mandreoli. +

+

+ 📘 Le dispense sono disponibili su Dolly (FIM). +

+

+ 🎥 Le videolezioni sono state eliminate. +

+
+ +
    +
  • 📄 Dispense su Dolly
  • +
  • 📰 Wikipedia
  • +
  • 🗒️ Appunti open-source di Sharon Guerzoni
  • +
  • 📘 Libro di testo consigliato
  • +
  • 🌐 Introduction to Information Retrieval
  • +
+
+
+ + +

+ È il processo di raccolta documenti, elaborazione query e richiamo di più risposte. +

+

+ Un'applicazione che effettua si chiama motore di ricerca. +

+
+
+ + +

+ Sono le unità con cui lavora il motore di ricerca. +

+

+ Possono essere di vario tipo: pagine web, metadati di file, paper accademici... +

+ +

+ Vengono raccolti in svariati modi: possono provenire da , essere forniti manualmente e poi processati con un parser, essere scoperti tramite web crawling e processati tramite web scraping... +

+ +

+ Un insieme di documenti è detto collezione. +

+
+ +

+ La richiesta di informazioni effettuata da un utente, in un linguaggio che il motore di ricerca è in grado di capire. +

+ +

+ Solitamente vi è possibile inserire parole chiave e operatori per specificare cosa + si desidera trovare. +

+ +
+ +

+ I documenti che il motore di ricerca sceglie di mostrare all'utente in quanto li ha + ritenuti rilevanti alla query effettuata. +

+

+ Spesso sono composte da metadati del documento e da un breve estratto della + sezione del documento più rilevante. +

+ +
+
+ + +

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

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

+ Sequenze di {`q`} caratteri e spazi vuoti (indicati con ␣). +

+ + +
+
+ + +

+ Una procedura svolta quando un documento viene aggiunto al motore di ricerca, permettendone l'indicizzazione e in seguito il richiamo. +

+

+ È suddivisa in varie fasi, generalmente 5 o 6. +

+
+
+ + +

+ 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. +

+ +
+ +

+ Il motore di ricerca decide come trattare i simboli tipografici, la grafia delle lettere, le cifre, modificando l'insieme di token come ritiene necessario. +

+ +
+ +

+ Le stopwords, i token ritenuti inutili ai fini delle ricerche, vengono eliminate dall'insieme di token ottenuto nel passo precedente. +

+

+ Stopwords comuni sono gli articoli, le congiunzioni e, in generale, tutte le parole più frequenti di una lingua. +

+ +

+ Talvolta capita di dover distinguere tra stopwords e nomi propri, soprattutto + nell'inglese; per risolvere il problema ci si affida alla disambiguazione degli Omonimi + effettuata durante l'analisi lessicale. +

+ +
+
+ + +

+ Ai token del passo precedente vengono sostituite le radici (stems) oppure le forme base (lemmas) delle parole. +

+ + +

+ Gli algoritmi che realizzano questo passo sono detti rispettivamente stemmer o lemmatizer. +

+ +
+ +

+ Il motore di ricerca stabilisce la relativa importanza di ciascun token dell'insieme, in modo da determinare più facilmente in seguito la rilevanza del documento in cui si trovano. +

+

+ I termini più importanti di un documento sono detti index term. +

+ +

+ Essi solitamente sono individuati da parser e scanner, che + analizzano la semantica di ciascun token. +

+
+ +

+ Opzionalmente, l'intero documento può essere inserito in una o più categorie di un thesaurus, una gerarchia predeterminata di categorie di documenti. +

+ + +
+
+ + +

+ Una misura di quanto due token hanno significati in comune. +

+ +

+ Generalmente si basa su un thesaurus. +

+
+ +

+ La word sense disambiguation sfrutta la similitudine tra l'ononimo e i token circostanti per stabilire il significato corretto. +

+

+ Talvolta alla similitudine sono aggiunte anche altre informazioni, come la distanza tra i token e dati provenienti da sorgenti esterne. +

+
+
+ + +

+ Un modo di misurare la similitudine tra due token basato sulla loro posizione all'interno del thesaurus. +

+ + +

+ Si basa sull'inverso della distanza tra i due token all'interno dell'albero: +

+ {`sim_{pd}(t_1, t_2) = \\frac{1}{dist(t_1, t_2) + 1}`} +
+ +

+ Si basa sulla profondità del minimo antenato comune tra i due token: +

+ {`sim_{wp}(t_1, t_2) = 2 \\cdot \\frac{depth(mac_{\\ t_1,t_2})}{depth(t_1) + depth(t_2)}`} + +
+
+
+
+ + Similitudine -based}> +

+ L' è una misura probabilistica di quanto un token sia inaspettato all'interno di un documento. +

+

+ Definendo {`P(t)`} come la probabilità che un token scelto a caso sia {`t`}, l' sarà: +

+ {`ic(t) = - \\log \\left( P(t) \\right)`} +

+ La similitudine -based è quindi un modo di misurare la similitudine basato + sull'. +

+ + +

+ Si basa sull' del minimo antenato comune: +

+ {`sim_{r} (t_1,t_2) = ic \\left( mac_{\\ t_1,t_2} \\right)`} +
+
+
+ + +

+ 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 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
  • +
+ + +

+ Matrice costruita per calcolare la distanza di Levenshtein con un algoritmo greedy: +

+ +
+
+ +

+ 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. +

+ +
+
+

+ Calcolare l'edit distance {`E`} tra due token è un processo computazionalmente molto costoso {`O(n^2)`}. +

+ +

+ È possibile evitare di calcolare l'edit distance per la maggior parte dei termini del + vocabolario pre-filtrandoli su criteri computazionalmente più veloci. +

+ + + + {r`E \geq \left| size(X) - size(Y) \right|`} + + Differenza di {r`q`}-grammi}> + + + {r`E \geq \frac{\max ( size(X), size(Y) ) - size(X \cap Y) + q - 1}{q}`} + + + Posizione dei {r`q`}-grammi}> + +

+ 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. +

+
+
+
+
+
+ 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 motori di ricerca che usano un algoritmo per convertire i token nella loro + corrispondente pronuncia ed effettuano match sulla base di quest'ultima. +

+ +
+ +

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

+ + +

+ Sostituire automaticamente il token originale con il più vicino ad esso. +

+

+ Richiede che le possibili correzioni siano ordinate. +

+ +
+ +

+ Visualizzare l'errore all'utente, e permettergli di correggerlo rapidamente. +

+

+ Richiede più interazione da parte dell'utente. +

+ +
+ +

+ Aggiungere automaticamente alla query i token corretti. +

+

+ Richiede più tempo di ricerca, perchè nella query saranno presenti più token. +

+
+
+
+
+ +

+ È possibile confrontare ogni token con il contesto dei termini circostanti per rilevare ulteriori errori. +

+ + +

+ Un metodo che prevede di enumerare varie alternative aventi contesti concordi e di restituire quella con il maggior numero di risultati. +

+
+ +

+ Un metodo che prevede di enumerare varie alternative aventi contesti concordi e di restituire quella che è stata ricercata più volte. +

+
+
+
+ + +

+ Gli indici sono strutture dati in cui vengono inseriti i documenti e i loro token dopo essere stati preparati. +

+

+ L'indicizzazione è la procedura che crea e mantiene aggiornati uno o più indici. +

+
+ +

+ Sono fondamentali per velocizzare notevolmente le ricerche e per permettere certi tipi di operazioni sulle query. +

+
+
+ +

+ Un indice basato sulla costruzione di una matrice in cui le righe sono i documenti, le colonne i token e le celle valori booleani che descrivono se il token compare nel documento. +

+

+ È terribilmente inefficiente in termini di spazio, perchè la matrice è sparsa. +

+

+ Una sua evoluzione spazialmente più efficiente è l'inverted index. +

+
+ +

+ L'indice più comune, costituito da tante posting list raggiungibili attraverso un vocabolario. +

+ + +

+ L'insieme di tutte le occorrenze di un dato token. +

+

+ Può essere realizzata in due modi: +

+
    +
  • + Document-based: lista ordinata di documenti con la frequenza del token in essi +
  • +
  • + Word-based: lista ordinata di documenti che punta a una lista ordinata delle posizioni del token in essi +
  • +
+

+ Essendo le liste ordinate, vi è possibile effettuare operazioni di unione e intersezione in tempo lineare utilizzando dei cursori. +

+

+ Non è però altrettanto efficiente in operazioni di negazione. +

+
+ +

+ L'insieme delle associazioni tra token e la loro posting list. +

+

+ Ci sono tanti modi diversi di implementarlo: +

+
    +
  • + Doppia lista ordinata: lista di token che punta a una lista di occorrenze +
  • +
  • + Trie: albero in cui ogni arco rappresenta una stringa e ogni nodo una concatenazione delle stringhe tra sè e la radice +
      +
    • Prefix tree: trie che usa i prefissi dei token
    • +
    • Suffix tree: trie che usa i suffissi dei token
    • +
    +
  • +
  • + B+ tree: albero particolarmente ottimizzato, in cui le foglie sono le occorrenze +
  • +
  • + Dizionario: hashmap che usa come chiave il token stesso, e una lista di occorrenze come valore +
  • +
+

+ Generalmente, occupano spazio logaritmico rispetto al numero di token. +

+
+
+
+ + +

+ Ogni motore di ricerca implementa un diverso query language, un'interfaccia per l'utente che gli permette di effettuare ricerche in base alla sua necessità di informazioni . +

+ +

+ Ogni query language può poi implementare diverse funzionalità in base al tipo di documento indicizzato. +

+
+ +

+ Essendo una via di mezzo tra linguaggio naturale e linguaggio di programmazione, permettono a un utente qualunque di fruire del motore di ricerca, senza bisogno di conoscenze approfondite sul suo funzionamento. +

+
+
+ + +

+ All'interno della query vengono inserite una o più keywords da ricercare all'interno dei documenti. +

+ +
+ +

+ Prevedono la possibilità di richiedere che due o più keyword siano consecutive. +

+ +
+ +

+ Prevedono la possibilità di richiedere che due o più keyword siano a una certa distanza una dall'altra. +

+ +
+
+ + +

+ Prevedono la possibilità di cercare prefissi, suffissi, sottostringhe e intervalli di keyword. +

+ +
+ +

+ Prevedono la possibilità di usare tag provenienti da un thesaurus limitato di cui è garantita la precisione. +

+ +
+
+ + +

+ Prevedono la possibilità di limitare la query a specifiche sezioni del documento. +

+ +
+ +

+ Prevedono la possibilità di effettuare più query e applicare le operazioni di intersezione, unione e negazione sui risultati. +

+ +
+
+ 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 prefix tree in cui vengono inserite tutte le possibili permutazioni di ogni token, con in aggiunta un marcatore per la fine della parola (░): +

+ +
+

+ È 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`}-grammi ai token corrispondenti del vocabolario principale. +

+ +
+

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

+ +

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

+ + +
+
+ Modelli di }> + +

+ Sono modelli matematici in grado di selezionare e ordinare i documenti in base alla loro rilevanza rispetto alla query. +

+
+ +

+ Stabiliscono i risultati richiamati dal motore di ricerca e l'ordine con cui vengono visualizzati. +

+
+
+ +

+ 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. +

+
+ + +

+ 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 {`d`}, i cui valori sono pesi {`d_i`} assegnati in base a quanto il token è signficativo all'interno del documento. +

+ + +

+ Le query vengono anch'esse trasformate in vettori {`q`}, e le rilevanze vengono ottenute dalla similitudine vettoriale tra i vettore query e i vettori documenti. +

+ + Peso }> +

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

+ {`d_i = tf_{norm}(i) \\cdot idf_{log}(i)`} + : Term frequency}> +

+ Misura quanto un token è frequente nel singolo documento: +

+ {`tf(i) = \\frac{occorrenze}{totale\\ token}`} +

+ Nella formula principale, viene normalizzato dividendolo per il più alto del documento, limitandolo così a valori tra 0 e 1: +

+ {`tf_{norm}(i) = \\frac{tf(i)}{\\max_{j:\\ docs}\\ tf(j)}`} +
+ : Inverse document freq.}> +

+ Misura quanto un token è raro nella collezione di documenti: +

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

+ Nella formula principale, viene logaritmizzato, al fine di ridurre significativamente il suo impatto: +

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

+ Un modo di misurare la similitudine tra insiemi di token rappresentati come dimensioni vettoriali. +

+ +

+ Si basa sulla norma a 2, e corrisponde a cercare l'angolo centrato all'origine tra i due vettori: +

+ {` + sim_{\\cos} (d, q) = + \\frac{ + \\vec{d} \\cdot \\vec{q} + }{ + \\| \\vec{d} \\|_2 \\cdot \\| \\vec{q} \\|_2 + } = + \\frac{ + \\sum_{i = 0}^{dim.} (d_i \\cdot q_i ) + }{ + \\sqrt{\\sum_{i = 0}^{dim.} (d_i^2)} \\cdot \\sqrt{\\sum_{i = 0}^{dim.} (q_i^2}) + } + `} + +
+ +
+
+ +

+ Implementazione del modello vettoriale che ordina i documenti {`d`} in base alla probabilità {`R`} che siano rilevanti per la query {`q`}: +

+ {`sim_{prob} = \\frac{P(R\\ |\\ d, q)}{P(\\overline{R}\\ |\\ d, q)}`} +

+ Si dimostra che è possibile determinare quanto la presenza di un dato token {`k_i`} in un documento {r`d`} ne contribuisca alla rilevanza per la query {r`\vec{q}`}: +

+ {` + c_i = + \\log \\frac{P(k_i\\ |\\ R, \\vec{q})}{1 - P(k_i\\ |\\ R, \\vec{q})} + + + \\log \\frac{1 - P(k_i\\ |\\ \\overline{R}, \\vec{q})}{P(k_i\\ |\\ \\overline{R}, \\vec{q})} + `} + + + + + + + + + +
+
+
+ +

+ Modello classico che ordina i documenti in base a un punteggio ad essi assegnato. +

+

+ L' deriva dalla somma per ogni termine della query del prodotto di tre fattori: +

+ {`RSV = \sum_{t \in q} (x \\cdot y \\cdot z)`} + + Fattore {`x`}}> +

+ Un moltiplicatore basato sull' dei termini della query presenti nel documento: +

+ {r` + x = ( idf_{\log} ) + `} +
+ Fattore {`y`}}> +

+ Un moltiplicatore basato sulla nel documento dei termini nella query: +

+ {r` + y' = \frac{ (k_1 + 1) \cdot tf_{td} }{ k_1 + tf_{td} } + `} + +

+ Ad esso viene in genere applicata una normalizzazione basata sulla lunghezza del documento: +

+ {r` + y = \frac{(k_1 + 1) \cdot tf_{td}}{k_1 \cdot \left( 1 - b + \left( b \cdot \frac{L_d}{L_{avg}} \right) \right) + tf_{td}} + `} + +
+ Fattore {`z`}}> +

+ Un moltiplicatore basato sulla nella query stessa dei termini nella query: +

+ {`z = \\frac{(k_3 + 1) \\cdot tf_{tq}}{k_3 + tf_{tq}}`} + +

+ Ad esso non viene ovviamente applicata alcuna normalizzazione. +

+
+
+
+ +

+ Modello per classificare documenti intercollegati in base a come essi sono collegati tra loro. +

+ + + +

+ Algoritmo di Link Analysis Ranking query-independent che assegna un grado a ogni pagina indicizzata. +

+ + +

+ Misura iterativa di quanto una pagina è importante rispetto a tutte le altre indicizzate. +

+ {r` + R'_i(p) = (1 - \alpha) \cdot \sum_{q:\ parents} \left( \frac{R_{i-1}(q)}{N_q} \right) + \alpha \cdot E(p) + `} +

+ In cui: +

+
    +
  • + {`q`} è una pagina che referenzia quella in questione; +
  • +
  • + {`R_{i-1}(q)`} è il rank normalizzato della pagina {r`q`}; +
  • +
  • + {`N_q`} è il numero totale di link presenti nella pagina q; +
  • +
  • + {`E(p)`} è una sorgente di rank; +
  • +
  • + {`\\alpha`} è un parametro che regola l'emissione della sorgente di rank e la dissipazione del rank preesistente. +
  • +
+ + +

+ Funzione che introduce nuovo rank nel sistema ad ogni iterazione. +

+ +

+ PageRank normale prevede che questa funzione sia costante; è possibile però personalizzarlo rendendo la funzione variabile, facendo in modo che vengano assegnati rank più alti a certi tipi di pagine. +

+ +
+
+ +

+ Rank riscalato a valori inclusi tra 0 e 1. +

+ {r` + R_i(p) = \frac{R'_i(p)}{\sum_{d:\ pages} \left( R'_i(d) \right)} + `} +

+ Solitamente, il rank viene rinormalizzato ad ogni iterazione. +

+
+
+ +

+ Algoritmo di Link Analysis Ranking query-dependent che attribuisce due diversi valori ad ogni pagina: autorità e hubness. +

+ +

+ Viene applicato solo a un base set, ovvero all'unione del root set (i match + della query) con tutti i nodi ad essi direttamente connessi. +

+ + +

+ Misura di quanto la pagina in questione viene referenziata da altri siti + autoritativi. +

+ + {r` + a'_i(p) = \sum_{e:\ entering} h_{i-1}(e) + `} +
+ +

+ Misura di quanto la pagina in questione referenzia siti autoritativi. +

+ + {r` + h'_i(p) = \sum_{l:\ leaving} a_{i-1}(l) + `} +
+
+ + +

+ Autorità riscalata a valori inclusi tra 0 e 1. +

+ {r` + a_i(p) = \frac{a'_i(p)}{\sum_{d:\ pages} \left( a'_i(d) \right)} + `} +
+ +

+ Hubness riscalata a valori inclusi tra 0 e 1. +

+ {r` + h_i(p) = \frac{h'_i(p)}{\sum_{d:\ pages} \left( h'_i(d) \right)} + `} +
+
+ +
+
+
+ Profilazione sistemi }> + +

+ Misurazioni che vengono effettuate sui sistemi di . +

+ +
+ +

+ Per vedere quanto funziona bene un sistema di ! +

+ +
+
+ +

+ Per ottenere delle misure, solitamente si preparano in anticipo delle query dette benchmark delle quali si è già a conoscenza dei documenti rilevanti. +

+ +
+ +

+ Le due misure usate più di frequente per misurare l'utilità dei risultati sono recall e precision. +

+ + +

+ Misura quanti documenti rilevanti sono stati richiamati dalla collezione: +

+ {`Recall = \\frac{size(A \\cap R)}{size(R)}`} +
+ +

+ Misura quanti documenti richiamati sono rilevanti: +

+ {`Precision = \\frac{size(A \\cap R)}{size(A)}`} +
+
+ +
+ + + +

+ La precisione di una query che richiama {`R`} elementi. +

+
+ +

+ A precisione {`R`}, il richiamo relativo ad una query. +

+
+
+ + +

+ Curva che associa percentili di richiamo ai corrispondenti valori di R-Precision. +

+ +

+ È detta naturale se include un punto per ogni documento richiamato. +

+

+ È detta standard se usa le percentuali da 10% a 100% come punti. +

+
+ +

+ Mostra il valore massimo di precisione per valori di richiamo maggiori o uguali a quelli del punto. +

+ + +
+
+
+ +

+ Esistono misure che riassumono i risultati di più benchmark in una sola. +

+ + +

+ Se si hanno più benchmark, corrispondenti a più curve di richiamo, si possono + ottenere le medie dei valori ai vari livelli, ottenendo così una curva di + precisione media. +

+
+ +

+ La media di tutti i livelli di precisione media. +

+
+
+ + +

+ Misura che combina richiamo e precisione in un singolo valore: +

+ {r` + F = \frac{2}{\frac{1}{Recall} + \frac{1}{Precision}} = 2 \cdot \frac{Recall \cdot Precision}{Recall + Precision} + `} +
+ +

+ Complemento della media armonica configurabile che permette di selezionare se + dare priorità {`b`} alla precisione + ({`b > 1`}) oppure al richiamo ({`b < 1`}): +

+ {r` + E = 1 - \frac{1 + b^2}{\frac{b^2}{Recall} + \frac{1}{Precision}} + `} +
+
+ + + +

+ Misura che attribuisce guadagni decrescenti in base alla precisione di ogni + documento richiamato. +

+ +
+ +

+ Variante del Discounted Cumulative Gain che divide il punteggio finale per il + valore perfetto ottenibile. +

+ +
+
+
+ + +

+ Il modo in cui i risultati vengono visualizzati all'utente. +

+
+ +

+ Permettere all'utente di vedere velocemente tutti i risultati e di scegliere il + risultato a lui più utile. +

+
+
+ +

+ Il motore di ricerca web mostra all'utente un elenco di collegamenti ai documenti + richiamati. +

+

+ Solitamente include alcuni dati del documento, come titolo, sommario e url. +

+ +

+ Un breve riassunto del contenuto del documento richiamato. +

+ + +

+ Un sommario i cui contenuti dipendono solo dal documento, e non dalla query + immessa. +

+ +
+ +

+ Un sommario che varia da query a query, evidenziando le parti rilevanti del + documento. +

+ +
+
+
+
+ +} + +export default Page diff --git a/pages/year3/gestione/tokenStyle.module.css b/pages/year3/gestione/tokenStyle.module.css new file mode 100644 index 0000000..a3ceadc --- /dev/null +++ b/pages/year3/gestione/tokenStyle.module.css @@ -0,0 +1,6 @@ +.token { + border: 1px currentColor solid; + border-radius: 2px; + padding: 2px; + line-height: 2em; +} diff --git a/pages/year3/linguaggi/index.tsx b/pages/year3/linguaggi/index.tsx new file mode 100644 index 0000000..e48b58c --- /dev/null +++ b/pages/year3/linguaggi/index.tsx @@ -0,0 +1,70 @@ +import { Heading, Chapter, Box, Idiomatic as I, Panel, ListUnordered } from '@steffo/bluelib-react' +import type { NextPage } from 'next' +import { Link } from '../../../components/link' + +const Page: NextPage = () => { + return <> + + Linguaggi dinamici + + + + + Premessa + +

+ Linguaggi dinamici è stato il Dark Souls delle introduzioni a Python. +

+

+ Un sacco di concetti complessi spiegati molto velocemente (o addirittura in modo errato!), un po' di Perl buttato lì a caso (per giustificare il plurale nel nome del corso?), e vaghi riferimenti alle macro di Lisp (trattato nel semestre successivo!)... +

+

+ Per non parlare dell'esame che è stato praticamente una sfida di code golfing... +

+
+
+ + + + Materiale raccolto + +

+ Avendo già usato Python ampiamente in passato, non ho avuto problemi, quindi non ho preso appunti. +

+

+ Ho però alcune risorse che possono aiutare molto ad apprendere il linguaggio! +

+ + + + Collegamenti utili + + + + Documentazione di Python 3 + + + Tag [python] di Stack Overflow + + + Il subreddit /r/learnpython e la relativa wiki + + + + + + Esempi pratici + + + + Su GitHub Gist + + + + +
+
+ +} + +export default Page diff --git a/pages/year3/paradigmi/index.tsx b/pages/year3/paradigmi/index.tsx new file mode 100644 index 0000000..3c36358 --- /dev/null +++ b/pages/year3/paradigmi/index.tsx @@ -0,0 +1,62 @@ +import { Heading, Chapter, Box, Idiomatic as I, Panel, ListUnordered, Abbreviation } from '@steffo/bluelib-react' +import type { NextPage } from 'next' +import { Link } from '../../../components/link' + +const Page: NextPage = () => { + return <> + + Paradigmi e linguaggi di programmazione + + + + + Premessa + +

+ Paradigmi e linguaggi di programmazione è stato... la parte mancante di Linguaggi dinamici. +

+

+ È stato quell'anello mancante che ha dato un senso a tutta la teoria decontestualizzata di LD... Bizzarro, visto che il corso ha avuto luogo nel semestre successivo. +

+
+
+ + + + Materiale raccolto + +

+ Non ho moltissimo materiale di Paradigmi... +

+

+ Ho qualche esercizietto svolto qua e là, e un link alla guida che ho usato per imparare CLisp. +

+ + + + Esercizi svolti + + + + Tris in Prolog + Lunghezza di una lista in Prolog + + + + + + Collegamenti utili + + + + LISP Tutorial su Tutorialspoint + + + + +
+
+ +} + +export default Page diff --git a/pages/year3/progetto/index.tsx b/pages/year3/progetto/index.tsx new file mode 100644 index 0000000..754bf69 --- /dev/null +++ b/pages/year3/progetto/index.tsx @@ -0,0 +1,51 @@ +import { Heading, Chapter, Box, Idiomatic as I, Panel, ListUnordered } from '@steffo/bluelib-react' +import type { NextPage } from 'next' +import { Link } from '../../../components/link' + +const Page: NextPage = () => { + return <> + + Progetto del software + + + + + Premessa + +

+ Progetto del Software. Una montagna, in termini di tempo richiesto per svolgere il progetto. +

+

+ Ma al tempo stesso, molto, molto soddisfacente. Svolgere un progetto in 7 e vedere lentamente che prende forma è stata un'esperienza importante, a mio parere. +

+

+ Complimenti al resto del mio gruppo per aver portato a termine l'impresa! :D +

+
+
+ + + + Materiale raccolto + +

+ Abbiamo pubblicato il nostro progetto completato su GitHub! +

+ + + + Progetto di esame + + + + N.E.S.T., con relativa documentazione + + + + +
+
+ +} + +export default Page diff --git a/pages/year3/protocolli/index.tsx b/pages/year3/protocolli/index.tsx new file mode 100644 index 0000000..a64872c --- /dev/null +++ b/pages/year3/protocolli/index.tsx @@ -0,0 +1,25 @@ +import { Heading, Chapter, Box, Idiomatic as I, Panel, ListUnordered } from '@steffo/bluelib-react' +import type { NextPage } from 'next' + +const Page: NextPage = () => { + return <> + + Protocolli e architetture di rete + + + + + Premessa + +

+ Un esame decisamente ben fatto, ma il cui materiale trattava la materia di indirizzo delle mie scuole superiori. Niente miei appunti qui, mi spiace... +

+

+ Le slides del prof. erano ottime: se le fornisce ancora, vi consiglio di studiare su quelle! +

+
+
+ +} + +export default Page diff --git a/pages/year3/tecweb/index.tsx b/pages/year3/tecweb/index.tsx new file mode 100644 index 0000000..8c2b020 --- /dev/null +++ b/pages/year3/tecweb/index.tsx @@ -0,0 +1,57 @@ +import { Heading, Chapter, Box, Idiomatic as I, Panel, ListUnordered } from '@steffo/bluelib-react' +import type { NextPage } from 'next' +import { Link } from '../../../components/link' + +const Page: NextPage = () => { + return <> + + Tecnologie web + + + + + Premessa + +

+ Avendo fatto tirocinio e tesi con la prof.ssa di Tecnologie Web, l'esame orale è stato più una formalità che altro. +

+

+ Non saprei bene cosa consigliare a chi deve dare questo esame: di sicuro servono buone conoscenze di Python e in generale di programmazione, ma oltre a quello... boh? +

+
+
+ + + + Materiale raccolto + +

+ Ho allegato qui il mio progetto di tesi con tutta la relativa documentazione. +

+

+ Spero possa esservi utile, anche se è di un ordine di grandezza superiore a quello che va realizzato per passare l'esame! +

+ + + + Progetto di esame, tirocinio e tesi + + + + Sophon + + + Relazione sul progetto + + + Tesi + + + + +
+
+ +} + +export default Page diff --git a/public/images/year3/gestione/documents.png b/public/images/year3/gestione/documents.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a9719b0f47bc9c9dc9db655ee5a4f26a8d7a0a GIT binary patch literal 12279 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� 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 RbCMrWl2el{l`;SF-v9!W8Mpud literal 0 HcmV?d00001 diff --git a/public/images/year3/gestione/query.png b/public/images/year3/gestione/query.png new file mode 100644 index 0000000000000000000000000000000000000000..59f3573080e68f490e98065b76398d227d8207ce GIT binary patch literal 11279 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 literal 0 HcmV?d00001 diff --git a/public/images/year3/gestione/replacement.png b/public/images/year3/gestione/replacement.png new file mode 100644 index 0000000000000000000000000000000000000000..0f0087eac3ea8e291e9413683c4090820fe8831f GIT binary patch literal 10717 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 JBlb1uzW^J$dffm3 literal 0 HcmV?d00001 diff --git a/public/images/year3/gestione/suggestion.png b/public/images/year3/gestione/suggestion.png new file mode 100644 index 0000000000000000000000000000000000000000..d83bd500e167fb82c0fc7cc1701df0e6bd5505ec GIT binary patch literal 7882 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