Daten aufbereiten und verwalten

Hat man aus irgendwelchen Quellen Material zusammengetragen, muss es anschliessend in ein einheitlich formatiertes Korpus überführt werden. Die Probleme, die dabei enstehen, haben wir bereits besprochen. Im einfacheren Fall verfügen wir, z.B. aus einer LexisNexis-Suche, eine oder mehrere RTF-Dateien an Text.

Wie müssen unsere Daten formatiert sein, damit sie gut als Korpus nutzbar sind? Folgende Anforderungen müssen an sie im Idealfall gestellt werden:
  1. Die Daten müssen strukturiert sein, so dass ich z.B. weiss, wo ein Text beginnt und endet, was der Titel ist oder, besonders bei Zeitungsartikeln, was das Datum ist.
  2. Ohne viel Aufwand möchte ich eine Teilauswahl aus den Texten treffen können, also z.B. nur alle Artikel angezeigt haben, die in einem bestimmten Zeitraum erschienen sind.
  3. Das Textformat muss so sein, dass es von möglichst aller Analysesoftware problemlos gelesen werden kann. Am sinnvollsten ist noch immer, Textdaten im sog. "Text", "txt" oder "Nur Text"-Format abzuspeichern. Dabei können zwar Formatierungen wie Kursiv- und Fettdruck nicht mitgespeichert werden, die sind für linguistische Analysen aber meist nicht von Bedeutung und sollten wenn schon sowieso in XML oder HTML codiert sein.
Diese Anforderungen sprechen dafür, eine Datenbank anzulegen. Das ist eigentlich keine Hexerei, das Problem ist manchmal nur, dass es verboten ist. Die Lizenzbedingungen bei LexisNexis beispielsweise erlauben zwar das Abspeichern von Artikeln auf dem eigenen Computer für private Zwecke für einen bestimmten Zeitraum, jedoch nicht das Einspeisen in eine Datenbank.

Deshalb wird im Folgenden neben der Datenbanklösung noch eine "simpel-und-trotzdem-brauchbar"-Lösung vorgestellt.

Professionell: Die Datenbank

Was ist eine Datenbank?

Eine Datenbank ist im einfachsten Fall nichts anderes als eine gut strukturierte Textdatei und ein Programm, dass diese gut strukturierte Textdatei verwaltet. Die Idee ist, dass einmal festgelegt wird, was die gemeinsame Struktur aller darin enthaltenen Daten ist. Man spricht hier von "Feldern", in die die Daten gefüllt werden.

Gehen wir von einer Datenbank aus, die Zeitungsartikel verwaltet. Die Struktur sieht dann z.B. folgende Felder vor, die pro Artikel gefüllt werden sollen:

Titel, Untertitel, Datum, Autor, Lead-Text, Text, Zeitung, Rubrik, Seite

Ein Datensatz enthält jetzt einen Artikel, der in diese Felder aufgeteilt ist. Man kann sich das tabellenartig vorstellen:


Artikel 1
Artikel 2
Artikel 3
Titel
Korpuslinguist verschollen!
Babylonische Verhältnisse!
Nobelpreis für Linguistik
Untertitel
Im Korpus verschwunden?
...
...
Datum
1. April 2006
...
...
Autor
Noam Chomsky ...
...
Lead-Text
Letzten Sonntag ist ein
Korpuslinguist der Uni
spurlos verschwunden.
...
...
Text
Die Polizei ist ratlos. Man
vermutet, er könnte vom
Korpus seines Schreibtischs
aufgefressen worden sein...
...
...
Zeitung
Blick
...
...
Rubrik
Unfälle & Verbrechen
...
...
Seite
1
...
...

Sind die Textdaten so strukturiert, ist es ein Leichtes, die Daten nach bestimmten Kriterien durchsuchen zu lassen. Z.B. kann man eine Auwahl aller Artikel treffen, die vor dem 1. April 2005 erschienen sind und im Titel das Wort "Linguistik" enthalten.

Welche Datenbanken gibt es?

Die Arme-Leute-Datenbank ist eine Tabellenkalkulation wie z.B. Microsoft Excel oder die OpenSource-Variante "Calc" von Openoffice.org. Da kann man sich eine Art Datenbank in Tabellenform erstellen.

Richtige Datenbanken sind z.B. "Access" von Microsoft als Teil des Office-Pakets (Windows), "Base" von Openoffice.org (Windows, Linux, Mac OS X) oder – besonders für AnfängerInnen zu empfehlen – Filemaker (Windows, Mac). Erstere und letztere ist kostenpflichtig; Filemaker kann aber z.B. über die Universität Zürich günstig bezogen werden. Es gibt hier ein eigenes Lernmodul, das in die Arbeit mit Filemaker einführt.

Besonders nett, dafür nur für erfahrene BenutzerInnen, ist eine Opensource-Lösung wie MySQL, eine Datenbank, die auf einem Webserver läuft und z.B. über PHP mit jedem Webbrowser verwaltet werden können. Man muss jedoch einen Webserver entweder selber betreiben (auch nur lokal), oder einen mitverwenden können.

Eine Datenbank anlegen

An dieser Stelle kann nur kurz auf das Anlegen einer Datenbank eingegangen werden. Wie das im Detail funktioniert, ist je nach verwendeter Software unterschiedlich und dort jeweils dokumentiert. Wichtig ist aber grundsätzlich Folgendes: Man sollte sich das Design der Datenbank (also: welche Felder gibt es? Welche Informationen sollen darin gespeichert sein?) vorher gut überlegen, und zwar im Hinblick drauf, wonach man einmal suchen möchte, wenn die Datenbank gefüllt ist. Ein Datenbankfeld muss immer den gleichen Typ an Daten enthalten und es muss klar sein, was man darin alles erwartet. Es sollten nicht zuviele unterschiedliche Informationen in einem Feld vorhanden sein: Ein Feld in einer Zeitungsdatenbank, das einfach "Kopfdaten" heisst, ist weniger sinnvoll als mehrere Felder wie "Datum", "Autor", "Rubrik" etc.

Import von Textdaten in eine Datenbank

Das ist der schwierige Teil des "Datenbänken", zumal wir ja in der Korpuslinguistik eine grosse Menge an Daten möglichst rasch und automatisch in die Datenbank importieren wollen.

Alle Datenbanken lesen Textdateien in Listenform ein. Das sieht dann z.B. so aus:

"Korpuslinguist verschollen!", "Im Korpus verschwunden?", "1. April 2006", "Noam Chomsky", "Letzten Sonntag ist ein Korpuslinguist der Uni spurlos verschwunden.", "Die Polizei ist ratlos. Man vermutet, er könnte vom Korpus seines Schreibtischs aufgefressen worden sein", "Blick", "Unfälle & Verbrechen", "1"
"Titel des nächsten Artikels", , "2. April 2006", ...

Ein Datensatz besteht aus einer Zeile (hier jetzt in mehrere Zeilen umgebrochen, am Ende der Zeile jedoch gibt es einen Absatz) und die einzelnen "Felder" sind durch Komma voneinander abgetrennt. Zusätzlich ist Text in Anführungsstriche gesetzt.

Eine so formatierte Textdatei kann eine Datenbank immer lesen. Sie liest dann einfach ein Feld nach dem anderen und ein Datensatz nach dem anderen ein. Wichtig ist dabei, dass Felder, die leer sind, trotzdem in der Zeile vorhanden sind, allerdings einfach ohne Inhalt, wie das im oberen Beispiel beim zweiten Datensatz sichtbar ist, wo es keinen Untertitel gibt: Dort sind einfach zwei Kommata hintereinander gesetzt.

Die Kunst ist jetzt, die Textdaten so zu formatieren. Mit sog. "Regular Expressions" vertraute BenutzerInnen können in einem Texteditor, der dies unterstützt, das relativ schnell so formatieren. Ansonsten kann man sich ev. auch mit der normalen Suchen-und-Ersetzen-Funktion eines Texteditors und zusätzlicher Handarbeit behelfen oder aber man ist schneller, den Text aus der Textdatei mit "Kopieren-und-Einsetzen" von Hand in die Datenbank einzutragen.

In einem späteren Kapitel wird erklärt, wie mit Regular Expressions eine kommaseparierte Datei erstellt werden kann.

Eleganter ist es natürlich, sich ein kleines Perl-Script zu basteln, das Textdateien automatisch analysiert und direkt in eine Datenbank einträgt.

Die "simpel-und-trotzdem-brauchbar"-Lösung

Die Datenbanklösung ist zwar elegant, aber oft nicht gangbar oder gar nicht nötig. Oft reicht es, sein Korpus in einigen Textdateien unterzubringen.

Nehmen wir an, wir möchten ein Korpus an Feuilleton-Artikeln aus der NZZ im Zeitraum von 2000 bis 2003 zusammenstellen, weil uns die Verwendung des Wortes "Frieden" darin interessiert.

Es ist dann wahrscheinlich sinnvoll, Textdateien zu haben, die jeweils einen Monat Feuilleton-Artikel enthalten. Wir müssen nun nur dafür sorgen, dass in den einzelnen Dateien gleichartige Informationen liegen, also jeweils die kompletten Artikel enthalten sind und sie immer durch die gleiche Art voneinander getrennt sind (z.B. 5 Zeilenschaltungen). Wenn wir uns entschliessen, bestimmte Informationen zu entfernen, z.B. irgendwelche Fusszeilen, die LexisNexis automatisch einfügt, muss diese Information überall entfernt sein. Ansonsten wird es heikel, die Dateien miteinander zu vergleichen.

Wenn das Korpus analysiert werden soll, können wir für gewisse Analysen auch mal alle Einzeldateien zu grösseren Dateien (z.B. alle Monate eines Jahres) miteinander vereinigen. (Wer unter Mac OS X, Linux oder einem anderen Unixsystem arbeitet, hat ein paar wunderbare Werkzeuge zur Verfügung, die das einfach erledigen; siehe hier.)

Wenn die Quellen des Korpus vielfältiger sind, also z.B. Word-Dateien, HTML-Seiten, E-Mails etc. enthält, sollte man sich in erster Linie mal darum kümmern, diese Formate in normale Text-Dateien umzuwandeln. In einem späteren Schritt können dann ev. einzelne, oder ggf. auch alle, Dateien miteinander vereinigt werden.