Anmelden (DTAQ) DWDS     dlexDB     CLARIN-D

Software im Deutschen Textarchiv

1  Einleitung

Für das Deutsche Textarchiv wurde eine Reihe von Software-Lösungen entwickelt, die während der Volltexterstellung oder für die linguistische Erschließung zum Einsatz kommen. Auf dieser Seite finden Sie einen Überblick über die für das DTA entwickelten bzw. angepassten Werkzeuge.

2  DTA-Produktionsdatenbank

Die DTA-Produktionsdatenbank dient sowohl der Verwaltung der bibliographischen Metadaten aller für das DTA zu digitalisierenden Bücher als auch der Dokumentation des gesamten Arbeitsablaufs von der Digitalisierung der gedruckten Vorlage bis zur elektronischen Publikation des Volltextes. Die Daten werden in einer MySQL-Datenbank verwaltet. Ein mit PHP entwickeltes graphisches Web-Frontend ermöglicht die einfache Neuaufnahme und Bearbeitung der Datensätze. Durch einen pythonbasierten Exportfilter ist die automatisierte Erstellung von TEI-Headern aus den Metadaten möglich.

Screenshot DTADB

3  Makrostrukturierung der Bilddigitalisate (ZOT)

Die digitalen Faksimiles werden im DTA für die Volltextstrukturierung vorbereitet. Für die Arbeit der Vorstrukturierung, die für die manuelle Volltexterkennung notwendig ist, steht das C++ basierte Programm ZOT (ZoningTool) zur Verfügung, das die Klassenbibliothek Qt4 nutzt.

Screenshot ZOT

ZOT ist ein einfach zu bedienendes Werkzeug, mit dessen Hilfe auf jedem Digitalisat verschiedene "Textzonen" definiert werden können. Diese Zonen dienen der Klassifizierung einzelner Textpassagen (z. B. als "Prosatext", "Kapitelüberschrift", "Seitenzahl", "Fußnote" usw.). Das Digitalisat erhält auf diese Weise Strukturinformationen, die sich bei der Datenerfassung in Form von XML-Tags widerspiegeln. Somit ist eine individuelle Layout-Analyse im Zuge der Datenerfassung nicht notwendig, und Uneinheitlichkeiten innerhalb der strukturierten Transkriptionen wird vorgebeugt.
ZOT kann auch für die Vorbereitung zur OCR-Erfassung genutzt werden. Damit können die bei einer automatischen Layout-Analyse häufig auftretenden Erkennungsfehler vermieden werden.

4  Datenbank zur OCR Nachkorrektur (DON)

Zur Nachkorrektur der per OCR erkannten Volltexte (200 Texte aus dem Zeitraum von 1780 bis 1900) diente das Programm DON (DTA-OCR-Nachkorrektur), das eine mehrstufige, parallele Korrektur der Texte ermöglicht. Diesem Programm liegen eine MySQL-Datenbank und ein in C++ mit Qt4 programmiertes Frontend zugrunde.

Die Nachkorrektur erwies sich als notwendig, weil die Ergebnisse der OCR in der Regel eine deutlich höhere Fehlerquote aufweisen als die manuell per Double-Keying erfassten Texte. Jede einzelne Seite wurde unabhängig von zwei Bearbeitern anhand der Bildvorlage korrigiert und formatiert, um so eine möglichst hohe Textqualität zu erreichen.

Screenshot DON

5  Variantenabgleich der OCR-Korrekturen (COP)

Durch die Korrektur der OCR-Ergebnisse in DON entstanden jeweils zwei Versionen desselben Textes, die gegebenenfalls voneinander abwichen. Das Programm COP (COmPare) wurde entwickelt, um Abweichungen der beiden Korrekturversionen anzuzeigen und dem Benutzer eine interaktive Korrektur zu ermöglichen. In diesem Arbeitsschritt wird das Bilddigitalisat parallel zum Volltext zur Kontrolle angezeigt. Die abweichenden Stellen werden im Text automatisch markiert. Der Nachbearbeiter hat so die Möglichkeit, sich anhand des Bildes für die korrekte Version zu entscheiden.

Screenshot COP

6  Tokenizer für komplexe Texte (DTA-Tokwrap)

Die Tokenisierung, d. h. die automatische Erkennung von Wort- und Satzgrenzen, steht am Anfang jeder weiteren computerlinguistischen Verarbeitung und Analyse. Gerade bei komplexen Texten sind verschiedene Probleme zu beachten:

  • Aufhebung von Worttrennungen über Seiten- und Zeilenumbrüche sowie Einschübe (z. B. Marginalien) hinweg und
  • Satzenden vs. Abkürzungen, die mit einem Punkt abschließen.

Im DTA kommt daher ein Tokenizer zum Einsatz, der eigens an die Bedürfnisse des Projekts angepasst wurde. Er zeichnet sich durch eine Vorverarbeitungskomponente aus, in der Fußnoten und ähnliche, für die Verarbeitung problematische Textbestandteile erkannt und gesondert analysiert werden, sowie durch eine Abkürzungserkennung, die speziell für historische Texte angepasst wurde. Damit kann die Fehlerrate bei der Erkennung von Satzenden minimiert werden.

WASTE („Word and Sentence Tokenization Estimator“) ist ein System zur Identifizierung von Wort- und Satzgrenzen im Rohtext mittels eines Hidden-Markov-Modells, operierend auf einem Datenfluss von wortähnlichen Segmenten, geliefert von einer einfachen regelbasierten Vorverarbeitungsphase. WASTE ist implementiert als Erweiterung zur moot-C++-Bibliothek (moot = „moot Object-Oriented Tagger“) für die Hidden-Markov-Modellierung. Das WASTE-Modell für die Tokenisierung des DTA wurde auf der Basis eines kontemporären Zeitungskorpus (TIGER) trainiert, ergänzt durch (derzeit) etwa 17000 manuell annotierte Tokens historischer Texte aus dem Bestand des DTA.

Für die Weiterverarbeitung erzeugt der Tokenizer ein TEI-konformes XML-Format, in dem Wörter und Satzgrenzen ausgezeichnet und mit einer eindeutigen Identifikationsnummer versehen sind. Nachfolgend ein Beispiel, in dem der vom Tokenizer erkannte Satz durch eine Bogensignatur und einen Kolumnentitel durchbrochen ist. Durch die Vergabe eindeutiger ID-Nummern sowohl für Sätze als auch für die einzelnen Wörter können derartige „Einschübe“ in den Haupttext bei der weiteren Verarbeitung ignoriert bzw. separat verarbeitet werden.

<?xml version="1.0" encoding="UTF-8"?>
<TEI>
  <s id="s140" next="s140_2" pn="pab">
    <w id="w1242" t="Als">Als</w>
    <w id="w1243" t="ich">ich</w>
    <w id="w1244" t="Apollen">Apollen</w>
    <w id="w1245" t="bath">bath</w>
    <w id="w1246" t=",">,</w>
    <w id="w1247" t="das">das</w>
    <w id="w1248" t="gräßliche">gräßliche</w>
    <lb/>
    <w id="w1249" t="Geleit">Geleit</w>
    <w id="w124a" t="der">der</w>
    <w id="w124b" t="Rachegeiſter">Rachegeiſter</w>
    <w id="w124c" t="von">von</w>
    <w id="w124d" t="der">der</w>
    <w id="w124e" t="Seite">Seite</w>
    <lb/>
    <w id="w124f" t="Mir">Mir</w>
    <w id="w1250" t="abzunehmen">abzunehmen</w>
    <w id="w1251" t=",">,</w>
    <w id="w1252" t="ſchien">ſchien</w>
    <w id="w1253" t="er">er</w>
    <w id="w1254" t="Hülf’">Hülf’</w>
    <w id="w1255" t="und">und</w>
    <w id="w1256" t="Rettung">Rettung</w>
    <lb/>
    <w id="w1257" t="Im">Im</w>
    <w id="w1258" t="Tempel">Tempel</w>
    <w id="w1259" t="ſeiner">ſeiner</w>
    <w id="w125a" t="vielgeliebten">vielgeliebten</w>
    <w id="w125b" t="Schweſter">Schweſter</w>
    <w id="w125c" t=",">,</w>
    <lb/>
    <w id="w125d" t="Die">Die</w>
    <w id="w125e" t="über">über</w>
    <w id="w125f" t="Tauris">Tauris</w>
    <w id="w1260" t="herrſcht">herrſcht</w>
    <w id="w1261" t=",">,</w>
    <w id="w1262" t="mit">mit</w>
    <w id="w1263" t="hoffnungsreichen">hoffnungsreichen</w>
    <lb/>
    <w id="w1264" t="Gewiſſen">Gewiſſen</w>
    <w id="w1265" t="Götterworten">Götterworten</w>
    <w id="w1266" t="zu">zu</w>
    <w id="w1267" t="verſprechen">verſprechen</w>
    <w id="w1268" t=";">;</w>
    <lb/>
    <w id="w1269" t="Und">Und</w>
    <w id="w126a" t="nun">nun</w>
    <w id="w126b" t="erfüllet">erfüllet</w>
    <w id="w126c" t="ſich’s">ſich’s</w>
    <w id="w126d" t=",">,</w>
    <w id="w126e" t="daß">daß</w>
    <w id="w126f" t="alle">alle</w>
    <w id="w1270" t="Noth">Noth</w>
  </s>
  <lb/>
  <fw type="sig" place="bottom">C 2</fw>
  <lb/>
  <pb n="36" facs="#f0045"/>
  <fw type="header" place="top">
    <hi rendition="#g">Iphigenie auf Tauris</hi>
  </fw>
  <lb/>
  <s id="s140_2" prev="s140">
    <w id="w1271" t="Mit">Mit</w>
    <w id="w1272" t="meinem">meinem</w>
    <w id="w1273" t="Leben">Leben</w>
    <w id="w1274" t="völlig">völlig</w>
    <w id="w1275" t="enden">enden</w>
    <w id="w1276" t="ſoll">ſoll</w>
    <w id="w1277" t=".">.</w>
  </s>
  <lb/>
</TEI>

vgl. Goethe, Johann Wolfgang von: Iphigenie auf Tauris. Leipzig: Göschen, 1787 [Faksimile 44f.]

Ein weiterer Vorteil des tokenisierten XML-Formats ist, dass es durch die Vergabe eindeutiger ID-Nummern Annotationen im Standoff-Verfahren ermöglicht. Zusätzliche Informationen zum Text (beispielsweise linguistische Analysen, aber auch inhaltliche Anmerkungen o. Ä.) können in separaten Dateien an die Grunddatei „angelagert“ werden, ohne dass die Ausgangsdatei verändert wird. Es genügt lediglich ein Verweis auf die ID-Nummer des Wortes bzw. Satzes, zu dem die zusätzlichen Informationen gehören.

6.1  Literatur

7  Indizierung und linguistische Suche (DDC)

Der tokenisierte Text ist das Ausgangsformat für die Indizierung durch die Suchmaschine DDC (Dialing/DWDS-Concordancer). DDC baut für jeden Text eine maschinenlesbare Index-Datei auf, die für jedes Wort Zusatzinformationen enthält, die bei der Anfrage berücksichtigt werden können. Diese Indexdateien werden aus Eingaben in einem DDC-eigenen XML-Format hergestellt, das alle DDC zur Verfügung stehenden Informationen enthält, jedoch nicht ohne weiteres effizient abfragbar ist. Nachfolgend sehen Sie als Beispiel einen Ausschnitt aus einer solchen für DDC erzeugten XML-Datei:

<s>
 <l>Im	Im	Im	APPRART	im	1392|1948|1459|1996	472	-	|text|</l>
 <l>Durchschnitt	Durchſchnitt	Durchschnitt	NN	Durchschnitt	1471|1948|1706|1999	472	-	|text|</l>
 <l>gilt	gilt	gilt	VVFIN	gelten	1721|1956|1780|2000	472	-	|text|</l>
 <l>ein	ein	ein	ART	eine	1797|1951|1845|1985	472	-	|text|</l>
 <l>zahmer	zahmer	zahmer	ADJA	zahm	789|2001|921|2047	472	-	|text|</l>
 <l>Elephant	Elephant	Elefant	NN	Elefant	931|2005|1100|2055	472	-	|text|</l>
 <l>ohngefähr	ohngefaͤhr	ungefähr	ADJD	ungefähr	1116|2001|1300|2060	472	-	|text|</l>
 <l>zweyhundert	zweyhundert	zweihundert	CARD	zweihundert	1318|2001|1550|2060	472	-	|text|</l>
 <l>Thaler	Thaler	Taler	NN	Taler	1570|2001|1690|2060	472	-	|text|</l>
 <l>.	.	.	$.	.	1690|2001|1710|2060	472	-	|text|</l>
</s>

Die hier gezeigte Datei bietet in der ersten Spalte jeweils die Latin-1-normalisierte Form, es folgen das Wort in der gefundenen (Unicode) Form und die durch CAB ermittelte „kanonische“ Wortform, syntaktische Kategorie nach STTS, und Grundform (Lemma). Hinweise zur Fundstelle (Bildkoordinaten und Digitalisat-Nummer) sowie Informationen zum typographischen und textstrukturellen Kontext werden ebenfalls indiziert.

Nach der Indizierung kann der oben stehende Beispielsatz als Treffer zu Benutzerabfragen zurückgeliefert werden; z. B. würde eine Suche nach „Elefant“ den folgenden JSON-Inhalt für den Satz liefern:

{
  "hits_" : [
    {
      "ctx_" : [
        [],
        [
          [0,"Im","Im","Im","APPRART","im","1392|1948|1459|1996","472","-","|text|"],
          [0,"Durchschnitt","Durchſchnitt","Durchschnitt","NN","Durchschnitt","1471|1948|1706|1999","472","-","|text|"],
          [0,"gilt","gilt","gilt","VVFIN","gelten","1721|1956|1780|2000","472","-","|text|"],
          [0,"ein","ein","ein","ART","eine","1797|1951|1845|1985","472","-","|text|"],
          [0,"zahmer","zahmer","zahmer","ADJA","zahm","789|2001|921|2047","472","-","|text|"],
          [1,"Elephant","Elephant","Elefant","NN","Elefant","931|2005|1100|2055","472","-","|text|"],
          [0,"ohngefähr","ohngefa\u0364hr","ungefähr","ADJD","ungefähr","1116|2001|1300|2060","472","-","|text|"],
          [0,"zweyhundert","zweyhundert","zweihundert","CARD","zweihundert","1318|2001|1550|2060","472","-","|text|"],
          [0,"Thaler","Thaler","Taler","NN","Taler","1570|2001|1690|2060","472","-","|text|"],
          [0,".",".",".","$.",".","1690|2001|1710|2060","472","-","|text|"]
        ],
        []
      ],
      "meta_" : {
        "indices_" : ["w","u","v","p","l","coord","page","r","con","xpath","lb"],
        "author" : "Carl Peter Thunberg",
        "date_" : "1794",
        "dtadir" : "thunberg_reisen02_1794",
        "dtaid" : "17024",
        "firstBibl" : "Thunberg, Carl Peter [Übers. Christian Heinrich Groskurd]: Reisen durch einen Theil von Europa, Afrika und Asien [..] in den Jahren 1770 bis 1779. Bd. 2. Berlin: Haude und Spener, 1794.",
        "firstDate" : "1794",
        "library" : "Staatsbibliothek zu Berlin - PK",
        "shelfmark" : "",
        "textClass" : "Wissenschaft::Geographie",
        "title" : "Reise durch einen Theil von Europa, Afrika und Asien, hauptsächlich in Japan, in den Jahren 1770 bis 1779:Aus dem Schwedischen frey übersetzt von Christian Heinrich Groskurd:Zweyter Band"
        "urn" : "urn:nbn:de:kobv:b4-200905196225"
      }
    }
  ]
}

8  Linguistische Analyse historischer Texte (CAB)

Um die Suche speziell für historische Texte anzupassen, wird mit CAB („Cascaded Analysis Broker“) ein Programm zur fehlertoleranten linguistischen Analyse historischer Texte entwickelt. CAB setzt verschiedene regelbasierte und stochastische Verfahren ein, um historische Schreibvarianten auf äquivalente „kanonische“ moderne Wortformen abzubilden.

Als erstes wird mittels unicruft eine Transliterierung des Unicode-Zeichensatzes auf das Zeicheninventar des Latin-1-Zeichensatzes vorgenommen. Dabei wird beispielsweise das in Frakturschriften verwendete „lange s“ (ſ, Unicode-Zeichen U+017F) in ein „rundes s“ umgewandelt. Dadurch können bei der Suche auch die typographischen Besonderheiten historischer Drucke berücksichtigt werden.

Jedes unbekannte Wort wird anschliessend regelbasiert auf eine phonetische Repräsentation zurückgeführt, um Schreibvarianten zu identifizieren, die eine gemeinsame phonetische Form aufweisen, wie z. B. die phonetische Form [taɪl] für die Schreibweisen „Theyl“, „Thayl“, „Teyl“, usw. des modernen Wortes „Teil“.

Um Instanzen orthographischer Variation zu behandeln, die weder durch Transliterierung noch durch phonetische Äquivalenz erfasst werden können (z. B. „gläuben“ als Variante des Verbs „glauben“) wurde ein weiteres Verfahren entwickelt, um für jede historische Wortform das „ähnlichste“ moderne Wort automatisch zu ermitteln. Dabei wird ein im Rahmen des DTA entwickelter Regelsatz eingesetzt, der linguistisch plausible orthographische Variationsphänomene als gewichteter endlicher Transduktor modelliert. Durch eine best-Path-Suche in einer Kaskade solcher Transduktoren wird das „ähnlichste“ Wort im synchronen Wortschatz anschließend automatisch ermittelt. Dadurch, dass die Ergebnisse mit Hilfe der TAGH-Morphologie, die auch aktive Komposita-Bildungen akzeptiert, überprüft werden, ist eine hohe Abdeckung des synchronen Wortschatzes gewährleistet.

Nach Ermittlung aller modernen Äquivalenzkandidaten wird für jedes (historische) Eingabewort eine eindeutige „kanonische“ Schreibweise unter Bezugnahme auf den lokalen Satzkontext ausgewählt. Hierzu wird ein statistisches Optimierungsverfahren (dynamisches Hidden Markov Modell) eingesetzt, um die Wahrscheinlichkeit der gelieferten Sequenz kanonischer Wortformen zu maximieren.

Nach der Kanonikalisierung historischer Schreibvariationen durch CAB wird jedes (kanonische) Wort mit Hilfe der TAGH-Morphologie morphologisch analysiert, und mit moot syntaktisch klassifiziert (PoS-getaggt). Anhand der gelieferten morphologischen Analysen und zugewiesener syntaktischer Kategorie wird dann jedem Wort eine Grundform (Lemma) zugeordnet; damit wird gewährleistet, dass eine Suche nach dem Term „beilegen“ auch Treffer für die Formen „beygelegt“, „beyzulegen“, „beilegte“ usw. liefert.

CAB kann als HTTP-basierter Webservice in folgender Weise genutzt werden:

  • als projektinterner Webservice, der bei der Indizierung der (DTA-)Texte durch die im DTA verwendete Suchmaschine mit angesprochen wird
  • in der Verarbeitungskette von CLARIN-D (WebLicht) in Zusammenhang mit anderen CLARIN-Web-Services
  • direkt zur Normalisierung Ihrer historischen Texte: http://www.deutschestextarchiv.de/cab/

8.1  Literatur

9  DTA-oXygen-Framework (DTAoX)

Das DTA-oXygen-Framework DTAoX ist eine Anpassung des oXygen-XML-Editors (Versionen 14.2 und 15) auf das DTA-Basisformat. Es ermöglicht die direkte Visualisierung von Annotationen und Annotationslevels im Autormodus des oXygen-Editors. DTAoX ist unter der GNU Lesser General Public License (LGPL) erhältlich.

  • Version 1.1.1 (29. November 2013): Framework (.zip)

Stand dieser Seite: Mon Nov 16 10:29:07 2015