alpinotreebank.dact, alpinotreebank.zip
Per 24 juni
Dit is een aardig begin. Er moeten minimaal twee crd’s en twee cnj’s zijn, en er moet een crd vooraan staan. Die crd vooraan is gewoonlijk de eerste node die genummerd wordt met een id onder de conj.
match (n1:nw)<-[:rel{rel:'crd'}]-(n:node{cat: 'conj'})-[:rel{rel: 'crd'}]->(:nw)
match (:nw{sentid: n.sentid})<-[:rel{rel:'cnj'}]-(n)-[:rel{rel: 'cnj'}]->(:nw)
where n1.id = n.id + 1
return n
Maar je krijgt vrij veel fouten. Met extra tests filter je die er uit:
match (n1:nw)<-[:rel{rel:'crd'}]-(n:node{cat: 'conj'})-[:rel{rel: 'crd'}]->(n3:nw)
match (n2:nw{sentid: n.sentid})<-[:rel{rel:'cnj'}]-(n)-[:rel{rel: 'cnj'}]->(n4:nw)
where n1.id = n.id + 1
and (
n1.id < n2.id
and n2.id < n3.id
and n3.id < n4.id
or
n1.begin < n2.begin
and n2.begin < n3.begin
and n3.begin < n4.begin
)
return n
Die tests met begin zijn nodig omdat de ids niet altijd oplopend
zijn genummerd. In SPOD in PaQu gaat dat ook fout. Daar wordt
deze zin
ook niet gevonden.
Ook met tests op begin erbij mis je er nog een paar die wel goed zijn, zoals deze:
Hiermee kun je zien welke items er door de toegevoegde tests worden uitgefilterd:
match (n1:nw)<-[:rel{rel:'crd'}]-(n:node{cat: 'conj'})-[:rel{rel: 'crd'}]->(:nw)
match (:nw{sentid: n.sentid})<-[:rel{rel:'cnj'}]-(n)-[:rel{rel: 'cnj'}]->(:nw)
where n1.id = n.id + 1
return n.sentid, n.id
except
match (n1:nw)<-[:rel{rel:'crd'}]-(n:node{cat: 'conj'})-[:rel{rel: 'crd'}]->(n3:nw)
match (n2:nw{sentid: n.sentid})<-[:rel{rel:'cnj'}]-(n)-[:rel{rel: 'cnj'}]->(n4:nw)
where n1.id = n.id + 1
and (
n1.id < n2.id
and n2.id < n3.id
and n3.id < n4.id
or
n1.begin < n2.begin
and n2.begin < n3.begin
and n3.begin < n4.begin
)
return n.sentid, n.id
Per 1 juli
Kijk naar beginpositie van head, als dat er is:
match (n1:nw)<-[:rel{rel:'crd'}]-(n:node{cat: 'conj'})-[:rel{rel: 'crd'}]->(n3:nw)
match (n2:nw{sentid: n.sentid})<-[:rel*0..1{rel:'hd'}]-()<-[:rel{rel:'cnj'}]-(n)-[:rel{rel: 'cnj'}]->()-[:rel*0..1{rel:'hd'}]->(n4:nw)
where n1.id = n.id + 1
and (
n1.id < n2.id
and n2.id < n3.id
and n3.id < n4.id
or
n1.begin < n2.begin
and n2.begin < n3.begin
and n3.begin < n4.begin
)
return n.sentid, n.id
Nu wordt deze wel gevonden:
… maar deze nog steeds niet:
En je krijgt een aantal valse hits, zoals:
Test de verschillen:
match (n1:nw)<-[:rel{rel:'crd'}]-(n:node{cat: 'conj'})-[:rel{rel: 'crd'}]->(n3:nw)
match (n2:nw{sentid: n.sentid})<-[:rel*0..1{rel:'hd'}]-()<-[:rel{rel:'cnj'}]-(n)-[:rel{rel: 'cnj'}]->()-[:rel*0..1{rel:'hd'}]->(n4:nw)
where n1.id = n.id + 1
and (
n1.id < n2.id
and n2.id < n3.id
and n3.id < n4.id
or
n1.begin < n2.begin
and n2.begin < n3.begin
and n3.begin < n4.begin
)
return n.sentid, n.id
except
match (n1:nw)<-[:rel{rel:'crd'}]-(n:node{cat: 'conj'})-[:rel{rel: 'crd'}]->(n3:nw)
match (n2:nw{sentid: n.sentid})<-[:rel{rel:'cnj'}]-(n)-[:rel{rel: 'cnj'}]->(n4:nw)
where n1.id = n.id + 1
and (
n1.id < n2.id
and n2.id < n3.id
and n3.id < n4.id
or
n1.begin < n2.begin
and n2.begin < n3.begin
and n3.begin < n4.begin
)
return n.sentid, n.id