Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes e-mail: [email protected].

22
Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes e-mail: [email protected]

Transcript of Progettini BDM su Crossword Solving 06 Giugno 2006 Marco Ernandes e-mail: [email protected].

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

Progettini BDM su

Crossword Solving

06 Giugno 2006Marco Ernandes

e-mail: [email protected]

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

CWDB: database di crosswordsClue Risposta Occorrenze

1 Un lago vicino a Brescia ISEO 1

2 Il celebre Alain DELON 23 Il celebre Alain PROST 1

4 Una città di lago COMO 2

5 Il suo lago si dirama COMO 16 Un lago che si dirama COMO 2

Un lago vicino a Brescia:

ISEO = 100%

Il celebre Alain:

DELON = 67%PROST = 33%

EXACT - MATCHLa 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

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

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 (<new clue> IN BOOLEAN MODE) AS score FROM IndexedTable WHERE MATCH (Clue) AGAINST (<new clue>) AND Length=<target length>";

(2) PARTIAL_MATCH_QUERY_QE = "select Clue, Answer, Occur, MATCH (Clue) AGAINST (<new clue> WITH QUERY EXPANSION) AS score FROM IndexedTable WHERE MATCH (Clue) AGAINST (<new clue> WITH QUERY EXPANSION) AND Length=<target 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!

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

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!

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

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

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

Progettino 1: “Vector Space”

(4) Arriva una nuova clue (definizione)

c = {tc1, tc

2, ... , tc

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

Dc associati ai termini tc1,tc

2,...,tc

n

(6) Per ognuno dei documenti ottenuti si calcola la similarità

con il “documento-clue”.

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

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

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

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

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

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

DOCUMENTO 1 DOCUMENTO 2 DOCUMENTO 3 ...

DINOSAURO 1 0 0

TELEVISIONE 2 1 0

RAI 1 1 2

MEDIASET 1 0 0

M =

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

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:

M T

D

documenti

term

ini

term

ini

r r

r r

documenti

=

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

Tk

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 Mk di M:

Mk

documenti

term

ini

term

ini

k k

k k

documenti

Dk

=

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

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:

ck = cT T

k

k

(6) A questo punto va confrontato ck 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 Dk

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

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

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

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

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

Progettino 3: “Dijkstra”

VASCO

CANZONE ITALIANA

SANREMO

FESTIVAL

BAUDO

MEDIASET

RAI

INOSSIDABILEPRESENTATO

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

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

Progettino 3: “Dijkstra”

(2) Il grafo può essere costruito così:– ogni termine rappresenta un nodo

– si collega il termine t1 e il termine t

2 con un arco diretto da t

1 a t

2

prendendo come peso la probabilità di co-occorrenza (dato t1): -

log ( # docs con t1 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à.

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

Progettino 3: “Dijkstra”

(4) Della clue c = {tc1, tc

2, ... , tc

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 tci e gli altri termini del grafo. Usando

l'algoritmo di Dijkstra (o “Uniform-cost Search”).

(5) Lo score di ogni candidata u ottenuta da tci sarà:

-log(# docs con tci) – w (costo min. del percorso tc

i -

> u)

(6) w è un peso da scoprire (trial&error)

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

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

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

NOTA: “Algoritmo Dijkstra”

A

C

E

S B

D

1528

20

13

9

1112

L'algorimto di Dijkstra ci permette diricavare i “cammini minimi” in un grafo.

Il “cammino minimo” tra il nodo x e ilnodo y è quella sequenza di archi checollega x e y minimizzando la sommadelle distanze sugli archi.

Nell'esempio sopra:ci sono 4 percorsi diversi non ciclici che collegano S con C.1. Costo (S,B,A,C) = 52 3. Costo (S,D,B,A,C) = 692. Costo (S,B,D,E,C) = 51 4. Costo (S,D,E,C) = 44

(S-D-E-C) è il cammino minimo da S a C

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

NOTA: “Algoritmo Dijkstra”

S1

5

2

8

2

0 1

3

9

1

1

1

2

01

5

2

0

0+15

0+20

4

3

01

5

2

0

15+28

15+12

4

3

3

3

01

5

2

0 20+1

3

4

3

4

4

3

3

01

5

2

0

33+1

1

4

3

4

4

3

3

01

5

2

0

43+9

4

3

4

4

3

3

1

5

2

0

0

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

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

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

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