> Soeben fand ich das Verzeichnis, in dem die herunterladbaren
> Textcorpora der Uni Leipzig stehen:
> http://corpora.informatik.uni-leipzig.de/resources/flatfiles
> 
> Die genaue Bedeutung scheint unklar. Auf dieser Seite geht zumindest
> die Bedeutung des Inhalts von de05_3M.zip hervor:
> http://www.domain-scan.net/index.php?option=com_content&view=article&id=19
> 
> Es handelt sich um einen deutschsprachigen Textcorpus aus 3 Millionen
> Sätzen, die dem Internet und Zeitungsartikeln entstammen.
> Ähnliche Dateinamen des Ordners klingen, als wenn auch kleinere Corpora
> verfügbar sind.
> 
> Es wäre gut, wenn es einen Textkörper gäbe, den alle einheitlich
> verwenden könnten, um herauszufinden, ob unterschiedliche selbst
> geschriebene Auswerteprogramme für bestimmte Zwischenschritte
> korrekte Ergebnisse liefern.

Ja. Das wäre gut. 

Ich brauche für mein Programm eine Datei, die in jeder Zeile ein Wort
hat, gefolgt von deren Häufigkeit. Das Wort soll kleingeschrieben sein
und mit der (der inzwischen nicht mehr ganz so) neuen Rechtschreibung
übereinstimmen.

Ich will mal EINEN Weg bis dahin schildern, der mir so spontan einfällt:

1. Umwandeln von Latin-1 in Unicode und in Kleinbuchstaben:

cat words.txt | recode l1.. | tr '[:upper:]' '[:lower:]' > w.txt

2. Jede Zeile enthält 3 Daten, die mit einem Tabulator-Zeichen getrennt
sind.
Erst kommt der Rang des Ausdrucks, dann der Ausdruck selber, dann die
Häufigkeit. Der Ausdruck kann ein Wort sein, das nicht-deutsche
Buchstaben
enthält (é, Å usw.) und er kann aus mehr als einem Wort bestehen (11.
September). Wir interessieren uns ausschließlich für Ausdrücke, die aus
einem
einzelnen Wort aus deutschen Buchstaben bestehen und fischen sie wie
folgt
heraus:

gawk 'BEGIN {FS = "\t"}; $2 ~ /^[abcdefghijklmnopqrstuvwxyzäöüß]*$/
{print $2 "\t" $3}' w.txt > w1.txt

3. Die Liste enthält jetzt viele Wörter zweimal, weil sie früher sowohl
kleingeschrieben als auch großgeschrieben vorkamen. Das macht für den
Algorithmus zwar nichts aus (macht nur langsamer), aber Ordnung muss
sein,
also:

sort w1.txt > w2.txt

4. Jetzt stehen die doppelten Wörter hinter einander. Sie werden jetzt
vereint:

gawk 'BEGIN {FS = "\t"; name = ""; wert = ""}; {if ($1 == name) wert +=
$2; else {print name "\t" wert; name = $1; wert = $2}' w2.txt > w3.txt

5. Schauen wir uns die Datei w3.txt mal an:

aaber   1
aabiete 1
aabrar  1
aaby    1
aabye   1
aac     2
aach    25
aachen  801
aachene 1
aachener        339
aachenerin      5
aachenern       2
aacheners       2
aachens 22
aacm    1
aacsb   2
aad     31
aadabei 1
aads    1
aaen    1
aaf     2
aafach  1
aafang  1
…
aafmüpfig       1
…
aagehn  1
…
aah     14
…
abadschiew      1
abadschijew     1
…
abdrükke        1
…
eßgenuß 1
…
genuß   313
genuss  392
…
nun     41429
nunavut 7
nunez   17
nunmal  21
nunmehr 1349
nunmehrigen     6
nunn    29
nuno    10
nünthel 40
nuntiatur       8
nuntius 27
nuon    8

So geht das bei aller Liebe nicht! Es mag zwar sein, dass Leute so etwas
geschrieben haben. Sie werden das aber nicht in der Zukunft mit meiner
Tastatur tun.

Die Datei w3.txt enthält etwa 1 Million Zeilen, darunter also jede Menge
Rechtschreibfehler.

Entfernen wir (zum Beispiel) daher alle Wörter, die seltener als 5-mal
vorkommen. Eine Menge Rechtschreibfehler verschwinden dabei:7

gawk 'BEGIN {FS = "\t"} {if ($2 >= 5) print $1 "\t" $2}' w3.txt > w4.txt

Oder alle, die seltener als 100-mal vorkommen > w4a.txt

6. Die Datei w4.txt ist fürwahr auch keine Schönheit. Sie enthält 211011
Zeilen. Hierüber muss offensichtlich noch die Rechtschreibprüfung
laufen. Das übersteigt meine Fähigkeit und hier gebe ich auf. w4a
enthält 25765 Zeilen. Die könnte man in einem Editor laden und manuell
ausmisten und rechtschreibprüfen, dann sortieren und nochmal vereinen
wie oben beschrieben. Ich persönlich werde das nicht tun, allein wegen
der Kritik, die ich mir nachher anhören muss — von Leuten, die gar keine
Arbeit leisten wollen, sondern nur kritisieren.

====

Es geht einfach nicht.

Vergiss Leipzig. Oder nicht?

Ulf


Antwort per Email an