La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes

Presentazioni simili


Presentazione sul tema: "Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes"— Transcript della presentazione:

1

2 Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes e-mail: ernandes@dii.unisi.it

3 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

4 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!

5 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!

6 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

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

8 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

9 Progettino 1: Vector Space (10) Verrà fornito un set di ca. 40000 definizioni-soluzioni (11) In una fase sperimentale potrebbe essere costruito il sistema su ca. 30000 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

10 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 =

11 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 =

12 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 =

13 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

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

15 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

16 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).

17 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à.

18 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)

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

20 NOTA: Algoritmo Dijkstra A C E SB D 15 28 20 13 9 11 12 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) = 69 2. Costo (S,B,D,E,C) = 514. Costo (S,D,E,C) = 44 (S-D-E-C) è il cammino minimo da S a C

21 NOTA: Algoritmo Dijkstra S 15 28 20 13 9 11 12 015 20 0+15 0+20 43 015 20 15+28 15+12 4343 3 0 1515 2020 20+13 4343 4 3 0 1515 2020 33+11 4343 4 3 0 1515 2020 43+9 4343 4 3 1515 2020 0

22 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

23 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).


Scaricare ppt "Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes"

Presentazioni simili


Annunci Google