Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include texts from all struct types #49

Merged
merged 32 commits into from
Jul 2, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions Changelog
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
### Changed
- Added tests for TEI API
- Evaluate texts from all struct types but `binding` and `colour_checker`
- Add `front`, `body` and `back` per default

### Fixed
- https://github.com/slub/mets-mods2tei/issues/43

## [0.1.1] - 2020-05-11
### Added
- Treat nested AMD-type (non-logical) divs in logical struct map (i.e.
Expand Down
13 changes: 13 additions & 0 deletions docs/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>mets-mods2tei</title>
<meta charset="utf-8"/>
</head>
<body>
<h1>mets-mods2tei</h1>
<ul>
<li><a href="presentations/index.html">Presentations</a></li>
</ul>
</body>
</html>
13 changes: 13 additions & 0 deletions docs/presentations/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>mets-mods2tei — Presentations</title>
<meta charset="utf-8"/>
</head>
<body>
<h1>mets-mods2tei — Presentations</h1>
<ul>
<li><a href="slub_april_2020/slub_april_2020.html">Part of the XML/TEI introduction given in April 2020 by Juan Garcés at SLUB Dresden</a></li>
</ul>
</body>
</html>
268 changes: 268 additions & 0 deletions docs/presentations/slub_april_2020/content.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,268 @@
layout: true

<div class="my-header"></div>

<div class="my-footer">
<table>
<tr>
<td style="text-align:right">Sächsische Landesbibliothek – Staats- und Universitätsbibliothek</td>
<td>29. April 2019</td>
<td style="text-align:right"><a href="https://www.slub-dresden.de/">www.slub-dresden.de</a></td>
</tr>
<tr>
<td style="text-align:right">Referat 2.5</td>
<td />
</tr>
</table>
</div>

<div class="my-title-footer">
<table>
<tr>
<td style="text-align:left"><b>Kay-Michael Würzner</b></td>
</tr>
<tr>
<td style="text-align:left">Referat 2.5</td>
</tr>
<tr>
<td style="font-size:8pt"><b>29. April 2019</b></td>
</tr>
<tr>
<td style="font-size:8pt">XML/TEI-Fortbildung</td>
</tr>
</table>
</div>

---

class: title-slide
count: false

# Automatische Erzeugung von TEI-XML
## aus SLUB-Bestandsdaten

---

# Überblick

- Motivation
- Datengrundlage
- Methode
- Anwendungsperspektive

---

class: part-slide
count: false

# Motivation

---

# Motivation

- **TEI**: weitverbreiteter Standard in den Text ver- und bearbeitenden Wissenschaften
+ Anschluss an bestehende Forschungsinfrastrukturen
+ DFG: *Best Practice* für Editionsprojekte
- Standardformate in Bibliotheken:
+ MODS: bibliothekarische Metadaten
+ METS: Strukturdaten
+ ALTO: Volltexte
- Transformationsszenario zur Erhöhung der **Reichweite**
- **Herausforderung**: nicht-triviale Abbildung zwischen **Stand-Off-** (METS/ALTO) und **Inline-**Kodierung (TEI) struktureller Information

---

class: part-slide
count: false

# Datengrundlage

---

# Datengrundlage: MODS

- MODS: *Metadata Object Description Schema*
+ XML-Format zur Kodierung bibliographischer Metadaten
+ hoher Freiheitsgrad
+ ausspezifiziert im [MODS-Anwendungsprofil](https://dfg-viewer.de/fileabmin/groups/dfgviewer/MODS-Anwendungsprofil_2.3.1.pdf)
- Beispiel:
```xml
<mods>
<titleInfo>
<title>Dresden und die Sächsische Schweiz</title>
</titleInfo>
<name type="personal">
<role>
<roleTerm type="text">creator</roleTerm>
</role>
<namePart>Gottschalck, Friedrich</namePart>
</name>
</mods>
```

---

# Datengrundlage: METS

- METS: *Metadata Encoding & Transmission Standard*
+ XML-Format zur Repräsentation digitaler Objekte
+ hoher Freiheitsgrad
+ ausspezifiziert im [METS-Anwendungsprofil](https://dfg-viewer.de/fileabmin/groups/dfgviewer/METS-Anwendungsprofil_2.3.1.pdf)
+ **Kontainerformat**: enthält bspw. MODS
- Grundstruktur:
```xml
<mets>
<metsHdr/>
<dmdSec/>
<amdSec/>
<fileSec/>
<structMap/>
<structLink/>
</mets>
```
---

# Datengrundlage: ALTO

- ALTO: *Analyzed Layout and Text Object*
+ XML-Format zur Repräsentation digitaler Volltexte
+ Text- und Strukturinformation auf **Seitenebene**
+ Rückbindung ans Digitalisat über **Koordinaten**
+ von praktisch allen OCR-Programmen unterstützt
- Beispiel

---

# Datengrundlage: Gegenüberstellung zu TEI

- **bibliographische Metadaten**
+ *MMA*: separat realisiert im MODS-Teil
+ *TEI*: quasi separat realisiert im `teiHeader`
- **Struktur**
+ *MMA*: Sequenz von `div`-Elementen, getrennt vom Text (Standoff, verknüpft auf Seitenebene)
+ *TEI*: im Textteil als integrierte Sequenz von verschachtelten `div`-Elementen
- **Text**
+ *MMA*: pro Seite separiert auf Seitenebene als Sequenz von Absätzen und Zeilen
+ *TEI*: in die Dokumentstruktur integriert als Sequenz von Absätzen und Zeilen

---

class: part-slide
count: false

# Methode

---

# Methode

- **Ziel**: automatische Transformation von *MMA* nach *TEI*
- trivial auf der Ebene der bibliographischen Metadaten
- nicht-trivial auf der Text-Struktur-Ebene
- **Idee**
+ verschachtelte `div`-Ebene als Basis der TEI-Datei
+ Einfügen des Textes auf Absatzebene
```xml
<mets:structMap TYPE="LOGICAL">
<mets:div ADMID="AMD" ...>
<mets:div LABEL="Vorbericht" TYPE="chapter" />
<mets:div LABEL="Kapitel 1" TYPE="chapter">
<mets:div LABEL="Abschnitt 1.1" TYPE="chapter" />
</mets:div>
<mets:div LABEL="Kapitel 2" TYPE="chapter" />
</mets:div>
</mets:structMap>
```

---

# Methode

- **Problem**
+ Stuktur und Text in den SLUB-Daten nur auf Seitenebene
+ i.e. keine Information, **wo** sich die Überschrift auf der Seite befindet
```xml
<mets:structLink>
<mets:smLink xlink:to="PHYS_0001" xlink:from="LOG_0000" />
</mets:structLink>
```
- **„Lösung“**
+ *Lokalisierung* des Strukturelements via `LABEL` auf der Seite
+ Vergleich des zu lokalisierenden Textes `\(t\)` mit allen Positionen `\(i\)` in der OCR `\(O=o_1\ldots o_n\)`
+ minimaler Editierabstand zwischen `\(t\)` und `\(o_i\ldots o_{i+|t|}\)` als Platzierungskriterium
+ Inklusion aller Zeilen, die Teile der optimalen OCR-Sequenz enthalten

---

# Methode

<img src="img/heading_ex.jpg" width="250px" />

```xml
<div TYPE="section"
LABEL="3. Der Vulkan Niragongo in Nordwest-Ruanda" />
```
```xml
<TextBlock>
<TextLine>
<String CONTENT="2" />
</TextLine>
<TextLine>
<String CONTENT="Dcr" />
<SP />
<String CONTENT="Vulkan" />
...
```

---

# Methode

- **Fallstricke**
1. Textvergleich
+ stillschweigende Normalisierung (ſ → s, th → t etc.)
+ Übernahme des Inhaltsverzeichnisses (zusätzliche Nummerierung, Groß-/Kleinschreibung)
+ OCR-Fehler (gehäuft in Überschriften)
+ kurze Überschriften (z.B. Zahlen)
2. fehlende Label
+ Verwendung von Platzhaltern wie *Text* oder *Überschrift*
3. unvollständige Strukturierung
+ aus Kostengründen häufig nur oberste Ebene strukturiert
+ „triviales“ TEI im Ergebnis
- **Test**
+ *Börsenblatt für den Deutschen Buchhandel*
* 27 258 Vorgänge
* ca. 10 h Rechendauer
* 692 389 240 Tokens (laufende „Wörter“)
* 56 192 893 Types (verschiedene „Wörter“)

---

class: part-slide
count: false

# Anwendungsperspektive

---

# Anwendungsperspektive

- veröffentlicht als [`mets-mods2tei` auf GitHub](https://github.com/slub/mets-mods2tei)
- Anwendung auf digitale Sammlungen für Q2/2020 geplant
+ TEI-XMl als zusätzliches Downloadformat auf Dokumentebene
+ Teil des Imports in **Kitodo.Presentation**
- Basis für tiefere Erschließung
+ für OCR für Handschriften in Vorbereitung!
- Anschluss an DH-Forschungswerkzeuge wie z.B. [Voyant Tools](https://voyant-tools.org)
- Sneak Preview: [kaskade.dwds.de/dstar/boersenblatt](http://kaskade.dwds.de/dstar/boersenblatt)

---

class: part-slide

# Vielen Dank für Ihre Aufmerksamkeit!

<center>
<a href="https://wrznr.github.io/mets-mods2tei/presentations/slub_april_2020/slub_aplril_2020.html">wrznr.github.io/mets-mods2tei</a>
</center>
Binary file added docs/presentations/slub_april_2020/img/bg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading