8 juli 2020

  1. Video-overleg
    • camera en microfoon voor pc
  2. Jaargesprek
    • formulier invullen
  3. AlpinoGraph
    • voorlopig alleen met globale corpora
    • documentatie
      • vele TODOs
      • definitie extra attributen updaten
    • info over geïnstalleerde corpora
    • menu met voorbeelden aanpassen
      • inleiding
      • woorden en woordgroepen
      • woordpaar-relaties
      • Alpino-structuren
        • kan beter
      • Universal Dependencies
        • kan beter
      • heterogene relaties
      • metadata
    • toevoegen aan spod-voorbeelden: reeksvormers
      • voorlopig versie van 24 juni gebruiken, zie beneden
    • paper
      • deadline: 28 augustus
      • verschillen met xpath in tijd
        • zie beneden
      • verschillen met xpath in uitkomst
        • cd /net/homepages/kleiweg/www/agens/diffs ; ./viewdiff
        • bijgewerkt naar actuele versies van SPOD in AgensGraph en in PaQu
        • de tabel verschillen is niet meer actueel
    • zoeken naar woorden via verwante lemma’s
      • zie beneden
    • lokale hosting met eigen zoekmachine
  4. Zowel in Alpino als in AlpinoGraph
    • onderscheid herkennen van constructies zoals:
      1. het rode huis en het groene
      2. het rode en het groene huis
  5. Zoekfunctie
    • handleiding implementatie
  6. webL04

Verschillen in tijd tussen AgensGraph en DbXML

Zonder items waarbij AgensGraph gebruik maakt van extra attributen.

Data: AgensGraph in tweede kolom, DbXML in derde kolom

Alle bestanden: https://urd2.let.rug.nl/~kleiweg/agens/diffs/

tijden1

tijden2

tijden3

Zoeken naar woorden via verwante lemma’s

Dit gebeurt automatisch in PaQu als je zoekt naar woordparen. Daar is het handig omdat je maar één woord kunt invullen in een zoekveld, en niet een reeks varianten.

In AlpinoGraph kun je zoiets doen:

match (w:word)
where w.lemma in (
  select lemma
  from (
    match (w1:word{word: 'fiets'})
    return distinct w1.lemma
  ) as foo
)
return distinct w.word, w.lemma, w.root, w.pt
order by lemma, root, pt, word

Dit geeft bijvoorbeeld bij BasiLex interessante varianten.

Het kan simpeler:

match (w1:word{word: 'fiets'})
with distinct w1.lemma as lemma
match (w:word{lemma: lemma})
return distinct w.word, w.lemma, w.root, w.pt
order by lemma, root, pt, word

Met een hulptabel zou het misschien sneller zijn:

match (w1:wl{word: 'fiets'}),
      (w:word{lemma: w1.lemma})
return w

Maar… grotere database. Is dat het waard?

Reeksvormers

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
alpinograph