Tecniche di stemming
Transcript
Tecniche di stemming
Tecniche di stemming Antonino Freno [email protected] Corso di Basi di Dati Multimediali – A.A. 2008/2009 Cos’è lo stemming ◮ Lo stemming è il processo usato per ridurre parole flesse al loro tema; ◮ Il tema non deve necessariamente coincidere con la radice morfologica della parola: l’importante è che parole con una semantica strettamente correlata vengano mappate sullo stesso tema; ◮ Le tecniche di stemming sono studiate in informatica da ben 40 anni; sono uno dei metodi di base per ridurre la dimensionalità dei documenti di testo. Esempi di stemming ◮ Quello che ci aspettiamo da un buono stemmer è che riconosca (con la maggiore acucratezza possibile) la correlazione tra termini a cui attribuiamo una semantica comune, e sfrutti questa correlazione per sostituire tutti i termini correlati con il tema corrispondente. Ad esempio: ◮ ◮ ‘gatto’, ‘gatta’, ‘gattino’, ‘gattaccio’, ecc. li vorremmo mappati sul tema ‘gatto’, o ‘gatt’; ‘fish’, ‘fished’, ‘fishing’, ‘fisher’, ecc. li vorremmo mappati sul tema ‘fish’. Cenni storici ◮ ◮ Il primo stemmer mai pubblicato è stato proposto da Julie Beth Lovins nel 1968; Uno stemmer più raffinato è stato pubblicato nel 1980 da Martin Porter: ◮ ◮ ◮ Il Porter stemmer si è imposto come il metodo standard di stemming dell’Inglese; Nel 2000, il lavoro sullo stemming è valso a Porter il Tony Kent Strix award. Le implementazioni ufficiali del Porter stemmer in vari linguaggi sono liberamente distribuite su http://tartarus.org/~martin/PorterStemmer/. Algoritmi di stemming ◮ In base all’approccio utilizzato, gli algoritmi di stemming si possono dividere in alcune famiglie: ◮ ◮ ◮ ◮ ◮ ◮ Algoritmi a forza bruta; Algoritmi che operano per rimozione dei suffissi (suffix stripping); Algoritmi di lemmatizzazione; Algoritmi stocastici; Algoritmi ibridi; Algoritmi di matching. Algoritmi a forza bruta ◮ Gli algoritmi a forza bruta utilizzano una grossa tabella di lookup per memorizzare l’insieme di tutte le coppie (w , w ′ ) tali che w è un termine flesso e w ′ è il tema corrispondente; ◮ Per fare lo stemming di una parola w , si controlla se la tabella contiene w : in caso positivo, si rimpiazza w con il valore corrispondente restituito dalla tabella, altrimenti si lascia w inalterata; ◮ La tabella viene fornita dall’uomo, dunque deve essere costruita a mano. Algoritmi a forza bruta: Vantaggi ◮ La tabella di lookup è particolarmente utile per i casi in cui la forma flessa si discosta da una regola generale (ad es. ‘went’ → ‘go’, ‘children’ → ‘child’, ecc.); ◮ Migliorare il comportamento di uno stemmer a forza bruta è solo una questione di aumentare la sua comprensività, cioè di aggiungere più casi alla tabella: non serve alcuno sforzo di riprogettazione, nè delle particolari competenze linguistiche. Algoritmi a forza bruta: Svantaggi ◮ Non c’è nessun tipo di elaborazione profonda del testo; ◮ Rispetto alle dimensioni tipiche di ciascun documento, occorre usare una quantità di memoria spropositata per mantenere la tabella; ◮ L’accuratezza è strettamente dipendente dalle dimensioni della tabella; ◮ Costruire la tabella a mano è un processo molto dispendioso, e tutt’altro che banale; ◮ La tabella deve essere spesso aggiornata in considerazione di nuovi termini e usi linguistici. Algoritmi a rimozione dei suffissi ◮ Invece di immagazzinare una tabella di lookup, si immagazzina un insieme di regole, che sia il più compatto possibile. Regole tipiche sono ad esempio: ◮ ◮ ◮ “Se la parola finisce in ‘-ed’, rimuovi il suffisso ‘ed’ dalla parola”; “Se la parola finisce in ‘-ing’, rimuovi il suffisso ‘ing’ dalla parola”; “Se la parola finisce in ‘-ly’, rimuovi il suffisso ‘ly’ dalla parola”. Algoritmi a rimozione dei suffissi: Vantaggi e svantaggi ◮ Vantaggi: ◮ ◮ ◮ Le regole che costituiscono il cuore dell’algoritmo codificano una comprensione relativamente profonda del testo, dunque catturano caratteristiche stabili della lingua; La compattezza e la modularità del sistema di regole rendono agevoli gli interventi di manutenzione; Svantaggi: ◮ ◮ La manutenzione/riprogettazione del sistema di regole richiede una profonda competenza linguistica; Le regole non catturano (per la loro stessa natura) le eccezioni, dunque il sistema si comporta bene solo con le parole che seguono fedelmente una morfologia generale. Algoritmi di lemmatizzazione ◮ La lemmatizzazione è il processo per cui si individua il lemma corrispondente ad un termine, cioè la voce canonica sotto cui il termine viene catalogato in un dizionario; ◮ Rispetto agli algoritmi di rimozione del suffisso, la differenza chiave è che la lemmatizzazione utilizza (come passo preliminare) l’identificazione della parte del discorso rappresentata da un termine (part of speech tagging): l’idea è quella di usare regole di stemming relativizzate alla parte del discorso identificata (sostantivo, verbo, ecc.). Lemmatizzazione: Pro e contro ◮ Pro: ◮ ◮ La lemmatizzazione è più raffinata (dunque potenzialmente più precisa) del suffix stripping ordinario, perchè le regole di stemming vengono applicate sfruttando maggiore informazione sui termini trattati. Contro: ◮ ◮ Il part of speech tagging è un processo piuttosto complicato, oltre che soggetto ad errore; Quando il part of speech tagging fallisce, le regole di stemming vengono applicate in modo errato. Algoritmi probabilistici ◮ Gli algoritmi probabilistici vengono addestrati a effettuare lo stemming, utilizzando un training set di coppie parola flessa–tema; ◮ L’idea è quella di estrarre dall’insieme di addestramento delle statistiche di correlazione parola flessa–tema, che nel loro insieme costituiscono un modello probabilistico delle trasformazioni morfologiche desiderate; ◮ Una volta appreso il modello dai dati di training, tale modello è usato per stimare quale tra i possibili temi di una parola flessa abbia la maggiore probabilità di essere corretto. Algoritmi ibridi ◮ ◮ Gli algoritmi ibridi usano due o più algoritmi delle famiglie precedenti in combinazione tra loro; Un esempio sarebbe l’algoritmo seguente: 1. Si consulta una tabella di lookup del tipo di quella degli algoritmi a forza bruta, dove però sono memorizzate non tutte le coppie del linguaggio, ma solo le eccezioni rispetto alle regole morfologiche standard; 2. Se la tabella contiene la parola che si sta cercando di trasformare, si prende il valore restituito dalla tabella, altrimenti si lancia una routine di suffix stripping o di lemmatizzazione su quella stessa parola. Algoritmi di matching ◮ Gli algoritmi di matching tengono in memoria un database di temi validi; ◮ Data una parola flessa, si cerca nel database il tema che ha il matching migliore con la parola in questione, in base a criteri come la lunghezza relativa del tema dentro la parola flessa; ◮ Quando il matching è ritenuto adeguato, si sostituisce la parola flessa con il tema individuato. Lovins (1968) ◮ ◮ Il Lovins stemmer usa un dizionario di suffissi comuni (ad es. ‘-ing’ o ‘-ation’), insieme ad una lista di eccezioni relative ai suffissi (ad es. ‘nation’ rispetto a ‘-ation’): l’idea è che un’eccezione sia una parola che contiene il suffisso solo apparentemente, ma non come reale costituente morfologico; Presa una parola flessa, si controlla se la parola termina con uno dei suffissi contenuti nel dizionario: ◮ In caso positivo, si controlla se la parola non costituisca un’eccezione rispetto al suffisso considerato: ◮ ◮ In caso negativo (ossia se la parola non costituisce un’eccezione), il suffisso viene rimosso. Il Lovins stemmer contiene 294 suffissi, ciascuno dei quali è associato con diverse eccezioni. Porter (1980) ◮ Il Porter stemmer è una tecnica di suffix stripping molto simile a quella di Lovins, ma con due differenze fondamentali: 1. Il numero di suffissi comuni considerati è di gran lunga inferiore (circa 60 suffissi): la riduzione del numero di suffissi è resa possibile dalla rimozione ricorsiva dei suffissi dalle parole flesse (ad es. ‘hopefulness’ → ‘hopeful’ → ‘hope’); 2. Le eccezioni alla rimozione dei suffissi sono trattate con un meccanismo unico, che valuta il tema rimanente dopo la rimozione in base alla sua struttura sillabica: l’idea è di vietare, ad esempio, la rimozione di ‘-ing’ da ‘string’ senza inserire un’eccezione esplicita dentro lo stemmer.
Documenti analoghi
L6 - Text Operations
Parole troppo frequenti nei documenti non sono utili per determinare
il risultato di una interrogazione
Dipendono dalla lingua