Actueel…
dbxml_*, alpinocorpus_* en dtsearch
Later…
Ik heb mkcorpus omgedoopt tot alto, voor ALpino TOol.
Je kunt er nog steeds corpora mee omzetten, van het ene formaat in het andere, zoals:
alto output.dact *.xml alto output.data.dz input.dact
Je kunt de namen van invoerbestanden ook via stdin geven:
find . -name '*.xml' | alto output.dact
Je kunt nu allerlei acties definiëren. Het patroon is:
alto ouput actie... input...
Eigenlijk zou alto input acties output logischer zijn, maar zo is het makkelijk (?).
Acties worden uitgevoerd in de volgorde waarop ze zijn gegeven.
Als de uitvoer een minus is, dan gaat de uitvoer naar de terminal. Wat voorbeelden…
Dit maakt een nieuw corpus met alleen de matchende bestanden in de invoer, maar omdat de uitvoer naar stdout gaat gaat alle uitvoer van de gematchte bestanden naar stdout:
alto - "fp://node[@root='fiets']" /net/corpora/paqu/cdb.dact
Je kunt de uitvoer transformeren, bijvoorbeeld met een template met placeholders:
alto - "fp://node[node[@root='fiets']]" "tt:%c:%-10f%s" /net/corpora/paqu/cdb.dact
Er zijn vele manieren waarop je dit kunt doen. Dit is een ander voorbeeld:
alto - "fp://node[node[@root='fiets']]" "tt:%c:%f\n%S\n%M\n" /net/corpora/paqu/cdb.dact
Je kunt gefilterde bestanden nog een keer filteren:
alto - "fp://node[@root='fiets']" "fp://node[@root='baas']" "tt:%I -- %s" /net/corpora/paqu/cdb.dact
Je kunt dingen tellen:
alto - "fp://node[@root='fiets']/@word" "ac:sum" /net/corpora/paqu/cdb.dact
Je kunt ook transformeren met een stylesheet: xslt of xquery. Hier is een voorbeeld met xquery dat je alle multi-word units geeft:
alto - "fp://node[@cat='mwu']" "tq:/net/aistaff/kleiweg/alto/mwu.xq" /net/corpora/paqu/cdb.dact
Je kunt die tellen, maar dan zie je iets merkwaardigs:
alto - "fp://node[@cat='mwu']" "tq:/net/aistaff/kleiweg/alto/mwu.xq" "ac:sum" /net/corpora/paqu/cdb.dact
Dit komt omdat mwu.xq werd toegepast op de matchende bestanden. Het
kan anders, door mwu.xq op elk matchende node toe te passen:
alto - "fp://node[@cat='mwu']" "Tq:/net/aistaff/kleiweg/alto/mwu.xq" "ac:sum" /net/corpora/paqu/cdb.dact
Corpora:
alpinocorpus-get kun je een gematchte node markeren,
bijvoorbeeld met <node active="1" ... >. Dit wordt nergens in de
software bij Alpino gebruikt.alpinocorpus-xpath kun je in plaats van zinnen
een reeks van waardes van een ander attribuut laten zien, bijvoorbeeld
lemma of pos. Je zou dit kunnen uitbreiden met combinaties, zoals
pos:word.alpinocorpus-xquery kun XQuery-programma loslaten op corpora.TL;DR — dtview kleurt nodes op basis van XPath-expressie
Voorbeeld:
dtsearch -q '//node[@cat="np"]' -v file.xml
Als er een match is, dan wordt dtview gestart door dtsearch:
dtview -query '//node[@cat="np"]' -s
… en de naam file.xml wordt gepipet.
Voor het tekenen van de boom gebruikt dtview het programma dtxslt dat
een boom produceert in het formaat voor CLIG extendible grapher for
Computational Linguistics. Met een query erbij worden de
matchende nodes gekleurd:
dtxslt --stylesheet $ALPINO_HOME/TreebankTools/stylesheets/dt2clig1.xsl --stringparam expr='//node[@cat="np"]' --param extended-attributes=0 file.xml
Uitvoer, eerste regels:
clig {stack {vspace 5}
{tree {color-area white { drs {color black {plain-text {top}}}
{color black {plain-text {top}}}
}}
{color-area white {drs {color black {plain-text {--}}}
{stack {color black {plain-text {"}}}