Bibelvisualisierung — Teil 1: Beschaffung und Vorbereitung der Daten

Verse der einzelnen Bibelbücher herausfinden

Um letzt­lich auch einen pro­zen­tua­len Anteil der in der Hei­li­gen Mes­se gele­se­nen Bibel­tex­te berech­nen zu kön­nen, brauch­te ich als ers­tes eine Über­sicht, wie viel Ver­se die jewei­li­gen Kapi­tel in den jewei­li­gen Büchern der Bibel haben.
Fün­dig bin ich nach eini­ger Suche beim ame­ri­ka­ni­schen Jesui­ten Felix Just geworden:

Die­se Daten habe ich zunächst in ein ein­heit­li­ches Tabel­len­for­mat gebracht und mit den deut­schen Bibel­buch­ab­kür­zun­gen ergänzt. Die Daten fin­det ihr in fol­gen­der Open­Do­cu­ment-Tabel­le, bzw. in der Tab-getrenn­ten CSV-Datei (jedoch ohne die Spal­ten­ti­tel; die ers­ten Spal­ten sind Buch-ID, eng­li­scher Buch-Name, Buch-Name in deut­scher Kurz­form, Kapi­tel­an­zahl des Buches und Gesamt-Ver­s­an­zahl des Buches).

Das fol­gen­de Awk-Script erstellt dann dar­aus eine CSV-Tabel­le, die spä­ter wei­ter­ver­wen­det wird. Sie beinhal­tet ein­fach jeden ein­zel­nen Vers der Bibel in einer Zei­le – ver­bun­den mit dem jewei­li­gen Buch und dem ent­spre­chen­den Kapitel.

# Jonathan Berschauer, GNU GPL v3
# Tabelle mit allen Bibelversen erstellen
# Am Begin ausführen
BEGIN {
    FS = "\t"
    OFS = "\t"
    
    print "Buch-kurz\tKapitel\tVers"
}

# Durchgang für jede Zeile
{
    id=$1
    buch=$2
    kurz=$3
    kapitelanzahl=$4
    Versanzahl=$5
   
    #print "ID " id " Buch " buch " Kurz " kurz
  
    for(spalte=6; spalte<=155; spalte++) #alle Spalten der Zeile durchgehen, bei der 5. Spalte anfangen
    {
        if ($spalte != "") { #nur durchgehen, solange noch etwas in der Spalte steht
            versanzahl=$spalte
            kapitel=spalte-5
            #print "Buch " buch ", Kapitel " kapitel " hat " versanzahl " Verse."
            
            for(i=1;i<=versanzahl;i++) { #Einzelverse pro Zeile ausgeben
                print kurz "\t" kapitel "\t" i
            }
        }
    }  
    
}

# Am Ende ausführen
END {
}
    

Auf­ge­ru­fen wird das Script in der Shell mit fol­gen­der Syn­tax:
awk -f Programmdatei Datei
Hier also bei­spiels­wei­se:
awk -f Bibelverse.awk Bibel-Statistik-Anzahl-Verse-Kapitel.csv > Bibel-Versliste.csv

Her­aus kommt die Aus­gangs­da­tei: Bibel-Versliste.csv (Tab-getrennt)

Verse aus dem liturgischen Online-Kalender extrahieren

Nach­dem wir nun also zunächst die Ver­s­an­zahl der ein­zel­nen Kapi­tel der Bücher in der Bibel haben, brau­chen wir die die Text­stel­len, die in der Lit­ur­gie vor­ge­le­sen wer­den. Als ers­tes beschäf­ti­gen wir uns mit den Tex­ten in der Hei­li­gen Mes­se. In der römi­schen Lit­ur­gie gibt es hier­zu unter­schied­li­che Lese­jah­re. An Sonn­ta­gen gibt es die drei Lese­jah­re A, B und C. An Wochen­ta­gen gibt es nur zwei Lese­jah­re – I und II.
Eine sehr gro­ße Hil­fe sind hier­bei die bereits vom Sale­sia­ner Hat­to von Hatz­feld zusam­men­ge­tra­ge­nen Daten unter http://www.eucharistiefeier.de/lk/ .
Rich­tig toll ist, dass Hat­to von Hatz­feld sogar eine API pro­gram­miert hat, um die ver­schie­de­nen Daten abfra­gen zu kön­nen.
Unter fol­gen­dem Link lässt sich so das kom­plet­te lit­ur­gi­sche Jahr 2019 im CSV-For­mat abfra­gen:
www.eucharistiefeier.de/lk/api.php?format=csv&jahr=2019&info=wdtrgflux&dup=e&bahn=n
Her­aus kom­men Aus­gangs­da­tei­en wie: liturkal_wdtrgflu2019.csv

Ich habe – um alle mög­li­che Lesungs­kon­stel­la­tio­nen abzu­de­cken – ein­fach mal die Jah­re 2016–2021 expor­tiert und als CSV gespei­chert. In der Bash las­sen sich die Daten nun alls CSV-Datei­en ein­fach zusam­men­ko­pie­ren:
cat *.csv > Liturgischer-Kalender-2016-2021.csv

Aus­gangs­da­tei ist somit: Liturgischer-Kalender-2016–2021.csv

Daten zur Leseordnung ergänzen

Mit Libre­Of­fice oder einem ande­ren Pro­gramm müs­sen jetzt nur noch die Titel­zei­len mit „Index …“ her­aus­ge­löscht wer­den.
Für die Daten zum Lese­jahr habe ich noch die Spal­ten „Lese­jahrS­onn­ta­ge“ und „Lese­jahr­Wo­chen­ta­ge“ hin­ten in der Tabel­le ange­fügt.
Dort die Lese­jah­re gemäß Lese­ord­nung (immer Beginn mit dem 1. Advents­sonn­tag, vgl. https://de.wikipedia.org/wiki/Leseordnung) ange­ben, also bspw. „A“ „2“.
Am ein­fachs­ten geht das viel­leicht mit Libre­Of­fice. Ggf. die Daten nach unten kopie­ren mit der Tas­ten­kom­bi­na­ti­on „Strg+D“.

Aus­gangs­da­tei ist eine über­ar­bei­te­te Liturgischer-Kalender-2016–2021.csv

Datenkorrektur mit regulären Ausdrücken

Lei­der pas­sen die jetzt vor­han­de­nen Daten noch nicht für die Wei­ter­ver­ar­bei­tung. Manch­mal gibt es Tipp­feh­ler, zu viel Leer­zei­chen oder anders. Das Wei­ter-Ver­ar­bei­tungs-Pro­gramm braucht zur das For­mat „Buch Kapi­tel­num­mer, Vers-Vers.Vers-Vers“ (also zwi­schen Kapi­tel und Vers ein Leer­zei­chen, was nicht unbe­dingt man­chen Zitier­richt­li­ni­en ent­spricht).
Jetzt könn­te man meh­re­re Tau­send Ein­trä­ge durch­ge­hen und die ent­spre­chen­den Feh­ler kor­ri­gie­ren. Etwas ein­fach gestal­tet dies sich mit einem Text­edi­tor (ich ver­wen­de den bei Linux/KDE mit­ge­lie­fer­ten Edi­tor „Kate“), der regu­lä­re Aus­drü­cke (engl.: regu­lar expres­si­ons, oder kurz: Reg­Exp oder Regex) ver­ar­bei­ten kann.
Wenn ich also ein Kom­ma zwi­schen zwei Zah­len ohne ein Leer­zei­chen suchen möch­te und dort immer ein Leer­zei­chen nach dem Kom­ma ein­fü­gen möch­te, wäre mein Such­mus­ter (immer alles ohne Anfüh­rungs­zei­chen): (\d),(\d) . Das Ersetz­mus­ter wäre in die­sem Fall: \1, \2 . Die Klam­mern im Such­aus­druck defi­nie­ren die Unter-Such­mus­ter, wel­che dann beim Erset­zen ange­spro­chen wer­den kön­nen. Das ers­te Ergeb­nis wird so bspw. mit \1 und das zwei­te mit \2 ange­spro­chen.

Fol­gend fin­det ihr ein paar Beispiele:

  1. “ u. “ (=und) durch „.“ erset­zen:
    Suchen: „(\d) u. (\d)
    Erset­zen: „\1.\2
    Suchen: „(\d)u. (\d)
    Erset­zen: „\1.\2
    Suchen: „(\d) u (\d)
    Erset­zen: „\1.\2
    Suchen: “ u.(\d)
    Erset­zen: „.\1
  2. Die feh­len­den Leer­zei­chen nach meh­re­ren Psal­men hinz­fü­gen (bspw. bei „Ps 126 (125),1–2b.2c‑3.4–5.6 (R: 5)“):
    Suchen: “),(\d)-(\d)
    Erset­zen: “), \1-\2
  3. Die feh­len­den Leer­zei­chen nach Kapi­tel­an­ga­ben ergän­zen (bspw. bei „1 Kor 1,18–25“; „Joh 18,1–19,42“; „Joh 20, 19–23 oder Joh 15,26–27; 16,12–15“):
    Suchen: „(\d),(\d)-(\d)
    Erset­zen: „\1, \2-\3

Aus­gangs­da­tei ist eine über­ar­bei­te­te Liturgischer-Kalender-2016–2021.csv (fol­gend ent­hal­ten in der ZIP zum Python-Pro­gramm).
Die­se Datei brau­chen wir nun für den nächs­ten Schritt, die Ver­ar­bei­tung in einem Pythonprogramm.

Wei­te­re Tei­le der Rei­he zur sta­tis­ti­schen Bibel­vi­sua­li­sie­rung:
Teil 0: Über­sicht
Teil 1: Beschaf­fung der Daten
Teil 2: Daten­auf­be­rei­tung mit einem Python-Pro­gramm (lit­ur­gi­scher Kalen­der / Hei­li­ge Mes­se)
Teil 3: Beschaf­fung der Daten zum Stun­den­buch und Daten­auf­be­rei­tung
Teil 4: Ver­ar­bei­tung der Daten mit der Sta­tis­tik-Pro­gram­mier­spra­che R
Teil 5: Visua­li­sie­rung der Daten mit RAW Graphs und Inkscape
Teil 6a: End­ergeb­nis­se
Teil 6b: Datentabellen

11 Kommentare Schreibe einen Kommentar

  1. Pingback: Bibelvisualisierung — Teil 4: Verarbeitung der Daten in R - Jonathan Berschauer

Schreiben Sie mir gerne einen Kommentar, Korrekturen oder Ergänzungen!

Pflichtfelder sind mit * markiert.


Ihre Nachricht wird nicht veröffentlicht, sondern nur an mich geschickt.
Datenschutzhinweis: Mit dem Abschicken der Nachricht erklären Sie sich damit einverstanden, dass Ihre angegebenen Daten, wie in der Datenschutzerklärung angegeben, verarbeitet werden.