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
Stilvalg:
Penn Treebank
Simple
navne
ordklasse
PoS-tags
Stilvalg:
Penn Treebank
CST-tagset
DSL-tagset
Universal Part-of-Speech Tagset
Menota
lemmaer
navnefraser (NP)
morfologiske træk
Stilvalg:
Universal Part-of-Speech Tagset
Menota
sentiment
syntaks (dependensstruktur)
gentagelser
keyword-in-context (KWIC)

Sprog

Sproget i teksten.

afrikaans
afr
albansk
sqi
arabisk
ara
armensk
hye
asturisk
ast
baskisk
eus
hviderussisk
bel
bosnisk
bos
bretonsk
bre
bulgarsk
bul
katalansk
cat
kinesisk
zho
korsikansk
cos
kroatisk
hrv
koptisk
cop
tjekkisk
ces
dansk
dan
nederlandsk
nld
engelsk
eng
esperanto
epo
estisk
est
færøsk
fao
finsk
fin
fransk
fra
galicisk
glg
georgisk
kat
tysk
deu
gotisk
got
græsk
ell
middelnedertysk
gml
haitisk kreolsk
hat
hebraisk
heb
hindi
hin
ungarsk
hun
islandsk
isl
indonesisk
ind
inuittisk
iku
irsk
gle
italiensk
ita
japansk
jpn
javanesisk
jav
kannada
kan
koreansk
kor
kurdisk
kur
latin
lat
lettisk
lav
litauisk
lit
letzeburgsk
ltz
makedonsk
mkd
malajisk
msa
malayalam
mal
maltesisk
mlt
mansk
glv
marathi
mar
nordsamisk
sme
norsk
nor
norsk bokmål
nob
nynorsk
nno
occitansk
oci
kirkeslavisk
chu
persisk
fas
polsk
pol
portugisisk
por
rumænsk
ron
russisk
rus
skotsk gælisk
gla
serbisk
srp
slovakisk
slk
slovensk
slv
spansk
spa
swahili
swa
svensk
swe
tamilsk
tam
telugu
tel
tyrkisk
tur
ukrainsk
ukr
urdu
urd
uighur
uig
usbekisk
uzb
vietnamesisk
vie
walisisk
cym
wolof
wol
jiddisch
yid

Format

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

flad
Kan redigeres med en teksteditor som f.eks. 'vi'.
Stilvalg:
UTF-8
RTF
PDF
HTML
Stilvalg:
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'.
Stilvalg:
id: not disclosed
billede
Stilvalg:
GIF
JPEG JFIF
Progressive JPEG JFIF
Portable Network Graphics
Tag Image File Format
Image as PDF
audio
CoNLL
Stilvalg:
CoNLL 2009 (14 kolonner)
ID FORM LEMMA PLEMMA POS PPOS FEAT PFEAT HEAD PHEAD DEPREL PDEPREL FILLPRED PRED
CoNLL-U (10 kolonner)
ID FORM LEMMA UPOS XPOS FEATS HEAD DEPREL DEPS MISC
Penn Treebank
JSON
Stilvalg:
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
to kolonner, tab separeret, med tomme linjer
tre kolonner, tab separeret, med tomme linjer
fire kolonner, tab separeret, med tomme linjer
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
frekvensliste, kun ukendte ord
alfabetisk liste, kun ukendte ord

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

Her er listen med tilgængelige værktøjer:

#Name of the toolSupported languages
1Anno-splitter
2Bohnet parserda, de, en, es, fr
3Bohnet taggerde, en, es, fr
4Brill taggerda, en, la
5cluster
6CoNLL 2009 to U
7CoNLL formatter
8CONLL to Penn Treebank
9CONLL to three columns
10CQP formatter
11CSTlemmaaf, ast, be, bg, ca, cs, cy, da, de, el, en, es, et, fa, fo, fr, ga, gd, gl, gv, hr, hu, is, it, ka, la, mk, nl, no, pl, pt, ro, ru, sk, sl, sq, sr, sv, uk
12CSTnerda
13danerda
14dependency2tree
15Diplom annotator
16Diplom fetch corrected textda, gml, la, sv
17Document similarity checker
18eSpeakaf, 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
19Frequencies
20html2text
21JSON pretty print
22JSON to ORG-mode
23JSON to TEI
24JSON to TSV
25KORP to Excel
26Laposda, la
27LemPoSbe, bg, cs, da, de, es, et, fa, fo, hr, hu, is, it, la, mk, nl, pl, pt, ro, ru, sk, sl, sq, sr, sv, uk
28LibreOffice
29Normaliserda
30Normalize diplla
31NP finderda
32OpenNLP Taggerda, en
33pdf2htmlEX
34PDFMiner
35plain to TEI
36PoS translatorda, la
37PruneLemPos
38Repetitiveness checker
39RTFreader
40Sentence extractor
41Stanford CoreNLPen
42TEI annotator
43TEI extract tokens/sentences
44TEI to CoNLL-U
45TEI to Org-mode
46TEI tokenizer
47TEI-segmenter
48Tesseract-OCRv5af, br, bs, ca, co, cs, cy, da, de, en, eo, es, et, eu, fa, 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
49Token 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
50udpipeaf, 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
51vujiLoXla

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.

cluster

Make clusters of lines, separated by empty lines. Each cluster contains all those lines that have the the value in the first or second column in common with one or more other lines in the same cluster.

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.

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.

Document similarity checker

Uses a statistical method to find phrases that are found in each of the input documents.

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.