Text Tonsorium

Text Tonsorium er et workflow management system som ikke kun fører data gennem workflows, men også designer workflows ved hjælp af 'byggeklodser'. Hver byggeklods indeholder et sprogteknologisk værktøj.

Når du arbejder med Text Tonsorium, skal dit fokus være på det resultat som du vil opnå, og ikke på de værktøjer der er i værktøjskassen. Derfor er det nyttigt at vide hvordan det ønskede resultat bedst kan beskrives. Du vil måske alligevel også vide hvilke værktøjer er integreret i Text Tonsorium. Denne side giver dig information om begge dele.

Overblik

Hvordan bliver arbejdsgange beregnet og eksekveret?
At arbejde med Text Tonsorium
Træk
Værktøjer

Hvordan bliver arbejdsgange beregnet og eksekveret?

En arbejdsgang består af et eller flere værktøjer forbundet ved datastrømme, se Figur 1. I diagrammet afbildes værktøjer som figurer (firkanter, cirkler, stjerne, o.s.v.) og datastrømme som linjer imellem dem.
Text Tonsorium kan gøre to helt forskellige ting med arbejdsgange: det kan sammensætte arbejdsgange og det kan eksekvere dem. Her viser vi hvordan.

Figur 1. Beregning og eksekvering af en arbejdsgang.
input(som brugeren har uploadet)output(mål som brugeren har specificeret)

At sætte en arbejdsgang sammen

  1. Toppen af diagrammet: Brugeren har uploadet en eller flere dokumenter som hun vil processere ved hjælp af Text Tonsorium.
    Bunden af diagrammet: Brugeren har også specificeret hvilket resultat hun ønsker at få fra Text Tonsorium.
  2. Det første værktøj som Text Tonsorium tilføjer til sit plan er faktisk det sidste værktøj i arbejdsgangen: et værktøj som opfylder brugerens mål. Derfra går det baglæns mod inputtet.
  3. Når det sidste værktøj i arbejdsgangen er valgt, bliver dets inputkrav det nye mål.
  4. Dette forløb, hvor målet bliver flyttet når et værktøj er tilføjet, kan blive gentaget adskillige gange.
  5. Når et værktøj bliver tilføjet som tager brugerens dokument som input, er det stadig for tidligt at påstå at en arbejdsgang er fundet.
  6. Text Tonsorium følger stien baglæns og undersøger om der undervejs er værktøjer der forlanger flere inputs. Når Text Tonsorium finder et sådant værktøj, går det igen mod inputtet for at prøve at opfylde behovet.
    Sommetider skal endnu et værktøj tilføjes for at opfylde behovet.
  7. I andre tilfælde kan outputtet fra et andet værktøj genanvendes.
  8. Text Tonsorium går igen tilbage mod målet for at forsøge at opfylde endnu ikke opfyldte inputkrav.
  9. Nogle gange indsætter Text Tonsorium det samme værktøj flere gange i arbejdsgangen. I sådanne tilfælde bliver alle forekomster af værktøjet styret med forskellige parametre, så de laver forskellige ting.
  10. Text Tonsorium er færdig med konstruktionen af en brugbar arbejdsgang når brugeren kan få det output hun ønsker fra det sidste værktøj og alle værktøjer får de nødvendige inputs.

At eksekvere en arbejdsgang

  1. Når Text Tonsorium har sat en arbejdsgang sammen, kan vi lade Text Tonsorium eksekvere den med input som vi har uploadet.
  2. Inputtet er sent til det første værktøj i arbejdsgangen.
  3. Outputtet fra det første værktøj sendes til det andet værktøj.
  4. Outputtet fra det første værktøj sendes også til det tredje værktøj. Afhængig af de involverede væktøjer, kan værktøjer aktiveres samtidig.
  5. Et værktøj aktiveres ikke førend alle dets inputs er til stede.
  6. Samme værktøj, med det samme input, men styret af andre parametere og derfor med et andet output som følge.
  7. Mange datastrømme kommer sammen i det sidste værktøj i arbejdsgangen. Dette sker ofte. Brugere ønsker ofte at se mange annotationslag i outputtet.
  8. Én enkel datastrøm, som indeholder alle annotationslag, står til brugerens rådighed.

Ovenstående tegning giver et forenklet billede. Hvad du ikke kan se er at Text Tonsorium altid forsøger at finde ikke kun én, men alle veje der fører til målet.
Text Tonsorium finder alle arbejdsgange ved at afprøve alle værktøjer og alle værktøjsindstillinger.

Beskæring

Brugeren bliver ikke præsenteret for den fulde samling af de arbejdsgange som Text Tonsorium har fundet. Der vil næsten altid være arbejdsgange som ikke giver så meget mening for en bruger. Derfor finder der en kraftig beskæring sted som fjerner mange arbejdsgange.

Værktøjer som konkurerer om samme mål

I næste eksempel er der to værktøjer som konkurerer om at levere output som opfylder samme mål. Der er tre værktøjer som tager dette output som input. Disse tre værktøjer kan ikke tage output fra to værktøjer på én gang, men må vælge.

Figur 2. Beskæring.
  1. Ikke-beskåret, flertydig arbejdsgang som indeholder to værktøjer som opfylder det samme mål.
  2. Beskåret, utvetydig arbejdsgang som ignorere det andet af de to værktøjer, konfiguration 1.
  3. Beskåret, utvetydig arbejdsgang som inkluderer begge værktøjer, konfiguration 2.
  4. Beskåret, utvetydig arbejdsgang som inkluderer begge værktøjer, konfiguration 3.
  5. Beskåret, utvetydig arbejdsgang som inkluderer begge værktøjer, konfiguration 4.
  6. Beskåret, utvetydig arbejdsgang som inkluderer begge værktøjer, konfiguration 5.
  7. Beskåret, utvetydig arbejdsgang som inkluderer begge værktøjer, konfiguration 6.
  8. Beskåret, utvetydig arbejdsgang som inkluderer begge værktøjer, konfiguration 7.
  9. Beskåret, utvetydig arbejdsgang som ignorere det første af de to værktøjer, konfiguration 8.

Hvis et mål kan opfyldes på M måder og der er N knuder i arbejdsgangen som definerer dette mål, er der N^M gyldige konfigurationer. I eksemplet er M = 2 og N = 3, så der er 2^3 = 8 gyldige konfigurationer.

Med tiden blev flere og flere værtøjer integreret i Text Tonsorium, og situationer hvor værktøjer konkurerer forekom oftere og oftere. Det resulterede i uoverskuelig store mængder (nogle gange titusinder) af arbejdsgange som brugeren umuligt kunne vælge imellem.

Beskæring nedbringer antallet af arbejdsgange som brugeren får præsenteret. Alle arbejdsgange som indeholder to eller flere konkurerende værktøjer bliver skåret væk. I eksemplet er det kun den første og den sidste konfiguration som overlever beskæringen. Tilbage er derfor ikke N^M, men blot M konfigurationer.

Værktøjer som frastøder et andet værktøj med 'lugtmarkering'

Nogle værktøjer bør aldrig forekomme i den samme arbejdsgang. For eksempel vil to OCR-programmer (OCR=Optical Character Recognition) næsten altid være uenige om antallet af ord i inputtet fordi det ene værktøj ser blanktegn hvor det andet ikke gør.

Text Tonsorium kan give forskellige værdier for et 'lugt'-attribut til værktøjer som ikke passer sammen. Lugten spræder sig gennem arbejdsgangen, men hvis den støder in i en anden lugt, bliver arbejdsgangen kasseret.

At arbejde med Text Tonsorium

Ofte beregner Text Tonsorium mange workflows, som alle fører til dit mål, og så skal du vælge en af disse. Som tommelfingerregel gælder det at hvis du udtrykker dit mål i flere detaljer, vil der være færre forslag til workflows, og måske endda ingen.

1: Upload
Du kan uploade din tekst på tre måder:
fil upload
Text Tonsorium kan håndtere mange forskellige inputformater.
Du er ikke begrænset til upload af en enkel fil. Vi har gode erfaringer med grupper med over 100 filer.
via URL
Du kan give en liste af URLer. Bemærk at nogle websider kræver at JavaScript er aktiveret i din browser. Sådanne sider kan ikke hentes af Text Tonsorium.
skrive
Du kan skrive en tekst.
2: Fortæl hvad du vil
Input
Mål
3: Vælg en arbejdsgang
4: Start den valgte arbejdsgang
5: Inspicer/Hent resultater

Træk

Datastrømme, men også et værktøjs input- og outputspecifikationer, bliver beskrevet ved hjælp af 'træk'. Træk beskriver ting som sproget som er anvendt i en text, filformat, og indholdstype.
Brugere bliver konfronteret med træk og trækværdier når de specificerer målet for en arbejdsgang. Der findes et andet niveau i trækspecifikationen, et niveau som brugeren normalt ikke skal bekymre sig om: trækværdier kan blive beriget med 'stilindikatorer'.
Trækværdier og stilindikatorer skal altid vælges fra foruddefinerede værdiklasser. Det sker ved hjælp af dropdownlister.

Dette er listen over træk som anvendes i denne version af Text Tonsorium:

Annotationstype
Subtype af resource, fx basistekst, tokens, alfabetisk liste.
Sprog
Sproget i teksten.
Format
Måden hvorpå information er lagret i en fil.
Historisk periode
Tidsperiode hvori stavningen eller ortografien anvendt i teksten blev anvendt.
Sammensætning
Måden hvorpå resultaterne præsenteres for brugeren.
Udseende
Dekorativ tradition, fx skrifttype.
Flertydighed
Til angivelse om data indeholder flertydige elementer.
Lugt
Special feature used to give unique identity to input and intermediate data, for example output of OCR software.

Annotationstype

Subtype af resource, fx basistekst, tokens, alfabetisk liste.

ingen annotation
Tekststumper
paragrafsegmenter
sætninger, før tokenisering
sætningssegmenter
tokens
Penn Treebank
Simple
navne
ordklasse
PoS-tags
Penn Treebank
CST-tagset
DSL-tagset
Universal Part-of-Speech Tagset
Menota
lemmaer
navnefraser (NP)
morfologiske træk
Universal Part-of-Speech Tagset
Menota
sentiment
syntaks (dependensstruktur)
gentagelser
keyword-in-context (KWIC)

Sprog

Sproget i teksten.

afrikaans
albansk
arabisk
armensk
asturisk
baskisk
hviderussisk
bosnisk
bretonsk
bulgarsk
katalansk
kinesisk
korsikansk
kroatisk
koptisk
tjekkisk
dansk
nederlandsk
engelsk
esperanto
estisk
færøsk
finsk
fransk
galicisk
georgisk
tysk
gotisk
græsk
middelnedertysk
haitisk kreolsk
hebraisk
hindi
ungarsk
islandsk
indonesisk
inuittisk
irsk
italiensk
japansk
javanesisk
kannada
koreansk
kurdisk
latin
lettisk
litauisk
letzeburgsk
makedonsk
malajisk
malayalam
maltesisk
mansk
marathi
nordsamisk
norsk
norsk bokmål
nynorsk
occitansk
kirkeslavisk
persisk
polsk
portugisisk
rumænsk
russisk
skotsk gælisk
serbisk
slovakisk
slovensk
spansk
swahili
svensk
tamilsk
telugu
tyrkisk
ukrainsk
urdu
uighur
usbekisk
vietnamesisk
walisisk
wolof
jiddisch

Format

Måden hvorpå information er lagret i en fil.

flad
Kan redigeres med en teksteditor som f.eks. 'vi'.
UTF-8
RTF
PDF
HTML
Med traditionelle tags (h, p, etc.)
layoutbevarende
Corpus Workbench (for CQP queries)
verticalized text, Corpus Workbench input format
DOC
DOCX
ODF
ODP
PPT
PPTX
TEIP5
TEIP5DKCLARIN
Du kan se indholdet i en browser og du kan redigere filen med en tekst editor som f.eks. 'vi' eller med en XML editor som f.eks. 'Oxygen' eller Microsofts 'Visual Studio'.
TEIP5DKCLARIN_ANNOTATION
Du kan se indholdet i en browser og du kan redigere filen med en tekst editor som f.eks. 'vi' eller med en XML editor som f.eks. 'Oxygen' eller Microsofts 'Visual Studio'.
id: not disclosed
billede
GIF
JPEG JFIF
Progressive JPEG JFIF
Portable Network Graphics
Tag Image File Format
Image as PDF
audio
CoNLL
CoNLL 2009 (14 kolonner)
CoNLL-U (10 kolonner)
Penn Treebank
JSON
Ingen unik ID
Med xml id
Org-mode
flad tekst with ASCII 127 tegn
kolonner, tab separeret
to kolonner, tab separeret
tre kolonner, tab separeret
fire kolonner, tab separeret
URL

Historisk periode

Tidsperiode hvori stavningen eller ortografien anvendt i teksten blev anvendt.

antikken
middelalderen
moderne tid
efterkrigstiden

Sammensætning

Måden hvorpå resultaterne præsenteres for brugeren.

normal
frekvensliste
alfabetisk liste

Udseende

Dekorativ tradition, fx skrifttype.

roman
gotisk
gotisk m. ø
OCR
ikke-normaliseret
normaliseret
bedst for programmer
nydelig opsætning

Flertydighed

Til angivelse om data indeholder flertydige elementer.

utvetydig
tvetydig
beskåret

Lugt

Special feature used to give unique identity to input and intermediate data, for example output of OCR software.

ny lugt

Værktøjer

blbla

#Name of the toolSupported languages
1Anno-splitter
2Bohnet parserda, de, en, es, fr
3Bohnet taggerde, en, es, fr
4Brill taggerda, en, la
5CoNLL 2009 to U
6CoNLL formatter
7CONLL to Penn Treebank
8CONLL to three columns
9CQP formatter
10CSTlemmaaf, ast, bg, ca, cs, cy, da, de, el, en, es, et, fa, fo, fr, ga, gd, gl, gv, hr, hu, is, it, la, mk, nl, no, pl, pt, ro, ru, sk, sl, sq, sr, sv, uk
11CSTnerda
12danerda
13dapipeda
14dependency2tree
15Diplom annotator
16Diplom fetch corrected textda, gml, la, sv
17eSpeakaf, bg, bs, ca, cs, cy, da, de, el, en, eo, es, et, fi, fr, hi, hr, hu, hy, id, is, it, ka, kn, ku, la, lv, mk, ml, nl, pl, pt, ro, ru, sk, sq, sr, sv, sw, ta, tr, vi, zh
18Frequencies
19html2text
20JSON pretty print
21JSON to ORG-mode
22JSON to TEI
23JSON to TSV
24KORP to Excel
25Laposda, la
26LemPoSbg, cs, da, de, es, et, fa, fo, hr, hu, is, it, la, mk, nl, pl, pt, ro, ru, sk, sl, sq, sr, sv, uk
27LibreOffice
28Normaliserda
29Normalize diplla
30NP finderda
31OpenNLP Taggerda, en
32pdf2htmlEX
33PDFMiner
34plain to TEI
35PoS translatorda, la
36PruneLemPos
37Repetitiveness checker
38RTFreader
39Sentence extractor
40Stanford CoreNLPen
41TEI annotator
42TEI extract tokens/sentences
43TEI to CoNLL-U
44TEI to Org-mode
45TEI tokenizer
46TEI-segmenter
47Tesseract-OCRv5af, br, bs, ca, co, cs, cy, da, de, en, eo, es, et, eu, fi, fo, fr, ga, gl, hr, ht, hu, id, is, it, iu, jv, la, lb, lt, lv, ms, mt, nb, nl, nn, oc, pl, pt, ro, sk, sl, sq, sr, sv, sw, tr, uz, vi, yi
48Token extractoraf, ar, ast, be, bg, bs, ca, cop, cs, cy, da, de, el, en, eo, es, et, eu, fa, fi, fo, fr, ga, gd, gl, got, gv, he, hi, hr, hu, hy, id, is, it, ja, ka, kn, ko, ku, la, lt, lv, mk, ml, mr, mt, nb, nl, nn, no, pl, pt, ro, ru, se, sk, sl, sq, sr, sv, sw, ta, te, tr, ug, uk, ur, vi, wo, zh
49udpipeaf, ar, be, bg, ca, cop, cs, cu, da, de, el, en, es, et, eu, fa, fi, fr, ga, gd, gl, got, he, hi, hr, hu, hy, id, it, ja, ko, la, lt, lv, mr, mt, nb, nl, nn, pl, pt, ro, ru, se, sk, sl, sr, sv, ta, te, tr, ug, uk, ur, vi, wo, zh
50vujiLoXla

Anno-splitter

Takes TEI P5 document containing multiple stand-off annotation groups (spanGrp). Outputs one of the annotation groups.

Bohnet parser

Dependency parser, part of mate-tools.

Bohnet tagger

Part of Speech tagger that is distributed as part of mate-tools.

Brill tagger

Part-of-speech tagger: Marks each word in a text with information about word class and morphological features.

CoNLL 2009 to U

Convert CoNLL 2009 (14 columns) to CoNLL-U (10 columns)

CoNLL formatter

Converts input to CoNLL 2009 format.

CONLL to Penn Treebank

Convert syntax dependency annotation in CoNLL 2009 or CoNLL-U format to bracketed "Lisp-like" format.

CONLL to three columns

Convert a CONLL 2009 or CONLL-U file to a tabalator separated file. On each line: <word> \t <lemma> \t <pos> \n

CQP formatter

Takes input comntaining words, tags and lemmas and creates output that can be read by the CQP software.

CSTlemma

Produces the dictionary look-up form (or lemma) for each word, inflected or not, in the input.

CSTner

Classifies names as proper names, locations (with sub-classes of street, city, land and other types of locations), and other names (called MISC)

daner

Named Entity Recognition for Danish, Distributed by ITU NLP. Uses Stanford CoreNLP NER and the model from DKIE to tag incoming Danish plain text for named entities, in three classes: location, person, and organization names.

dapipe

UDPipe tools for Danish. udpipe does pos-tagging, lemmatization and syntactic analysis. The syntactic analysis and lemmatization is always based on UDPipe's own pos-tagging. Using dapipe with TEI P5 input is discouraged, unless tokenisation and sentence extraction is done in separate steps, and not by dapipe itself.

dependency2tree

Convert CoNLL output of a dependency parser into a latex or graphviz tree.

Diplom annotator

Store lemma in column 3 and/or word class in column 4 of an orgmode input file that already has diplomatic and facsimal values in columns 7 and 8.

Diplom fetch corrected text

Fetch the column with corrected transcriptions. This column contains words with additions between parentheses. The parentheses are removed in the output.

eSpeak

Text to speech software. Originally known as speak and originally written for Acorn/RISC_OS computers starting in 1995. This version is an enhancement and re-write, including a relaxation of the original memory and processing power constraints, and with support for additional languages.

Frequencies

Sorts input lines, collapses equal lines, appends column with frequencies. Assumes that input is 1, 2 or 3 columns, separated by tabs.

html2text

A very simple script that loads from HTML, and then iterates over the DOM to correctly output plain text.

JSON pretty print

Json pretty-print parser based on a recursive lexical analyser. The parser was based on the specification defined at json.org. The input file is parsed to build a json object. If the object is correct, it will be pretty-printed to standard output.

JSON to ORG-mode

Converts JSON output with tokens, lemmas and Part of Speech tags to a three-column ORG-mode table.

JSON to TEI

Read json file with fields for token ID, word, lemma and pos. Output a TEI P5 annotation file (spanGrp) containing either lemmas or Part of Speech tags.

JSON to TSV

Convert word-lemma-pos data from JSON to CQP format.

KORP to Excel

This tool generates a tabulator separated file with all KWIC (keyword-in-context) results generated by the KORP tool at the address https://alf.hum.ku.dk/korp/. Input to the tool is the URL copied from the address line when KORP has performed a search.

Lapos

Fork of the Lookahead Part-Of-Speech (Lapos) Tagger

LemPoS

Lemmatizes input text and adds PoS-options to each lemma. Output can be ambiguous.

LibreOffice

A powerful office suite, here used to convert office documents to RTF or PDF.

Normaliser

Normalises older (1200-1900) Danish text to spelling rules as employed in ODS (Ordbog over det danske Sprog).

Normalize dipl

Fill column left of diplom column with normalized tokens, i.e. v -> u, j -> i and all lowercase.

NP finder

Collects words that constitute noun phrases.

OpenNLP Tagger

Part of Speech Tagger that marks tokens with their corresponding word type based on the token itself and the context of the token. Uses a probability model to predict the correct pos tag.

pdf2htmlEX

Converts PDF to HTML without losing text or format. (The produced HTML can hardly be interpreted by other tools.) Renders PDF files in HTML, utilizing modern Web technologies. It aims to provide an accurate rendering, while keeping optimized for Web display. Best for text-based PDF files, for example scientific papers with complicated formulas and figures. Text, fonts and formats are natively preserved in HTML such that you can still search and copy. The generated HTML file is static, with optional features powered by JavaScript.

PDFMiner

Extracts information from PDF documents. Focuses entirely on getting and analyzing text data.

plain to TEI

From a plain segmentized and tokenized text file that uses DEL characters to separate tokens that are written together in the input, create a TEI P5 Clarin Base Format text with attributes S and T for segment and token identification.

PoS translator

Translate from DSL's tag set to Menota

PruneLemPos

A "Poor man's POS-tagger" that takes text input that has ambiguous lemma and PoS annotations and diminishes the ambiguity by using bigram HMM + Viterbi algorithm. No training data are involved! Works best with larger texts.

Repetitiveness checker

Uses a statistical method to find repetitions in a text.

RTFreader

Extracts segments from RTF-file or from plain text. Optionally tokenises. Keeps \f

Sentence extractor

From a TEI text enriched with T (token) and S (segment) attributes, extract the sentences and their offsets in the source.

Stanford CoreNLP

CoreNLP is your one stop shop for natural language processing in Java! CoreNLP enables users to derive linguistic annotations for text, including token and sentence boundaries, parts of speech, named entities, numeric and time values, dependency and constituency parses, coreference, sentiment, quote attributions, and relations. CoreNLP currently supports 8 languages: Arabic, Chinese, English, French, German, Hungarian, Italian, and Spanish.

TEI annotator

Add attributes for lemma and Part of Speech tag to <w> and <c> elements. (<w> and <c> elements must already exist.)

TEI extract tokens/sentences

Reads TEIP5 and produces token and sentence annotations. The annotations refer to the base text, but also include the tokens and sentences themselves in plain text.

TEI to CoNLL-U

Converts a TEI P5 document with annotations for lemma, pos (or msd) and syntactic dependencies to CoNLL-U 10 column format.

TEI to Org-mode

Convert TEI P5 stand-off annotation to a two column file in Org-mode format. The first column contains a token, the second contains the annotation: POS-tag, word class, or lemma

TEI tokenizer

Apply a primitive tokenisation to the contents of the <text> element in a TEI P5 document. Each word, punctuation and whitespace is marked up by w or c tags. S and T attributes indicate wich primitive tokens should be combined to create higher level tokens.

TEI-segmenter

Reads tokens and sentences as annotations and produces segment annotations, where segments refer to tokens, not to the base text. Input and output is encoded in TEI P5.

Tesseract-OCRv5

Tesseract Open Source OCR Engine. Tesseract 4 adds a new neural net (LSTM) based OCR engine which is focused on line recognition, but also still supports the legacy Tesseract OCR engine of Tesseract 3 which works by recognizing character patterns.

Token extractor

From a TEI text enriched with T (token) and S (segment) attributes, extract tokens and their offset in the input.

udpipe

Tokenizer, POS Tagger, Lemmatizer and Parser models for 94 treebanks of 61 languages of Universal Depenencies 2.5 Treebanks.

vujiLoX

Converts Latin text to lower case and transforms v to u and j to i.