Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture dati Mod B
Advertisements

Algoritmi e Strutture Dati
Ricorsione in SQL-99.
Algoritmi e Strutture Dati
Principale limitazione di AR e SQL-92: interrogazioni ricorsive
Strutture dati per insiemi disgiunti
Il problema del cammino minimo tra 2 nodi in un grafo non cooperativo
1 Querying Modelli per la ricerca. 2 Modelli di Retrieval Un modello per il retrieval specifica rappresentazione dei documenti rappresentazione delle.
Grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw.
Algoritmi e Strutture Dati
Cammini minimi con una sorgente
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Programmazione dinamica
Sistemi di supporto alle decisioni 2. Features space
Alberi binari di ricerca
Breath-first search Visita in ampiezza di un grafo Algoritmo Esempio
Cammini minimi con sorgente singola
Implementazione dell algortimo di Viterbi attraverso la soluzione del problema di cammino mi- nimo tramite software specifico. Università degli studi di.
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Apprendimento Non Supervisionato
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 12/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 05/05/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
U V U V (a) |cfc|=2 prima e dopo (b) |cfc|=2 prima e |cfc|=1 dopo
Algoritmo di Ford-Fulkerson
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Il problema del cammino minimo tra 2 nodi in un grafo con archi privati.
Flusso Massimo Applicazione di algoritmi
Algoritmi e Strutture Dati (Mod. B)
Trovare il percorso minimo da b ad ogni altro vertice
1 Querying - Parte II Modelli per la ricerca. 2 Rappresentazione e Vector Space (VS) Ogni doc. j è un vettore di valori tf idf Si può normalizzare a lunghezza.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Algebra matriciale e linguaggio matriciale in MATLAB
Fibonacci Heaps e il loro utilizzo nell’algoritmo di Prim
Elementi di Informatica di base
Strutture dati per insiemi disgiunti
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
PARTE PRIMA: Reti Cablate
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Cammini minimi tra tutte le coppie
Web Communities and their identificaton
Grafi Rappresentazione mediante liste di adiacenza:
Cammini minimi da un sorgente
ALGORITMI a.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
“Exact Indexing of Dynamic Time Warping” di E.Keogh G. Fregnan, T. Splendiani 17/03/06 Exact Indexing of Dynamic Time Warping Eamonn Keogh Computer Science.
Voronoi-Based K Nearest Neighbor Search for Spatial Network Databases1 GRUPPO 13: Relatore: Mengoli Dario Mengoli Dario Rovatti Fabrizio Tassoni Davide.
Algoritmi e Strutture Dati
Flusso di Costo Minimo Trasformazioni Equivalenti e Trasformazioni Inverse Viene data la seguente rete di flusso, in cui i valori riportati vicino agli.
Laureando: Enrico Sperindio Relatore: Prof. GIORGIO ROMANIN JACUR
Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati.
Flusso di Costo Minimo Applicazione di algoritmi: Cammini Minimi Successivi (SSP) Esercizio 1 Sia data la seguente rete di flusso, in cui i valori riportati.
Algoritmi e Strutture Dati
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Lezioni di Ricerca Operativa Corso di Laurea in Informatica
Algoritmi di routing statici (pag.72) UdA2L4 Questi algoritmi, sono eseguiti solamente all'avvio della rete, e le decisioni di routing a cui essi pervengono.
Transcript della presentazione:

Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes

CWDB: database di crosswords Un lago vicino a Brescia: ISEO = 100% Il celebre Alain: DELON = 67% PROST = 33% EXACT - MATCH La città del lago che si dirama: def 1 = 20% def 4 = 40% def 5 = 50% def 6 = 60% ISEO = (1*0.2) = 0.2 = 7.5% COMO = (2*0.4)+(1*0.5)+(2*0.6) = 2.5= 92.5% PARTIAL - MATCH

CWDB: database di crosswords CWDB è stato implementato con MySql. Il partial-match è stato scritto nel modo seguente: (1) PARTIAL_MATCH_QUERY = "select Clue, Answer, Occur, MATCH (Clue) AGAINST ( IN BOOLEAN MODE) AS score FROM IndexedTable WHERE MATCH (Clue) AGAINST ( ) AND Length= "; (2) PARTIAL_MATCH_QUERY_QE = "select Clue, Answer, Occur, MATCH (Clue) AGAINST ( WITH QUERY EXPANSION) AS score FROM IndexedTable WHERE MATCH (Clue) AGAINST ( WITH QUERY EXPANSION) AND Length= "; E' stato anche aggiunto un controllo sull'ordine delle parole per distinguere: Quello buono non mente --> SANGUE, da Nella mente del buono --> AMORE SI PUO' FARE MOLTO MEGLIO!

PROGETTINI 3 Progettini proposti (1)Vector Space (2)LSI (3)Dijkstra Motivazione: Il CWDB contiene la parola target nel 70% dei casi. EXACT-MATCH la trova nel 19% PARTIAL-MATCH la trova nel 29% C'è un ulteriore 22% da colmare!

Progettino 1: Vector Space (1)Per ogni soluzione s nel database si costruisce un documento d formato dalla concatenazione delle definizioni che hanno s come risposta. (2)Si costruisce un indice inverso termini-documenti del tipo [t -> D if t in D ] (3)Di ogni termine t dei documenti così ottenuti si calcolano sia il TF (che forse potrebbe essere trascurato) che il log-IDF. (probabilmente vanno identificate delle stop-words: le n parole corte più frequenti) E' un dinosauro della televisione --> BAUDO Ha presentato molti festival di Sanremo --> BAUDO E' stato in Rai e in Mediaset --> BAUDO potrebbero diventare [DINOSAURO TELEVISIONE PRESENTATO MOLTI FESTIVAL SANREMO STATO RAI MEDIASET] --> BAUDO

Progettino 1: Vector Space (4)Arriva una nuova clue (definizione) c = {t c 1, t c 2,..., t c n } e la si trasforma in un vettore nello spazio dei termini, con i rispettivi IDF (e TF se risultassero utili). (5)Grazie all' indice inverso si ottengono tutti i documenti D c associati ai termini t c 1,t c 2,...,t c n (6)Per ognuno dei documenti ottenuti si calcola la similarità con il documento-clue.

Progettino 1: Vector Space (7)Le similarità servono quindi per ordinare le risposte associate (dal database) ai documenti. (8)La similarità può essere calcolata in vari modi: Distanza Coseno Prodotto Scalare Distanza di Jaccard Distanza Euclidea

Progettino 1: Vector Space (10) Verrà fornito un set di ca definizioni-soluzioni (11) In una fase sperimentale potrebbe essere costruito il sistema su ca coppie e testato sulle restanti. (12) Risultati da prendere in considerazione: Recall della parola-target (e k-Recall, con k=1, 5, 10, 50, 100) Posizione media della parola-target Score medio della parola-target VS. score della prima parola Lunghezza liste

Progettino 2: LSI (1)Per ogni soluzione s nel database si costruisce un documento d formato dalla concatenazione delle definizioni che hanno s come risposta. (2)Si costruisce una matrice M [termini->documenti] (magari con gli score TF-IDF). M =M =

Progettino 2: LSI (3)Si fa la decomposizione a valori singolari della matrice M (in Java, basta usare il Matrix Toolbox for Java – con rappresentazione sparsa!) ottenendo: MT S D documenti termini rr rr documenti =

TkTk Progettino 2: LSI (4)Si scelgono i primi k (con k=ca. 200 o 300) valori singolari (presi in ordine decrescente) in modo da ottenere un'approssimazione M k di M: SkSk MkMk documenti termini kk k k documenti DkDk =

Progettino 2: LSI (5)Quando arriva una nuova clue c la si tratta come un documento che, per essere comparato con gli altri, va proiettato nello spazio k-dimensionale usato: c k = c T T k S -1 k (6)A questo punto va confrontato c k con i documenti posseduti: si possono usare le distanze viste prima (es: distanza coseno). I documenti proiettati nello spazio k-dim sono le colonne della matrice D k

Progettino 2: LSI (7)Anche in questo caso si usano i risultati di similarità per attribuire uno score alle risposte candidate. (8)Il metodo sperimentale indicato per il Progettino 1 vale anche in questo caso: analizzare recall, score del target, etc...

Progettino 3: Dijkstra (1) Si possono rappresentare le relazioni di co-occorrenza (e quindi di legame semantico) in un grafo. Consideriamo, in questo caso, la soluzione come facente parte del documento stesso. Ha presentato molti festival di Sanremo --> BAUDO E' stato in Rai e in Mediaset --> BAUDO Inossidabile della canzone italiana --> VASCO Festival della canzone italiana --> SANREMO

Progettino 3: Dijkstra VASCO CANZONEITALIANA SANREMO FESTIVAL BAUDO MEDIASET RAI INOSSIDABILE PRESENTATO BAUDO non co-occorre mai con CANZONE e ITALIANA, ma i nodi si trovano solo a distanza 2. Ed è a distanza 3 da VASCO (con cui mantiene una relazione semantica).

Progettino 3: Dijkstra (2) Il grafo può essere costruito così: – ogni termine rappresenta un nodo – si collega il termine t 1 e il termine t 2 con un arco diretto da t 1 a t 2 prendendo come peso la probabilità di co-occorrenza (dato t 1 ): -log ( # docs con t 1 e t 2 / # docs con t 1 ) (3)Quando ci viene presentata una nuova clue, vanno trovate le parole (i nodi) che sono più vicini e con la maggior probabilità.

Progettino 3: Dijkstra (4)Della clue c = {t c 1, t c 2,..., t c n } vanno presi i singoli termini. A partire da ognuno di questi si effettua una ricerca, cercando il percorso a costo minore (le negative log probability sono basse quando la prob è alta) tra il termine t c i e gli altri termini del grafo. Usando l'algoritmo di Dijkstra (o Uniform-cost Search). (5)Lo score di ogni candidata u ottenuta da t c i sarà: -log(# docs con t c i ) – w (costo min. del percorso t c i -> u) (6) w è un peso da scoprire (trial&error)

Progettino 3: Dijkstra (7)Per ogni parola della clue la ricerca nel grafo si può fermare dopo n risposte trovate. Con n = ca. 500/1000. Non dovrebbero servirne di più... (da studiare) (8)I risultati delle ricerche portate avanti per ogni singola parola verranno fusi sommando gli score in caso di presenza molteplice della stessa candidata. (9)Il metodo sperimentale indicato per i Progettini 1 e 2 vale anche in questo caso: analizzare recall, score del target, etc...

NOTA: Algoritmo Dijkstra A C E SB D L'algorimto di Dijkstra ci permette di ricavare i cammini minimi in un grafo. Il cammino minimo tra il nodo x e il nodo y è quella sequenza di archi che collega x e y minimizzando la somma delle distanze sugli archi. Nell'esempio sopra: ci sono 4 percorsi diversi non ciclici che collegano S con C. 1. Costo (S,B,A,C) = 523. Costo (S,D,B,A,C) = Costo (S,B,D,E,C) = 514. Costo (S,D,E,C) = 44 (S-D-E-C) è il cammino minimo da S a C

NOTA: Algoritmo Dijkstra S

NOTA: Algoritmo Dijkstra Implementazione: (1)per grafi con pochi archi (matrice di adiacenza sparsa), si usano le liste di adiacenza. (2)va tenuta traccia dei nodi non stabili (gialli nella figura) che vengono inseriti in uno heap per essere mantenuti ordinati. (3)Lo heap viene ordinato usando -dist(n) (4)Passo 0: viene inserito nello heap il nodo di partenza

NOTA: Algoritmo Dijkstra Implementazione: (5)Ad ogni passo poi: si estrae la testa dello heap che rappresenta il nodo non stabile a distanza minima dal nodo iniziale: lo heap si riduce di 1 elemento. (6)Si esamina la lista di adiacenza del nodo estratto n e per ogni nodo n' della lista si verifica che: dist(n') > dist(n)+c(n,n') Altrimenti si aggiorna: dist(n') = dist(n)+c(n,n') e si riordina lo heap Si ritorna a (5).