1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-26 09:54:19 +00:00

Idr what i did

This commit is contained in:
Steffo 2021-01-27 03:39:57 +01:00
parent 6080e245fb
commit 4f66018538
Signed by: steffo
GPG key ID: 6965406171929D01
3 changed files with 109 additions and 46 deletions

View file

@ -1,14 +1,29 @@
import React from "react";
import PropTypes from "prop-types";
import style from "./Token.module.css";
import {Bold, Strike, Color} from "bluelib/lib/components";
export default function Token({children}) {
export default function Token({children, indexTerm, stopword}) {
if(indexTerm) {
return (
<Bold><Color value={"yellow"}><span className={style.token}>{children}</span></Color></Bold>
)
}
if(stopword) {
return (
<Strike><Color value={"red"}><span className={style.token}>{children}</span></Color></Strike>
)
}
return (
<span className={style.token}>{children}</span>
)
}
Token.propTypes = {
children: PropTypes.node
children: PropTypes.node,
indexTerm: PropTypes.bool,
stopword: PropTypes.bool,
}

View file

@ -2,4 +2,5 @@
border: 1px currentColor solid;
border-radius: 2px;
padding: 2px;
}
line-height: 2em;
}

View file

@ -32,7 +32,7 @@ export default function Gestinfo() {
</P>
</TitleBox>
</Split>
<TitleSplit title={"L'Information Retrieval"}>
<TitleSplit title={"Information Retrieval"}>
<TitleBox title={"Cos'è?"}>
<P>
È il <B>processo</B> di <B>raccolta documenti</B>, <B>elaborazione query</B> e <B>richiamo di più risposte</B>.
@ -101,31 +101,69 @@ export default function Gestinfo() {
<P>
Tutte le parole del documento vengono trasformate in <B>token</B>.
</P>
<P>
Il motore di ricerca decide se considerare come parte dei token i <B>simboli</B> tipografici, la <B><Help text={"Quello che in inglese si chiama 'case'. Sono grafie il maiuscolo, il minuscolo, il corsivo..."}>grafia</Help></B> delle lettere, le <B>cifre</B>...
</P>
<Aside>
Basi di Dati <Token>Basi</Token> <Token>di</Token> <Token>Dati</Token>
</Aside>
<P>
Spesso si decide di <B>distinguere</B> tra gli <B><Help text={"Parole che si leggono e scrivono uguale ma significano cose diverse."}>ononimi</Help></B> attraverso algoritmi di <B><I>word sense disambiguation</I></B>, in grado di dedurre il contesto analizzando i significati delle parole circostanti.
</P>
<Aside>
<Token>sale 🧂</Token> oppure <Token>sale 🪜</Token> ?
<Token>Sale 🧂</Token> oppure <Token>Sale 🪜</Token>?
</Aside>
</TitleBox>
<TitleBox title={"2. Eliminazione delle stopwords"}>
<TitleBox title={"2. Normalizzazione dei token"}>
<P>
Il motore di ricerca decide come trattare i <B>simboli</B> tipografici, la <B><Help text={"Quello che in inglese si chiama 'case'. Sono grafie il maiuscolo, il minuscolo, il corsivo..."}>grafia</Help></B> delle lettere, le <B>cifre</B>, modificando l'insieme di token come ritiene necessario.
</P>
<Aside>
<P>
Alcune possibili modifiche:
</P>
<ul>
<LI>
Rimozione degli accenti
<Aside>
<Token>caffè</Token> <Token>caffe</Token>
</Aside>
</LI>
<LI>
Trasformazione in minuscolo
<Aside>
<Token>Basi</Token> <Token>di</Token> <Token>Dati</Token> <Token>basi</Token> <Token>di</Token> <Token>dati</Token>
</Aside>
</LI>
<LI>
Separazione dei trattini
<Aside>
<Token>state-of-the-art</Token> <Token>state</Token> <Token>of</Token> <Token>the</Token> <Token>art</Token>
</Aside>
</LI>
</ul>
</Aside>
</TitleBox>
<TitleBox title={"3. Eliminazione delle stopwords"}>
<P>
Le <I>stopwords</I>, i token ritenuti <B>inutili</B> ai fini delle ricerche, vengono <B>eliminate</B> dall'insieme di token ottenuto nel passo precedente.
</P>
<P>
Stopwords comuni sono gli <B><Help text={"Il, lo, la, un, una..."}>articoli</Help></B>, le <B><Help text={"E, perchè, ma, così..."}>congiunzioni</Help></B> e tutte le <B>parole più frequenti</B> di una lingua.
Stopwords comuni sono gli <B><Help text={"Il, lo, la, un, una..."}>articoli</Help></B>, le <B><Help text={"E, perchè, ma, così..."}>congiunzioni</Help></B> e, in generale, tutte le <B>parole più frequenti</B> di una lingua.
</P>
<Aside>
<Token>basi</Token> <Token stopword={true}>di</Token> <Token>dati</Token>
</Aside>
<P>
Talvolta capita di dover <B>distinguere</B> tra stopwords e <B>nomi propri</B>, soprattutto nell'inglese; per risolvere il problema ci si affida alla disambiguazione degli ononimi effettuata durante l'analisi lessicale.
</P>
<Aside>
La band <Anchor href={"https://en.wikipedia.org/wiki/The_Who"}>The Who</Anchor> è l'incubo dei motori di ricerca che eliminano indiscriminatamente le stopwords.
La band <Anchor href={"https://en.wikipedia.org/wiki/The_Who"}>The Who</Anchor> è l'incubo dei motori di ricerca che eliminano indiscriminatamente le stopwords:
<Aside>
<Token stopword={true}>The</Token> <Token stopword={true}>Who</Token>
</Aside>
</Aside>
</TitleBox>
<TitleBox title={"3. Stemming / Lemmatizzazione"}>
</Split>
<Split>
<TitleBox title={"4. Stemming / Lemmatizzazione"}>
<P>
Ai token del passo precedente vengono sostituite le <B>radici</B> (<I>stems</I>) oppure le <B>forme base</B> (<I>lemmas</I>) delle parole.
</P>
@ -161,47 +199,56 @@ export default function Gestinfo() {
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>.
</Aside>
</TitleBox>
</Split>
<Split>
<TitleBox title={"4. Normalizzazione dei token"}>
<P>
I <B>simboli</B> rimasti nei token vengono processati, sostituendoli con caratteri diversi oppure sdoppiando i token in diverse forme.
</P>
<Aside>
<P>
Alcune delle operazioni che possono essere effettuate sono:
</P>
<ul>
<LI>
Rimozione degli accenti
<Aside>
<Token>caffè</Token> <Token>caffe</Token>
</Aside>
</LI>
<LI>
Separazione dei trattini
<Aside>
<Token>state-of-the-art</Token> <Token>state</Token> <Token>of</Token> <Token>the</Token> <Token>art</Token>
</Aside>
</LI>
<LI>
Rimozione della punteggiatura
<Aside>
<Token>2020 d.c.</Token> <Token>2020dc</Token>
</Aside>
</LI>
</ul>
</Aside>
</TitleBox>
<TitleBox title={"5. Selezione degli index term"}>
<P>
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.
</P>
<P>
I termini più importanti di un documento sono detti <B><I>index term</I></B>.
</P>
<Aside>
<Token>appunti</Token> <Token>universitari</Token> <Token indexTerm={true}>appunti</Token> <Token>universitari</Token>
</Aside>
<P>
Essi solitamente sono individuati da <B><I>parser</I></B> e <B><I>scanner</I></B>, che analizzano la semantica di ciascun token.
</P>
</TitleBox>
<TitleBox title={"6. Categorizzazione"}>
<P>
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.
</P>
<Aside>
Un esempio di thesaurus per delle sculture:
<ul>
<LI>
Materiale
<ul>
<LI>
Legno
<ul>
<LI>Pino</LI>
<LI>Betulla</LI>
<LI>Mogano</LI>
</ul>
</LI>
<LI>
Pietra
</LI>
</ul>
</LI>
<LI>
Forma
<ul>
<LI>Cubica</LI>
<LI>Sferica</LI>
<LI>Umanoide</LI>
</ul>
</LI>
</ul>
</Aside>
<Aside>
Un (simil-)thesaurus generale per l'inglese è <Anchor href={"https://wordnet.princeton.edu/"}>WordNet</Anchor>, mentre uno per l'italiano è <Anchor href={"https://thes.bncf.firenze.sbn.it/thes-dati.htm"}>Nuovo soggettario</Anchor>.
</Aside>
</TitleBox>
</Split>
</Page>