Skip to content

Instantly share code, notes, and snippets.

@proycon
Last active October 27, 2019 22:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save proycon/d27732ab17703a458c4625fd512c1618 to your computer and use it in GitHub Desktop.
Save proycon/d27732ab17703a458c4625fd512c1618 to your computer and use it in GitHub Desktop.
wp3-vre-workflow-inventarisatie

Inventarisatie mogelijke WP3 VRE Workflows

Maarten van Gompel, 27 Oktober 2019

Er zijn een aantal workflows voorgesteld voor de VRE. Ik weet niet precies wat de motivatie achter de samenstelling geweest is, maar ik vermoed om een eerste begin te maken en wat interoperabiliteit te testen. De workflows waren echter erg kort en ongespecificeerd geformuleerd, wat naar mijn indruk tot wat onduidelijk leidde voor de VRE ontwikkelaars. Ook traden er al gelijk wat andere problemen op. Het lijkt mij zinvol om een wat uitgebreidere inventarisatie van mogelijke concrete workflows en tools daarin uit te voeren en een wat breder beeld van mogelijke workflows die relevant voor WP3 en de VRE zouden kunnen zijn te vormen.

Ter overzicht, de volgende workflows waren voorgesteld:

  • Word document => OpenConvert => FoLiA => Frog => FoLiA => AutoSearch upload => Queries in Autosearch
    • De OpenConvert naar FoLiA converter is redelijk out of date en men liep tegen een bug, ik heb met Piereling een alternatieve webservice gelanceerd om dit op te lossen, aangezien we inmiddels nieuwere convertors hebben.
  • HTML document => OpenConvert => FoLiA => Nijmegen Alpino => uploaden in PaQu / SPOD
    • Deze kan überhaupt niet want er is geen FoLiA input laag voor onze Alpino webservice (wel FoLiA output).
    • Kan ik desgewenst best implementeren uiteraard
  • Word Doc => OpenConvert =>plain text => upload in PaQu => queries in PaQu
  • TIFF doc (scan) => PICCL met pos-tagging etc => FoLiA => AutoSearch upload => Queries in Autosearch
  • CHA corpus => upload in GrETEL 4 => Queries in GrETEL 4
  • TEI corpus => upload in AutoSearch => Queries in Autosearch
  • TEI corpus => upload in GrETEL 4 => Queries in GRETEL 4
  • CHA corpus => upload in GrETEL 4 => Generate %MOR, %GRA => new version of CHA corpus with %MOR and % GRA tiers ( not possibe yet)

Ik zie een aantal tools meermaals voorkomen en een aantal grote WP3 tools zoals FLAT en ucto überhaupt niet. Ook zie ik geen tools van de VU terwijl die ook hele pipelines hebben ontwikkeld (al dan niet buiten WP3, maar toch relevant lijkt me).

In dit overzicht kijk ik voornamelijk vanuit het perspectief van de beschikbare tools: welke tools zijn er beschikbaar, werkt naar behoren, en is daadwerkelijk in gebruik. Uiteraard is mijn blik maar beperkt, en reikt het in eerste instantie over de software waar ik zelf bij betrokken ben, dus aanvullingen en commentaar is zeer welkom. Het doel van dit document is dan ook om een discussie op gang te brengen.

Het lijkt me ook zeer relevant om echte concrete gebruikers (en mogelijke testers) van de te implementeren workflow bij elk scenario te hebben, maar daar heb ik zelf niet echt zicht op.

Webservice workflows

Webservice Workflow 1: Automatische linguïstische verrijking van een Nederlandse tekst en doorzoeken in Autosearch

  • Use cases:
    • Een gebruiker wil automatisch linguïstische verrijkingen aanbrengen op een Nederlandse tekst en hier vervolgens in kunnen zoeken.
  • Data- & Transformatie pipeline: (n.b: tools/services zijn vetgedrukt, data niet)

Webservice Workflow 2: Automatische linguïstische verrijking van een Nederlandse tekst en visualiseren/bewerken/doorzoeken in FLAT

  • Use cases:
    • Een gebruiker wil zijn verrijkte document simpelweg visualiseren (het document met alle linguïstische annotaties zien)
    • Een gebruiker wil het geannoteerde documenten bewerken/corrigeren/aanvullen.
    • Een gebruiker wil automatisch linguïstische verrijkingen aanbrengen op een Nederlandse tekst en hier vervolgens in kunnen zoeken. (hetzelfde als pipeline 1, maar met wat vergaandere zoekmogelijkheden maar minder grafische query interface)
  • Data- & Transformatie pipeline: (n.b: tools/services zijn vetgedrukt, data niet)
    • OpenOffice (odt) document met Nederlandse tekst (een ander formaat als kleine variatie op pipeline 1)
    • Piereling (webservice voor conversies van en naar FoLiA)
    • FoLiA document, ongetokeniseerd, met structuurinformatie (paragraaf, lijsten) etc.
    • Frog (Linguistische verrijkingstool voor het Nederlands)
    • FoLiA document, getokeniseerde, met (naar parameterisering) PoS (CGN tagset), lemma, named entities, shallow parsing, dependency parsing (Alpino tags)
    • FLAT via de public upload webservice

Webservice Workflow 3: Automatische linguïstische verrijking van een Nederlandse corpus en doorzoeken in Autosearch

  • Use cases:
    • Een gebruiker wil automatisch linguïstische verrijkingen aanbrengen op een Nederlands corpus (meerdere teksten) en hier vervolgens in kunnen zoeken.
  • Motivatie:
    • Dit is een variant van pipeline 1, maar expliciet gebruik makend van meerdere teksten, waar AutoSearch juist geschikt voor is (FLAT daarentegen is in dit opzicht gelimiteerd tot één document)
  • Data- & Transformatie pipeline: (n.b: tools/services zijn vetgedrukt, data niet)
    • Word (docx) document met Nederlandse tekst
    • Piereling service voor conversies van en naar FoLiA)
    • Zip archief van FoLiA documenten, ongetokeniseerd met structuurinformatie (paragraaf, lijsten)
    • Frog service voor linguistische verrijking
    • Zip archief van getokeniseerde FoLiA met (naar parameterisering): PoS (CGN tagset), lemma, named entities, shallow parsing, dependency parsing (Alpino tags)
    • Autosearch via de upload webservice
      • Federated CLARIN authenticatie
      • Eindresultaat:
        • Gebruiker kan nu queries doen op het document en de lingüistische annotaties (gelimiteerd tot alleen PoS, lemma)

Webservice Workflow 4: Alpino: Automatische syntactische verrijking van een Nederlandse tekst en visualisatie in PaQU

  • Use Cases:
    • Gebruiker wil de syntactische (dependency/constituency) structuur visualiseren en erin zoeken
  • Data- & Transformatie pipeline:
    • HTML document met Nederlandse tekst
      • Opmerking: Ik vind HTML een wat ongelukkige keuze, de meeste web-html zal dermate vervuild zijn dat het niet goed als input bruikbaar is, dus of het een realistisch scenario is vraag ik me af, maar ik hanteer het even omdat het in het oorspronkelijke lijstje stond.
    • OpenConvert service (webservice voor conversie)
    • plain-text, UTF-8
      • Opmerking: Het oorspronkelijke had FoLiA invoer maar dat kan in dit stadium als Alpino (service) invoer dus niet (niet geïmplementeerd)
    • Alpino service
    • Zip archief met Alpino XML (één bestand per zin)
    • PaQu
      • https://paqu.let.rug.nl:8068/
        • Groningen single-sign on (oauth?)
        • Google (oauth)
        • eigen authenticatie (auto request pw via mail)
        • (ik kan zo snel geen documenttie over API endpoints voor uploads vinden)
      • Eindresultaat:
        • De gebruiker kan nu de boomstructuren visualiseren en erdoor zoeken

Webservice Workflow 5: PICCL: OCR, Tekstnormalisatie en Linguistische verrijking

  • Use cases:
    • Gebruiker wil een gescande tekst digitaliseren
  • Data- & Transformatie pipeline:
    • TIFF document (gescande tekst)
    • PICCL service
    • FoLiA document, met eventueel naar parameterisering dubbele tekstlagen en string-annotaties (ticcl), tokenisatie (ucto), verdere verrijking (frog), of Zip archief van meerdere zulke FoLiA documenten
  • Eventuele vervolgstappen:
    • (5a) Autosearch zoals in pipeline 1 (enkel document) of 4 (meerdere documenten)
    • (5b) FLAT zoals in pipeline 2 (enkel document), FLAT kan tot op zekere hoogte (beetje buggy nog) de verschillende tekstlagen (genormaliseerd vs niet genormaliseerd) visualiseren.
  • Eventuele varianten:
    • PDF (met scan) input ipv TIFF

Minimale workflows

Een aantal van de gesuggereerde workflows waren minimaal, in de zin dat er maar één tool/schakel bij betrokken is. Op zich zijn dat juist goede bouwblokken voor subworkflows en kunnen er veel workflows van die soort opgesteld worden. Ik begin even met degenen die oorspronkelijk gegeven waren:

Minimale Webservice Workflow 6: GreTeL: TEI corpus upload en zoeken in treebanks

  • Data- & Transformatie pipeline:
    • TEI documenten
      • Opmerking: Dit zou wat nader gespecificeerd moeten worden want TEI is enorm breed en kent vele vormen. Ik weet niet wat voor vorm van TEI GreTeL kan hanteren
    • GreTeL service
  • Varianten:
    • CHILDES input ipv TEI input.

Minimimale Webservice Workflow 7: Autosearch

  • Data- & Transformatie pipeline:
    • TEI documenten
      • Opmerking: Zie workflow 6
    • AutoSearch service
      • Eindresultaat:
        • Gebruiker kan in het corpus zoeken
  • Varianten:
    • FoLiA input ipv TEI input

Directe Workflows

Alle bovenstaande workflows zijn webservice georiënteerd, dit geeft de nodige overhead (veel netwerk overhead bij elke schakel). Bij het verwerken van grote hoeveelheden data (denk: grote corpora) kan dit al snel een bottleneck worden. Het lijkt me daarom relevant om ook directere workflows te ontwikkelen, die lokaal of gedistribueerd over een rekencluster gedraaid kunnen worden. Hier komen dan deployment oplossingen bij kijken zoals in het originele VRE plan (waar LaMachine deels in kan voorzien).

Zelf heb ik al een aantal minimale directe workflows geimplementeerd rondom bv ucto (tokeniser) en Frog. Dit heb ik gedaan met Nextflow (3rd party) en deze workflows maken deel uit van aNtiLoPe. Voordeel is dat deze gelijk over een heel rekencluster (eventueel nog met tussenkomst van iets als SGE of SLURM) geparalelliseerd gedraaid kunnen worden. Ik geloof dat anderen zoals bv bij eScience met vergelijkbare dingen bezig zijn geweest voor andere pipelines (met de VU Newsreader geloof ik).

Directe Workflow 1: Automatische lingüistische verrijking van een Nederlands corpus (geen verdere nabewerking)

Dit is een variant op pipeline 1 of 3 die geheel lokaal gedraaid wordt zonder webservices en waarbij ook geen verdere nabewerking zit.

  • Use Cases:
    • Gebruiker wil corpus verrijken op een eigen rekencluster met minime overhead
  • Data- & Transformatie pipeline: (n.b: tools/services zijn vetgedrukt, data niet)

Suggesties voor andere relevante (minimale) workflows

Ik speculeer even kort in willekeurige volgorde op andere mogelijkheden die relevant zijn voor WP3, al zijn ze niet allemaal officieel binnen CLARIAH WP3 ontwikkeld (dat vind ik niet zo relevant), maar het zijn wel componenten die binnen het de WP3 scope passen, compatible zijn, en zo ingeplugd kunnen worden. Dit zijn minimale pipelines met maar één schakel:

Ucto

  • Use Cases:
    • Een gebruiker heeft ongetokeniseerde tekst en wil dit tokeniseren
  • Data- & Transformatie pipeline:
    • Plaintext of FoLiA
    • Ucto service: spellingscorrectie voor Nederlands
    • plaintext of FoLiA, getokeniseerd
  • Eventuele vervolgstappen:
    • Hier zijn eigenlijk heel veel mogelijkheden

Valkuil

WikiEnte

  • Use Cases:
    • Een gebruiker heeft een tekst en wil hier namen in herkennen en deze gelinked hebben naar Wikipedia/DBPedia
  • Data- & Transformatie pipeline:
    • Plaintext of FoLiA
    • WikiEnte named entity recognition & entity linking
    • FoLiA met named entities en links naar DBPedia/WikiPedia
  • Eventuele vervolgstappen:
    • Visualisatie van de named entities en links in FLAT

Oersetter

  • Use Cases:
    • Een gebruiker heeft Nederlandse tekst die hij/zij naar het Fries wil vertalen, of vice versa.
  • Data- & Transformatie pipeline:
  • Eventuele vervolgstappen:
    • Voor Nederlandse uitvoer; verdere werking met bv. Frog

SpaCy

  • Use Cases:
    • Een gebruiker heeft een tekst en wil hier lingüistische verrijkingen op aanbrengen
  • Data- & Transformatie pipeline:
    • Plaintext of FoLiA
    • spacy2folia: Linguistische verrijking (tokenisatie, named entity recognition, PoS, dependency parsing, shallow parsing).
      • Multilingual, backend is spaCy (3rd party) met slechts een kleine wrapper voor FoLiA invoer/uitvoer
      • Nog geen webservice, kan op verzoek zeer snel gerealiseerd worden.
    • FoLiA, getokeniseerd, met naar parameterisering: named entities, PoS, dependency parsing, shallow parsing. Tagset verschilt per taal en is bij Nederlands anders dan bij Frog of Alpino!
  • Eventuele vervolgstappen:
    • Visualisatie en eventuele verdere manuele bewerking in FLAT
    • Zoeken in Autosearch
    • Ik weet niet of PaQu overweg kan met niet-Alpino tagsets, maar anders is dat ook een mogelijkheid voor het visualiseren en doorzoeken van de syntactische structuur.

De VU heeft een vergelijkbare wrapper voor SpaCy naar NAF (https://github.com/cltl/SpaCy-to-NAF)

Colibri Core

T-Scan

Colibri Lang / FoLiA-textcat / folialangid

We hebben drie verschillende tools die taalidentificatie kunnen doen

  • Plaintext of FoLiA (maar alleen tekst, geen annotaties)
  • colibri-lang / FoLiA-textcat / folialangid: Taalidentificatie
    • ondersteuning voor oud-Nederlands
    • Nog geen webservice (kan op verzoek)
  • FoLiA met taalinformatie

Nederlab Enrichment Pipeline

  • FoLiA of TEI P5/Lite XML zoals opgeleverd voor de DBNL collectie door de KB, TEI XML voor andere collecties zoals opgeleverd door INT
  • Nederlab Pipeline: Verrijking van historisch Nederlands
    • Dit is an sich dus al een grote pipeline, het combineert tools die al elders langsgekomen zijn als tei2folia, Ucto, Frog, WikiEnte, Colibri-Lang
    • Nog geen webservice (kan op verzoek)
  • FoLiA

Engelse Spraakherkenning

Automatic Transcript of Oral History Interviews (Nederlandse Spraakherkenning)

Fries-Nederlandse Spraakherkenning

Mogelijkheden met software van andere CLARIAH partners

De bovenstaande lijst van suggesties is uiteraard niet volledig en beperkt zich tot de dingen waar ik zicht op heb en/of bij betrokken ben geweest. Wat betreft andere partners liggen er denk ik ook nog interessante mogelijkheden:

Vrije Universiteit Amsterdam, CLTL?

Wat betreft interoperabiliteit met de VU pipelines (o.a. NewsReader) en onze Nijmeegse pipelines zijn er gesprekken en initiatieven geweest, zo zijn we ook aan een naf2folia/folia2naf conversie begonnen die daarin een sleutelrol zou moeten vervullen door onze respectievelijke dataformaten te converteren. Maar helaas is dit door tijdsgebrek en gebrek aan mankracht nooit genoeg van de grond gekomen om een echt werkbare interoperabiliteit op te leveren.

Naast de Newsreader pipeline zijn andere met name interessante tools voor de WP3 VRE (allen nog niet als webservice beschikbaar voor zover ik weet):

INT

Er zijn vast interesssante mogelijkheden met Blacklab en de nieuwe frontend daarvoor. Ik weet ook niet hoe zich dat precies tot AutoSearch verhoudt.

Meertens

Hier denk ik aan eerste instantie aan koppelingen met MTAS, om corpora doorzoekbaar te maken.

Mogelijkheden met andere CLARIN partners?

Als we buiten Nederland kijken zijn er ook interessante mogelijkheden, bijvoorbeeld tot interoperabiliteit met het Duitse Weblicht (waar dan als sleutelcomponent een TCF-FoLiA/FoLiA-TCF converter ontwikkeld zou moeten worden).

Verdere is er een zekere overlap tussen een deel van de VRE en de activiteiten van het Switchboard.

Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment